You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by kg...@apache.org on 2019/12/12 12:58:26 UTC

[hive] 01/02: HIVE-22594: Reorder metastore thrift structures (John Sherman via Jesus Camacho Rodriguez)

This is an automated email from the ASF dual-hosted git repository.

kgyrtkirk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git

commit 17b2623a5a79e12222f7339dfc7ff2170daa7a9a
Author: John Sherman <jf...@cloudera.com>
AuthorDate: Thu Dec 12 12:45:45 2019 +0000

    HIVE-22594: Reorder metastore thrift structures (John Sherman via Jesus Camacho Rodriguez)
    
    Signed-off-by: Zoltan Haindrich <ki...@rxd.hu>
---
 .../hive/metastore/api/ColumnStatistics.java       |   36 +-
 .../hadoop/hive/metastore/api/Partition.java       |   83 +-
 .../metastore/api/PartitionSpecWithSharedSD.java   |   36 +-
 .../hive/metastore/api/PartitionWithoutSD.java     |   76 +-
 .../metastore/api/ScheduledQueryPollResponse.java  |    7 +-
 .../apache/hadoop/hive/metastore/api/Table.java    |  151 +-
 .../src/gen/thrift/gen-php/metastore/Types.php     | 4518 ++++++++++----------
 .../src/gen/thrift/gen-py/hive_metastore/ttypes.py | 2654 ++++++------
 .../src/gen/thrift/gen-rb/hive_metastore_types.rb  |  330 +-
 .../src/main/thrift/hive_metastore.thrift          |  130 +-
 10 files changed, 4015 insertions(+), 4006 deletions(-)

diff --git a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/ColumnStatistics.java b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/ColumnStatistics.java
index a280124..51825a9 100644
--- a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/ColumnStatistics.java
+++ b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/ColumnStatistics.java
@@ -613,14 +613,14 @@ import org.slf4j.LoggerFactory;
           case 2: // STATS_OBJ
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
-                org.apache.thrift.protocol.TList _list292 = iprot.readListBegin();
-                struct.statsObj = new ArrayList<ColumnStatisticsObj>(_list292.size);
-                ColumnStatisticsObj _elem293;
-                for (int _i294 = 0; _i294 < _list292.size; ++_i294)
+                org.apache.thrift.protocol.TList _list214 = iprot.readListBegin();
+                struct.statsObj = new ArrayList<ColumnStatisticsObj>(_list214.size);
+                ColumnStatisticsObj _elem215;
+                for (int _i216 = 0; _i216 < _list214.size; ++_i216)
                 {
-                  _elem293 = new ColumnStatisticsObj();
-                  _elem293.read(iprot);
-                  struct.statsObj.add(_elem293);
+                  _elem215 = new ColumnStatisticsObj();
+                  _elem215.read(iprot);
+                  struct.statsObj.add(_elem215);
                 }
                 iprot.readListEnd();
               }
@@ -667,9 +667,9 @@ import org.slf4j.LoggerFactory;
         oprot.writeFieldBegin(STATS_OBJ_FIELD_DESC);
         {
           oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.statsObj.size()));
-          for (ColumnStatisticsObj _iter295 : struct.statsObj)
+          for (ColumnStatisticsObj _iter217 : struct.statsObj)
           {
-            _iter295.write(oprot);
+            _iter217.write(oprot);
           }
           oprot.writeListEnd();
         }
@@ -707,9 +707,9 @@ import org.slf4j.LoggerFactory;
       struct.statsDesc.write(oprot);
       {
         oprot.writeI32(struct.statsObj.size());
-        for (ColumnStatisticsObj _iter296 : struct.statsObj)
+        for (ColumnStatisticsObj _iter218 : struct.statsObj)
         {
-          _iter296.write(oprot);
+          _iter218.write(oprot);
         }
       }
       BitSet optionals = new BitSet();
@@ -735,14 +735,14 @@ import org.slf4j.LoggerFactory;
       struct.statsDesc.read(iprot);
       struct.setStatsDescIsSet(true);
       {
-        org.apache.thrift.protocol.TList _list297 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-        struct.statsObj = new ArrayList<ColumnStatisticsObj>(_list297.size);
-        ColumnStatisticsObj _elem298;
-        for (int _i299 = 0; _i299 < _list297.size; ++_i299)
+        org.apache.thrift.protocol.TList _list219 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+        struct.statsObj = new ArrayList<ColumnStatisticsObj>(_list219.size);
+        ColumnStatisticsObj _elem220;
+        for (int _i221 = 0; _i221 < _list219.size; ++_i221)
         {
-          _elem298 = new ColumnStatisticsObj();
-          _elem298.read(iprot);
-          struct.statsObj.add(_elem298);
+          _elem220 = new ColumnStatisticsObj();
+          _elem220.read(iprot);
+          struct.statsObj.add(_elem220);
         }
       }
       struct.setStatsObjIsSet(true);
diff --git a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Partition.java b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Partition.java
index e4e63b6..605b4c5 100644
--- a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Partition.java
+++ b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Partition.java
@@ -197,7 +197,7 @@ import org.slf4j.LoggerFactory;
     tmpMap.put(_Fields.IS_STATS_COMPLIANT, new org.apache.thrift.meta_data.FieldMetaData("isStatsCompliant", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
     tmpMap.put(_Fields.COL_STATS, new org.apache.thrift.meta_data.FieldMetaData("colStats", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRUCT        , "ColumnStatistics")));
+        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, ColumnStatistics.class)));
     metaDataMap = Collections.unmodifiableMap(tmpMap);
     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(Partition.class, metaDataMap);
   }
@@ -261,7 +261,7 @@ import org.slf4j.LoggerFactory;
     this.writeId = other.writeId;
     this.isStatsCompliant = other.isStatsCompliant;
     if (other.isSetColStats()) {
-      this.colStats = other.colStats;
+      this.colStats = new ColumnStatistics(other.colStats);
     }
   }
 
@@ -1206,6 +1206,9 @@ import org.slf4j.LoggerFactory;
     if (privileges != null) {
       privileges.validate();
     }
+    if (colStats != null) {
+      colStats.validate();
+    }
   }
 
   private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
@@ -1247,13 +1250,13 @@ import org.slf4j.LoggerFactory;
           case 1: // VALUES
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
-                org.apache.thrift.protocol.TList _list248 = iprot.readListBegin();
-                struct.values = new ArrayList<String>(_list248.size);
-                String _elem249;
-                for (int _i250 = 0; _i250 < _list248.size; ++_i250)
+                org.apache.thrift.protocol.TList _list256 = iprot.readListBegin();
+                struct.values = new ArrayList<String>(_list256.size);
+                String _elem257;
+                for (int _i258 = 0; _i258 < _list256.size; ++_i258)
                 {
-                  _elem249 = iprot.readString();
-                  struct.values.add(_elem249);
+                  _elem257 = iprot.readString();
+                  struct.values.add(_elem257);
                 }
                 iprot.readListEnd();
               }
@@ -1306,15 +1309,15 @@ import org.slf4j.LoggerFactory;
           case 7: // PARAMETERS
             if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
               {
-                org.apache.thrift.protocol.TMap _map251 = iprot.readMapBegin();
-                struct.parameters = new HashMap<String,String>(2*_map251.size);
-                String _key252;
-                String _val253;
-                for (int _i254 = 0; _i254 < _map251.size; ++_i254)
+                org.apache.thrift.protocol.TMap _map259 = iprot.readMapBegin();
+                struct.parameters = new HashMap<String,String>(2*_map259.size);
+                String _key260;
+                String _val261;
+                for (int _i262 = 0; _i262 < _map259.size; ++_i262)
                 {
-                  _key252 = iprot.readString();
-                  _val253 = iprot.readString();
-                  struct.parameters.put(_key252, _val253);
+                  _key260 = iprot.readString();
+                  _val261 = iprot.readString();
+                  struct.parameters.put(_key260, _val261);
                 }
                 iprot.readMapEnd();
               }
@@ -1382,9 +1385,9 @@ import org.slf4j.LoggerFactory;
         oprot.writeFieldBegin(VALUES_FIELD_DESC);
         {
           oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.values.size()));
-          for (String _iter255 : struct.values)
+          for (String _iter263 : struct.values)
           {
-            oprot.writeString(_iter255);
+            oprot.writeString(_iter263);
           }
           oprot.writeListEnd();
         }
@@ -1415,10 +1418,10 @@ import org.slf4j.LoggerFactory;
         oprot.writeFieldBegin(PARAMETERS_FIELD_DESC);
         {
           oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, struct.parameters.size()));
-          for (Map.Entry<String, String> _iter256 : struct.parameters.entrySet())
+          for (Map.Entry<String, String> _iter264 : struct.parameters.entrySet())
           {
-            oprot.writeString(_iter256.getKey());
-            oprot.writeString(_iter256.getValue());
+            oprot.writeString(_iter264.getKey());
+            oprot.writeString(_iter264.getValue());
           }
           oprot.writeMapEnd();
         }
@@ -1513,9 +1516,9 @@ import org.slf4j.LoggerFactory;
       if (struct.isSetValues()) {
         {
           oprot.writeI32(struct.values.size());
-          for (String _iter257 : struct.values)
+          for (String _iter265 : struct.values)
           {
-            oprot.writeString(_iter257);
+            oprot.writeString(_iter265);
           }
         }
       }
@@ -1537,10 +1540,10 @@ import org.slf4j.LoggerFactory;
       if (struct.isSetParameters()) {
         {
           oprot.writeI32(struct.parameters.size());
-          for (Map.Entry<String, String> _iter258 : struct.parameters.entrySet())
+          for (Map.Entry<String, String> _iter266 : struct.parameters.entrySet())
           {
-            oprot.writeString(_iter258.getKey());
-            oprot.writeString(_iter258.getValue());
+            oprot.writeString(_iter266.getKey());
+            oprot.writeString(_iter266.getValue());
           }
         }
       }
@@ -1567,13 +1570,13 @@ import org.slf4j.LoggerFactory;
       BitSet incoming = iprot.readBitSet(12);
       if (incoming.get(0)) {
         {
-          org.apache.thrift.protocol.TList _list259 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-          struct.values = new ArrayList<String>(_list259.size);
-          String _elem260;
-          for (int _i261 = 0; _i261 < _list259.size; ++_i261)
+          org.apache.thrift.protocol.TList _list267 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
+          struct.values = new ArrayList<String>(_list267.size);
+          String _elem268;
+          for (int _i269 = 0; _i269 < _list267.size; ++_i269)
           {
-            _elem260 = iprot.readString();
-            struct.values.add(_elem260);
+            _elem268 = iprot.readString();
+            struct.values.add(_elem268);
           }
         }
         struct.setValuesIsSet(true);
@@ -1601,15 +1604,15 @@ import org.slf4j.LoggerFactory;
       }
       if (incoming.get(6)) {
         {
-          org.apache.thrift.protocol.TMap _map262 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-          struct.parameters = new HashMap<String,String>(2*_map262.size);
-          String _key263;
-          String _val264;
-          for (int _i265 = 0; _i265 < _map262.size; ++_i265)
+          org.apache.thrift.protocol.TMap _map270 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
+          struct.parameters = new HashMap<String,String>(2*_map270.size);
+          String _key271;
+          String _val272;
+          for (int _i273 = 0; _i273 < _map270.size; ++_i273)
           {
-            _key263 = iprot.readString();
-            _val264 = iprot.readString();
-            struct.parameters.put(_key263, _val264);
+            _key271 = iprot.readString();
+            _val272 = iprot.readString();
+            struct.parameters.put(_key271, _val272);
           }
         }
         struct.parameters = org.apache.hadoop.hive.metastore.utils.StringUtils.intern(struct.parameters); struct.setParametersIsSet(true);
diff --git a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PartitionSpecWithSharedSD.java b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PartitionSpecWithSharedSD.java
index e3f90bc..ecee098 100644
--- a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PartitionSpecWithSharedSD.java
+++ b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PartitionSpecWithSharedSD.java
@@ -434,14 +434,14 @@ import org.slf4j.LoggerFactory;
           case 1: // PARTITIONS
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
-                org.apache.thrift.protocol.TList _list284 = iprot.readListBegin();
-                struct.partitions = new ArrayList<PartitionWithoutSD>(_list284.size);
-                PartitionWithoutSD _elem285;
-                for (int _i286 = 0; _i286 < _list284.size; ++_i286)
+                org.apache.thrift.protocol.TList _list292 = iprot.readListBegin();
+                struct.partitions = new ArrayList<PartitionWithoutSD>(_list292.size);
+                PartitionWithoutSD _elem293;
+                for (int _i294 = 0; _i294 < _list292.size; ++_i294)
                 {
-                  _elem285 = new PartitionWithoutSD();
-                  _elem285.read(iprot);
-                  struct.partitions.add(_elem285);
+                  _elem293 = new PartitionWithoutSD();
+                  _elem293.read(iprot);
+                  struct.partitions.add(_elem293);
                 }
                 iprot.readListEnd();
               }
@@ -476,9 +476,9 @@ import org.slf4j.LoggerFactory;
         oprot.writeFieldBegin(PARTITIONS_FIELD_DESC);
         {
           oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.partitions.size()));
-          for (PartitionWithoutSD _iter287 : struct.partitions)
+          for (PartitionWithoutSD _iter295 : struct.partitions)
           {
-            _iter287.write(oprot);
+            _iter295.write(oprot);
           }
           oprot.writeListEnd();
         }
@@ -517,9 +517,9 @@ import org.slf4j.LoggerFactory;
       if (struct.isSetPartitions()) {
         {
           oprot.writeI32(struct.partitions.size());
-          for (PartitionWithoutSD _iter288 : struct.partitions)
+          for (PartitionWithoutSD _iter296 : struct.partitions)
           {
-            _iter288.write(oprot);
+            _iter296.write(oprot);
           }
         }
       }
@@ -534,14 +534,14 @@ import org.slf4j.LoggerFactory;
       BitSet incoming = iprot.readBitSet(2);
       if (incoming.get(0)) {
         {
-          org.apache.thrift.protocol.TList _list289 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-          struct.partitions = new ArrayList<PartitionWithoutSD>(_list289.size);
-          PartitionWithoutSD _elem290;
-          for (int _i291 = 0; _i291 < _list289.size; ++_i291)
+          org.apache.thrift.protocol.TList _list297 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+          struct.partitions = new ArrayList<PartitionWithoutSD>(_list297.size);
+          PartitionWithoutSD _elem298;
+          for (int _i299 = 0; _i299 < _list297.size; ++_i299)
           {
-            _elem290 = new PartitionWithoutSD();
-            _elem290.read(iprot);
-            struct.partitions.add(_elem290);
+            _elem298 = new PartitionWithoutSD();
+            _elem298.read(iprot);
+            struct.partitions.add(_elem298);
           }
         }
         struct.setPartitionsIsSet(true);
diff --git a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PartitionWithoutSD.java b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PartitionWithoutSD.java
index 6861ec5..1672246 100644
--- a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PartitionWithoutSD.java
+++ b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/PartitionWithoutSD.java
@@ -766,13 +766,13 @@ import org.slf4j.LoggerFactory;
           case 1: // VALUES
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
-                org.apache.thrift.protocol.TList _list266 = iprot.readListBegin();
-                struct.values = new ArrayList<String>(_list266.size);
-                String _elem267;
-                for (int _i268 = 0; _i268 < _list266.size; ++_i268)
+                org.apache.thrift.protocol.TList _list274 = iprot.readListBegin();
+                struct.values = new ArrayList<String>(_list274.size);
+                String _elem275;
+                for (int _i276 = 0; _i276 < _list274.size; ++_i276)
                 {
-                  _elem267 = iprot.readString();
-                  struct.values.add(_elem267);
+                  _elem275 = iprot.readString();
+                  struct.values.add(_elem275);
                 }
                 iprot.readListEnd();
               }
@@ -808,15 +808,15 @@ import org.slf4j.LoggerFactory;
           case 5: // PARAMETERS
             if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
               {
-                org.apache.thrift.protocol.TMap _map269 = iprot.readMapBegin();
-                struct.parameters = new HashMap<String,String>(2*_map269.size);
-                String _key270;
-                String _val271;
-                for (int _i272 = 0; _i272 < _map269.size; ++_i272)
+                org.apache.thrift.protocol.TMap _map277 = iprot.readMapBegin();
+                struct.parameters = new HashMap<String,String>(2*_map277.size);
+                String _key278;
+                String _val279;
+                for (int _i280 = 0; _i280 < _map277.size; ++_i280)
                 {
-                  _key270 = iprot.readString();
-                  _val271 = iprot.readString();
-                  struct.parameters.put(_key270, _val271);
+                  _key278 = iprot.readString();
+                  _val279 = iprot.readString();
+                  struct.parameters.put(_key278, _val279);
                 }
                 iprot.readMapEnd();
               }
@@ -851,9 +851,9 @@ import org.slf4j.LoggerFactory;
         oprot.writeFieldBegin(VALUES_FIELD_DESC);
         {
           oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.values.size()));
-          for (String _iter273 : struct.values)
+          for (String _iter281 : struct.values)
           {
-            oprot.writeString(_iter273);
+            oprot.writeString(_iter281);
           }
           oprot.writeListEnd();
         }
@@ -874,10 +874,10 @@ import org.slf4j.LoggerFactory;
         oprot.writeFieldBegin(PARAMETERS_FIELD_DESC);
         {
           oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, struct.parameters.size()));
-          for (Map.Entry<String, String> _iter274 : struct.parameters.entrySet())
+          for (Map.Entry<String, String> _iter282 : struct.parameters.entrySet())
           {
-            oprot.writeString(_iter274.getKey());
-            oprot.writeString(_iter274.getValue());
+            oprot.writeString(_iter282.getKey());
+            oprot.writeString(_iter282.getValue());
           }
           oprot.writeMapEnd();
         }
@@ -930,9 +930,9 @@ import org.slf4j.LoggerFactory;
       if (struct.isSetValues()) {
         {
           oprot.writeI32(struct.values.size());
-          for (String _iter275 : struct.values)
+          for (String _iter283 : struct.values)
           {
-            oprot.writeString(_iter275);
+            oprot.writeString(_iter283);
           }
         }
       }
@@ -948,10 +948,10 @@ import org.slf4j.LoggerFactory;
       if (struct.isSetParameters()) {
         {
           oprot.writeI32(struct.parameters.size());
-          for (Map.Entry<String, String> _iter276 : struct.parameters.entrySet())
+          for (Map.Entry<String, String> _iter284 : struct.parameters.entrySet())
           {
-            oprot.writeString(_iter276.getKey());
-            oprot.writeString(_iter276.getValue());
+            oprot.writeString(_iter284.getKey());
+            oprot.writeString(_iter284.getValue());
           }
         }
       }
@@ -966,13 +966,13 @@ import org.slf4j.LoggerFactory;
       BitSet incoming = iprot.readBitSet(6);
       if (incoming.get(0)) {
         {
-          org.apache.thrift.protocol.TList _list277 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-          struct.values = new ArrayList<String>(_list277.size);
-          String _elem278;
-          for (int _i279 = 0; _i279 < _list277.size; ++_i279)
+          org.apache.thrift.protocol.TList _list285 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
+          struct.values = new ArrayList<String>(_list285.size);
+          String _elem286;
+          for (int _i287 = 0; _i287 < _list285.size; ++_i287)
           {
-            _elem278 = iprot.readString();
-            struct.values.add(_elem278);
+            _elem286 = iprot.readString();
+            struct.values.add(_elem286);
           }
         }
         struct.setValuesIsSet(true);
@@ -991,15 +991,15 @@ import org.slf4j.LoggerFactory;
       }
       if (incoming.get(4)) {
         {
-          org.apache.thrift.protocol.TMap _map280 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-          struct.parameters = new HashMap<String,String>(2*_map280.size);
-          String _key281;
-          String _val282;
-          for (int _i283 = 0; _i283 < _map280.size; ++_i283)
+          org.apache.thrift.protocol.TMap _map288 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
+          struct.parameters = new HashMap<String,String>(2*_map288.size);
+          String _key289;
+          String _val290;
+          for (int _i291 = 0; _i291 < _map288.size; ++_i291)
           {
-            _key281 = iprot.readString();
-            _val282 = iprot.readString();
-            struct.parameters.put(_key281, _val282);
+            _key289 = iprot.readString();
+            _val290 = iprot.readString();
+            struct.parameters.put(_key289, _val290);
           }
         }
         struct.setParametersIsSet(true);
diff --git a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/ScheduledQueryPollResponse.java b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/ScheduledQueryPollResponse.java
index 67e2057..73cdaac 100644
--- a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/ScheduledQueryPollResponse.java
+++ b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/ScheduledQueryPollResponse.java
@@ -129,7 +129,7 @@ import org.slf4j.LoggerFactory;
   static {
     Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
     tmpMap.put(_Fields.SCHEDULE_KEY, new org.apache.thrift.meta_data.FieldMetaData("scheduleKey", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRUCT        , "ScheduledQueryKey")));
+        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, ScheduledQueryKey.class)));
     tmpMap.put(_Fields.EXECUTION_ID, new org.apache.thrift.meta_data.FieldMetaData("executionId", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
     tmpMap.put(_Fields.QUERY, new org.apache.thrift.meta_data.FieldMetaData("query", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
@@ -149,7 +149,7 @@ import org.slf4j.LoggerFactory;
   public ScheduledQueryPollResponse(ScheduledQueryPollResponse other) {
     __isset_bitfield = other.__isset_bitfield;
     if (other.isSetScheduleKey()) {
-      this.scheduleKey = other.scheduleKey;
+      this.scheduleKey = new ScheduledQueryKey(other.scheduleKey);
     }
     this.executionId = other.executionId;
     if (other.isSetQuery()) {
@@ -527,6 +527,9 @@ import org.slf4j.LoggerFactory;
   public void validate() throws org.apache.thrift.TException {
     // check for required fields
     // check for sub-struct validity
+    if (scheduleKey != null) {
+      scheduleKey.validate();
+    }
   }
 
   private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
diff --git a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Table.java b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Table.java
index b5470c9..5e5fe2f 100644
--- a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Table.java
+++ b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Table.java
@@ -289,7 +289,7 @@ import org.slf4j.LoggerFactory;
     tmpMap.put(_Fields.IS_STATS_COMPLIANT, new org.apache.thrift.meta_data.FieldMetaData("isStatsCompliant", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
     tmpMap.put(_Fields.COL_STATS, new org.apache.thrift.meta_data.FieldMetaData("colStats", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRUCT        , "ColumnStatistics")));
+        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, ColumnStatistics.class)));
     tmpMap.put(_Fields.ACCESS_TYPE, new org.apache.thrift.meta_data.FieldMetaData("accessType", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BYTE)));
     tmpMap.put(_Fields.REQUIRED_READ_CAPABILITIES, new org.apache.thrift.meta_data.FieldMetaData("requiredReadCapabilities", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
@@ -402,7 +402,7 @@ import org.slf4j.LoggerFactory;
     this.writeId = other.writeId;
     this.isStatsCompliant = other.isStatsCompliant;
     if (other.isSetColStats()) {
-      this.colStats = other.colStats;
+      this.colStats = new ColumnStatistics(other.colStats);
     }
     this.accessType = other.accessType;
     if (other.isSetRequiredReadCapabilities()) {
@@ -2292,6 +2292,9 @@ import org.slf4j.LoggerFactory;
     if (creationMetadata != null) {
       creationMetadata.validate();
     }
+    if (colStats != null) {
+      colStats.validate();
+    }
   }
 
   private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
@@ -2390,14 +2393,14 @@ import org.slf4j.LoggerFactory;
           case 8: // PARTITION_KEYS
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
-                org.apache.thrift.protocol.TList _list214 = iprot.readListBegin();
-                struct.partitionKeys = new ArrayList<FieldSchema>(_list214.size);
-                FieldSchema _elem215;
-                for (int _i216 = 0; _i216 < _list214.size; ++_i216)
+                org.apache.thrift.protocol.TList _list222 = iprot.readListBegin();
+                struct.partitionKeys = new ArrayList<FieldSchema>(_list222.size);
+                FieldSchema _elem223;
+                for (int _i224 = 0; _i224 < _list222.size; ++_i224)
                 {
-                  _elem215 = new FieldSchema();
-                  _elem215.read(iprot);
-                  struct.partitionKeys.add(_elem215);
+                  _elem223 = new FieldSchema();
+                  _elem223.read(iprot);
+                  struct.partitionKeys.add(_elem223);
                 }
                 iprot.readListEnd();
               }
@@ -2409,15 +2412,15 @@ import org.slf4j.LoggerFactory;
           case 9: // PARAMETERS
             if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
               {
-                org.apache.thrift.protocol.TMap _map217 = iprot.readMapBegin();
-                struct.parameters = new HashMap<String,String>(2*_map217.size);
-                String _key218;
-                String _val219;
-                for (int _i220 = 0; _i220 < _map217.size; ++_i220)
+                org.apache.thrift.protocol.TMap _map225 = iprot.readMapBegin();
+                struct.parameters = new HashMap<String,String>(2*_map225.size);
+                String _key226;
+                String _val227;
+                for (int _i228 = 0; _i228 < _map225.size; ++_i228)
                 {
-                  _key218 = iprot.readString();
-                  _val219 = iprot.readString();
-                  struct.parameters.put(_key218, _val219);
+                  _key226 = iprot.readString();
+                  _val227 = iprot.readString();
+                  struct.parameters.put(_key226, _val227);
                 }
                 iprot.readMapEnd();
               }
@@ -2536,13 +2539,13 @@ import org.slf4j.LoggerFactory;
           case 23: // REQUIRED_READ_CAPABILITIES
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
-                org.apache.thrift.protocol.TList _list221 = iprot.readListBegin();
-                struct.requiredReadCapabilities = new ArrayList<String>(_list221.size);
-                String _elem222;
-                for (int _i223 = 0; _i223 < _list221.size; ++_i223)
+                org.apache.thrift.protocol.TList _list229 = iprot.readListBegin();
+                struct.requiredReadCapabilities = new ArrayList<String>(_list229.size);
+                String _elem230;
+                for (int _i231 = 0; _i231 < _list229.size; ++_i231)
                 {
-                  _elem222 = iprot.readString();
-                  struct.requiredReadCapabilities.add(_elem222);
+                  _elem230 = iprot.readString();
+                  struct.requiredReadCapabilities.add(_elem230);
                 }
                 iprot.readListEnd();
               }
@@ -2554,13 +2557,13 @@ import org.slf4j.LoggerFactory;
           case 24: // REQUIRED_WRITE_CAPABILITIES
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
-                org.apache.thrift.protocol.TList _list224 = iprot.readListBegin();
-                struct.requiredWriteCapabilities = new ArrayList<String>(_list224.size);
-                String _elem225;
-                for (int _i226 = 0; _i226 < _list224.size; ++_i226)
+                org.apache.thrift.protocol.TList _list232 = iprot.readListBegin();
+                struct.requiredWriteCapabilities = new ArrayList<String>(_list232.size);
+                String _elem233;
+                for (int _i234 = 0; _i234 < _list232.size; ++_i234)
                 {
-                  _elem225 = iprot.readString();
-                  struct.requiredWriteCapabilities.add(_elem225);
+                  _elem233 = iprot.readString();
+                  struct.requiredWriteCapabilities.add(_elem233);
                 }
                 iprot.readListEnd();
               }
@@ -2623,9 +2626,9 @@ import org.slf4j.LoggerFactory;
         oprot.writeFieldBegin(PARTITION_KEYS_FIELD_DESC);
         {
           oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.partitionKeys.size()));
-          for (FieldSchema _iter227 : struct.partitionKeys)
+          for (FieldSchema _iter235 : struct.partitionKeys)
           {
-            _iter227.write(oprot);
+            _iter235.write(oprot);
           }
           oprot.writeListEnd();
         }
@@ -2635,10 +2638,10 @@ import org.slf4j.LoggerFactory;
         oprot.writeFieldBegin(PARAMETERS_FIELD_DESC);
         {
           oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, struct.parameters.size()));
-          for (Map.Entry<String, String> _iter228 : struct.parameters.entrySet())
+          for (Map.Entry<String, String> _iter236 : struct.parameters.entrySet())
           {
-            oprot.writeString(_iter228.getKey());
-            oprot.writeString(_iter228.getValue());
+            oprot.writeString(_iter236.getKey());
+            oprot.writeString(_iter236.getValue());
           }
           oprot.writeMapEnd();
         }
@@ -2724,9 +2727,9 @@ import org.slf4j.LoggerFactory;
           oprot.writeFieldBegin(REQUIRED_READ_CAPABILITIES_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.requiredReadCapabilities.size()));
-            for (String _iter229 : struct.requiredReadCapabilities)
+            for (String _iter237 : struct.requiredReadCapabilities)
             {
-              oprot.writeString(_iter229);
+              oprot.writeString(_iter237);
             }
             oprot.writeListEnd();
           }
@@ -2738,9 +2741,9 @@ import org.slf4j.LoggerFactory;
           oprot.writeFieldBegin(REQUIRED_WRITE_CAPABILITIES_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.requiredWriteCapabilities.size()));
-            for (String _iter230 : struct.requiredWriteCapabilities)
+            for (String _iter238 : struct.requiredWriteCapabilities)
             {
-              oprot.writeString(_iter230);
+              oprot.writeString(_iter238);
             }
             oprot.writeListEnd();
           }
@@ -2870,19 +2873,19 @@ import org.slf4j.LoggerFactory;
       if (struct.isSetPartitionKeys()) {
         {
           oprot.writeI32(struct.partitionKeys.size());
-          for (FieldSchema _iter231 : struct.partitionKeys)
+          for (FieldSchema _iter239 : struct.partitionKeys)
           {
-            _iter231.write(oprot);
+            _iter239.write(oprot);
           }
         }
       }
       if (struct.isSetParameters()) {
         {
           oprot.writeI32(struct.parameters.size());
-          for (Map.Entry<String, String> _iter232 : struct.parameters.entrySet())
+          for (Map.Entry<String, String> _iter240 : struct.parameters.entrySet())
           {
-            oprot.writeString(_iter232.getKey());
-            oprot.writeString(_iter232.getValue());
+            oprot.writeString(_iter240.getKey());
+            oprot.writeString(_iter240.getValue());
           }
         }
       }
@@ -2928,18 +2931,18 @@ import org.slf4j.LoggerFactory;
       if (struct.isSetRequiredReadCapabilities()) {
         {
           oprot.writeI32(struct.requiredReadCapabilities.size());
-          for (String _iter233 : struct.requiredReadCapabilities)
+          for (String _iter241 : struct.requiredReadCapabilities)
           {
-            oprot.writeString(_iter233);
+            oprot.writeString(_iter241);
           }
         }
       }
       if (struct.isSetRequiredWriteCapabilities()) {
         {
           oprot.writeI32(struct.requiredWriteCapabilities.size());
-          for (String _iter234 : struct.requiredWriteCapabilities)
+          for (String _iter242 : struct.requiredWriteCapabilities)
           {
-            oprot.writeString(_iter234);
+            oprot.writeString(_iter242);
           }
         }
       }
@@ -2983,29 +2986,29 @@ import org.slf4j.LoggerFactory;
       }
       if (incoming.get(7)) {
         {
-          org.apache.thrift.protocol.TList _list235 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-          struct.partitionKeys = new ArrayList<FieldSchema>(_list235.size);
-          FieldSchema _elem236;
-          for (int _i237 = 0; _i237 < _list235.size; ++_i237)
+          org.apache.thrift.protocol.TList _list243 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+          struct.partitionKeys = new ArrayList<FieldSchema>(_list243.size);
+          FieldSchema _elem244;
+          for (int _i245 = 0; _i245 < _list243.size; ++_i245)
           {
-            _elem236 = new FieldSchema();
-            _elem236.read(iprot);
-            struct.partitionKeys.add(_elem236);
+            _elem244 = new FieldSchema();
+            _elem244.read(iprot);
+            struct.partitionKeys.add(_elem244);
           }
         }
         struct.setPartitionKeysIsSet(true);
       }
       if (incoming.get(8)) {
         {
-          org.apache.thrift.protocol.TMap _map238 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-          struct.parameters = new HashMap<String,String>(2*_map238.size);
-          String _key239;
-          String _val240;
-          for (int _i241 = 0; _i241 < _map238.size; ++_i241)
+          org.apache.thrift.protocol.TMap _map246 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
+          struct.parameters = new HashMap<String,String>(2*_map246.size);
+          String _key247;
+          String _val248;
+          for (int _i249 = 0; _i249 < _map246.size; ++_i249)
           {
-            _key239 = iprot.readString();
-            _val240 = iprot.readString();
-            struct.parameters.put(_key239, _val240);
+            _key247 = iprot.readString();
+            _val248 = iprot.readString();
+            struct.parameters.put(_key247, _val248);
           }
         }
         struct.setParametersIsSet(true);
@@ -3067,26 +3070,26 @@ import org.slf4j.LoggerFactory;
       }
       if (incoming.get(22)) {
         {
-          org.apache.thrift.protocol.TList _list242 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-          struct.requiredReadCapabilities = new ArrayList<String>(_list242.size);
-          String _elem243;
-          for (int _i244 = 0; _i244 < _list242.size; ++_i244)
+          org.apache.thrift.protocol.TList _list250 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
+          struct.requiredReadCapabilities = new ArrayList<String>(_list250.size);
+          String _elem251;
+          for (int _i252 = 0; _i252 < _list250.size; ++_i252)
           {
-            _elem243 = iprot.readString();
-            struct.requiredReadCapabilities.add(_elem243);
+            _elem251 = iprot.readString();
+            struct.requiredReadCapabilities.add(_elem251);
           }
         }
         struct.setRequiredReadCapabilitiesIsSet(true);
       }
       if (incoming.get(23)) {
         {
-          org.apache.thrift.protocol.TList _list245 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-          struct.requiredWriteCapabilities = new ArrayList<String>(_list245.size);
-          String _elem246;
-          for (int _i247 = 0; _i247 < _list245.size; ++_i247)
+          org.apache.thrift.protocol.TList _list253 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
+          struct.requiredWriteCapabilities = new ArrayList<String>(_list253.size);
+          String _elem254;
+          for (int _i255 = 0; _i255 < _list253.size; ++_i255)
           {
-            _elem246 = iprot.readString();
-            struct.requiredWriteCapabilities.add(_elem246);
+            _elem254 = iprot.readString();
+            struct.requiredWriteCapabilities.add(_elem254);
           }
         }
         struct.setRequiredWriteCapabilitiesIsSet(true);
diff --git a/standalone-metastore/metastore-common/src/gen/thrift/gen-php/metastore/Types.php b/standalone-metastore/metastore-common/src/gen/thrift/gen-php/metastore/Types.php
index fa5c20b..093ad4b 100644
--- a/standalone-metastore/metastore-common/src/gen/thrift/gen-php/metastore/Types.php
+++ b/standalone-metastore/metastore-common/src/gen/thrift/gen-php/metastore/Types.php
@@ -7016,321 +7016,220 @@ class CreationMetadata {
 
 }
 
-class Table {
+class BooleanColumnStatsData {
   static $_TSPEC;
 
   /**
-   * @var string
-   */
-  public $tableName = null;
-  /**
-   * @var string
-   */
-  public $dbName = null;
-  /**
-   * @var string
-   */
-  public $owner = null;
-  /**
    * @var int
    */
-  public $createTime = null;
+  public $numTrues = null;
   /**
    * @var int
    */
-  public $lastAccessTime = null;
+  public $numFalses = null;
   /**
    * @var int
    */
-  public $retention = null;
-  /**
-   * @var \metastore\StorageDescriptor
-   */
-  public $sd = null;
-  /**
-   * @var \metastore\FieldSchema[]
-   */
-  public $partitionKeys = null;
-  /**
-   * @var array
-   */
-  public $parameters = null;
-  /**
-   * @var string
-   */
-  public $viewOriginalText = null;
-  /**
-   * @var string
-   */
-  public $viewExpandedText = null;
+  public $numNulls = null;
   /**
    * @var string
    */
-  public $tableType = null;
-  /**
-   * @var \metastore\PrincipalPrivilegeSet
-   */
-  public $privileges = null;
-  /**
-   * @var bool
-   */
-  public $temporary = false;
-  /**
-   * @var bool
-   */
-  public $rewriteEnabled = null;
-  /**
-   * @var \metastore\CreationMetadata
-   */
-  public $creationMetadata = null;
+  public $bitVectors = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'numTrues',
+          'type' => TType::I64,
+          ),
+        2 => array(
+          'var' => 'numFalses',
+          'type' => TType::I64,
+          ),
+        3 => array(
+          'var' => 'numNulls',
+          'type' => TType::I64,
+          ),
+        4 => array(
+          'var' => 'bitVectors',
+          'type' => TType::STRING,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['numTrues'])) {
+        $this->numTrues = $vals['numTrues'];
+      }
+      if (isset($vals['numFalses'])) {
+        $this->numFalses = $vals['numFalses'];
+      }
+      if (isset($vals['numNulls'])) {
+        $this->numNulls = $vals['numNulls'];
+      }
+      if (isset($vals['bitVectors'])) {
+        $this->bitVectors = $vals['bitVectors'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'BooleanColumnStatsData';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->numTrues);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->numFalses);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->numNulls);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->bitVectors);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('BooleanColumnStatsData');
+    if ($this->numTrues !== null) {
+      $xfer += $output->writeFieldBegin('numTrues', TType::I64, 1);
+      $xfer += $output->writeI64($this->numTrues);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->numFalses !== null) {
+      $xfer += $output->writeFieldBegin('numFalses', TType::I64, 2);
+      $xfer += $output->writeI64($this->numFalses);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->numNulls !== null) {
+      $xfer += $output->writeFieldBegin('numNulls', TType::I64, 3);
+      $xfer += $output->writeI64($this->numNulls);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->bitVectors !== null) {
+      $xfer += $output->writeFieldBegin('bitVectors', TType::STRING, 4);
+      $xfer += $output->writeString($this->bitVectors);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class DoubleColumnStatsData {
+  static $_TSPEC;
+
   /**
-   * @var string
+   * @var double
    */
-  public $catName = null;
+  public $lowValue = null;
   /**
-   * @var int
+   * @var double
    */
-  public $ownerType =   1;
+  public $highValue = null;
   /**
    * @var int
    */
-  public $writeId = -1;
-  /**
-   * @var bool
-   */
-  public $isStatsCompliant = null;
-  /**
-   * @var \metastore\ColumnStatistics
-   */
-  public $colStats = null;
+  public $numNulls = null;
   /**
    * @var int
    */
-  public $accessType = null;
-  /**
-   * @var string[]
-   */
-  public $requiredReadCapabilities = null;
-  /**
-   * @var string[]
-   */
-  public $requiredWriteCapabilities = null;
+  public $numDVs = null;
   /**
-   * @var int
+   * @var string
    */
-  public $id = null;
+  public $bitVectors = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
       self::$_TSPEC = array(
         1 => array(
-          'var' => 'tableName',
-          'type' => TType::STRING,
+          'var' => 'lowValue',
+          'type' => TType::DOUBLE,
           ),
         2 => array(
-          'var' => 'dbName',
-          'type' => TType::STRING,
+          'var' => 'highValue',
+          'type' => TType::DOUBLE,
           ),
         3 => array(
-          'var' => 'owner',
-          'type' => TType::STRING,
+          'var' => 'numNulls',
+          'type' => TType::I64,
           ),
         4 => array(
-          'var' => 'createTime',
-          'type' => TType::I32,
+          'var' => 'numDVs',
+          'type' => TType::I64,
           ),
         5 => array(
-          'var' => 'lastAccessTime',
-          'type' => TType::I32,
-          ),
-        6 => array(
-          'var' => 'retention',
-          'type' => TType::I32,
-          ),
-        7 => array(
-          'var' => 'sd',
-          'type' => TType::STRUCT,
-          'class' => '\metastore\StorageDescriptor',
-          ),
-        8 => array(
-          'var' => 'partitionKeys',
-          'type' => TType::LST,
-          'etype' => TType::STRUCT,
-          'elem' => array(
-            'type' => TType::STRUCT,
-            'class' => '\metastore\FieldSchema',
-            ),
-          ),
-        9 => array(
-          'var' => 'parameters',
-          'type' => TType::MAP,
-          'ktype' => TType::STRING,
-          'vtype' => TType::STRING,
-          'key' => array(
-            'type' => TType::STRING,
-          ),
-          'val' => array(
-            'type' => TType::STRING,
-            ),
-          ),
-        10 => array(
-          'var' => 'viewOriginalText',
-          'type' => TType::STRING,
-          ),
-        11 => array(
-          'var' => 'viewExpandedText',
-          'type' => TType::STRING,
-          ),
-        12 => array(
-          'var' => 'tableType',
-          'type' => TType::STRING,
-          ),
-        13 => array(
-          'var' => 'privileges',
-          'type' => TType::STRUCT,
-          'class' => '\metastore\PrincipalPrivilegeSet',
-          ),
-        14 => array(
-          'var' => 'temporary',
-          'type' => TType::BOOL,
-          ),
-        15 => array(
-          'var' => 'rewriteEnabled',
-          'type' => TType::BOOL,
-          ),
-        16 => array(
-          'var' => 'creationMetadata',
-          'type' => TType::STRUCT,
-          'class' => '\metastore\CreationMetadata',
-          ),
-        17 => array(
-          'var' => 'catName',
-          'type' => TType::STRING,
-          ),
-        18 => array(
-          'var' => 'ownerType',
-          'type' => TType::I32,
-          ),
-        19 => array(
-          'var' => 'writeId',
-          'type' => TType::I64,
-          ),
-        20 => array(
-          'var' => 'isStatsCompliant',
-          'type' => TType::BOOL,
-          ),
-        21 => array(
-          'var' => 'colStats',
-          'type' => TType::STRUCT,
-          'class' => '\metastore\ColumnStatistics',
-          ),
-        22 => array(
-          'var' => 'accessType',
-          'type' => TType::BYTE,
-          ),
-        23 => array(
-          'var' => 'requiredReadCapabilities',
-          'type' => TType::LST,
-          'etype' => TType::STRING,
-          'elem' => array(
-            'type' => TType::STRING,
-            ),
-          ),
-        24 => array(
-          'var' => 'requiredWriteCapabilities',
-          'type' => TType::LST,
-          'etype' => TType::STRING,
-          'elem' => array(
-            'type' => TType::STRING,
-            ),
-          ),
-        25 => array(
-          'var' => 'id',
-          'type' => TType::I64,
+          'var' => 'bitVectors',
+          'type' => TType::STRING,
           ),
         );
     }
     if (is_array($vals)) {
-      if (isset($vals['tableName'])) {
-        $this->tableName = $vals['tableName'];
-      }
-      if (isset($vals['dbName'])) {
-        $this->dbName = $vals['dbName'];
-      }
-      if (isset($vals['owner'])) {
-        $this->owner = $vals['owner'];
-      }
-      if (isset($vals['createTime'])) {
-        $this->createTime = $vals['createTime'];
-      }
-      if (isset($vals['lastAccessTime'])) {
-        $this->lastAccessTime = $vals['lastAccessTime'];
-      }
-      if (isset($vals['retention'])) {
-        $this->retention = $vals['retention'];
-      }
-      if (isset($vals['sd'])) {
-        $this->sd = $vals['sd'];
-      }
-      if (isset($vals['partitionKeys'])) {
-        $this->partitionKeys = $vals['partitionKeys'];
-      }
-      if (isset($vals['parameters'])) {
-        $this->parameters = $vals['parameters'];
-      }
-      if (isset($vals['viewOriginalText'])) {
-        $this->viewOriginalText = $vals['viewOriginalText'];
-      }
-      if (isset($vals['viewExpandedText'])) {
-        $this->viewExpandedText = $vals['viewExpandedText'];
-      }
-      if (isset($vals['tableType'])) {
-        $this->tableType = $vals['tableType'];
-      }
-      if (isset($vals['privileges'])) {
-        $this->privileges = $vals['privileges'];
-      }
-      if (isset($vals['temporary'])) {
-        $this->temporary = $vals['temporary'];
-      }
-      if (isset($vals['rewriteEnabled'])) {
-        $this->rewriteEnabled = $vals['rewriteEnabled'];
-      }
-      if (isset($vals['creationMetadata'])) {
-        $this->creationMetadata = $vals['creationMetadata'];
-      }
-      if (isset($vals['catName'])) {
-        $this->catName = $vals['catName'];
-      }
-      if (isset($vals['ownerType'])) {
-        $this->ownerType = $vals['ownerType'];
-      }
-      if (isset($vals['writeId'])) {
-        $this->writeId = $vals['writeId'];
-      }
-      if (isset($vals['isStatsCompliant'])) {
-        $this->isStatsCompliant = $vals['isStatsCompliant'];
-      }
-      if (isset($vals['colStats'])) {
-        $this->colStats = $vals['colStats'];
+      if (isset($vals['lowValue'])) {
+        $this->lowValue = $vals['lowValue'];
       }
-      if (isset($vals['accessType'])) {
-        $this->accessType = $vals['accessType'];
+      if (isset($vals['highValue'])) {
+        $this->highValue = $vals['highValue'];
       }
-      if (isset($vals['requiredReadCapabilities'])) {
-        $this->requiredReadCapabilities = $vals['requiredReadCapabilities'];
+      if (isset($vals['numNulls'])) {
+        $this->numNulls = $vals['numNulls'];
       }
-      if (isset($vals['requiredWriteCapabilities'])) {
-        $this->requiredWriteCapabilities = $vals['requiredWriteCapabilities'];
+      if (isset($vals['numDVs'])) {
+        $this->numDVs = $vals['numDVs'];
       }
-      if (isset($vals['id'])) {
-        $this->id = $vals['id'];
+      if (isset($vals['bitVectors'])) {
+        $this->bitVectors = $vals['bitVectors'];
       }
     }
   }
 
   public function getName() {
-    return 'Table';
+    return 'DoubleColumnStatsData';
   }
 
   public function read($input)
@@ -7349,224 +7248,203 @@ class Table {
       switch ($fid)
       {
         case 1:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->tableName);
+          if ($ftype == TType::DOUBLE) {
+            $xfer += $input->readDouble($this->lowValue);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 2:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->dbName);
+          if ($ftype == TType::DOUBLE) {
+            $xfer += $input->readDouble($this->highValue);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 3:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->owner);
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->numNulls);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 4:
-          if ($ftype == TType::I32) {
-            $xfer += $input->readI32($this->createTime);
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->numDVs);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 5:
-          if ($ftype == TType::I32) {
-            $xfer += $input->readI32($this->lastAccessTime);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 6:
-          if ($ftype == TType::I32) {
-            $xfer += $input->readI32($this->retention);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 7:
-          if ($ftype == TType::STRUCT) {
-            $this->sd = new \metastore\StorageDescriptor();
-            $xfer += $this->sd->read($input);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 8:
-          if ($ftype == TType::LST) {
-            $this->partitionKeys = array();
-            $_size190 = 0;
-            $_etype193 = 0;
-            $xfer += $input->readListBegin($_etype193, $_size190);
-            for ($_i194 = 0; $_i194 < $_size190; ++$_i194)
-            {
-              $elem195 = null;
-              $elem195 = new \metastore\FieldSchema();
-              $xfer += $elem195->read($input);
-              $this->partitionKeys []= $elem195;
-            }
-            $xfer += $input->readListEnd();
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 9:
-          if ($ftype == TType::MAP) {
-            $this->parameters = array();
-            $_size196 = 0;
-            $_ktype197 = 0;
-            $_vtype198 = 0;
-            $xfer += $input->readMapBegin($_ktype197, $_vtype198, $_size196);
-            for ($_i200 = 0; $_i200 < $_size196; ++$_i200)
-            {
-              $key201 = '';
-              $val202 = '';
-              $xfer += $input->readString($key201);
-              $xfer += $input->readString($val202);
-              $this->parameters[$key201] = $val202;
-            }
-            $xfer += $input->readMapEnd();
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 10:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->viewOriginalText);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 11:
           if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->viewExpandedText);
+            $xfer += $input->readString($this->bitVectors);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 12:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->tableType);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
+        default:
+          $xfer += $input->skip($ftype);
           break;
-        case 13:
-          if ($ftype == TType::STRUCT) {
-            $this->privileges = new \metastore\PrincipalPrivilegeSet();
-            $xfer += $this->privileges->read($input);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 14:
-          if ($ftype == TType::BOOL) {
-            $xfer += $input->readBool($this->temporary);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 15:
-          if ($ftype == TType::BOOL) {
-            $xfer += $input->readBool($this->rewriteEnabled);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 16:
-          if ($ftype == TType::STRUCT) {
-            $this->creationMetadata = new \metastore\CreationMetadata();
-            $xfer += $this->creationMetadata->read($input);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 17:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->catName);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 18:
-          if ($ftype == TType::I32) {
-            $xfer += $input->readI32($this->ownerType);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 19:
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('DoubleColumnStatsData');
+    if ($this->lowValue !== null) {
+      $xfer += $output->writeFieldBegin('lowValue', TType::DOUBLE, 1);
+      $xfer += $output->writeDouble($this->lowValue);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->highValue !== null) {
+      $xfer += $output->writeFieldBegin('highValue', TType::DOUBLE, 2);
+      $xfer += $output->writeDouble($this->highValue);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->numNulls !== null) {
+      $xfer += $output->writeFieldBegin('numNulls', TType::I64, 3);
+      $xfer += $output->writeI64($this->numNulls);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->numDVs !== null) {
+      $xfer += $output->writeFieldBegin('numDVs', TType::I64, 4);
+      $xfer += $output->writeI64($this->numDVs);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->bitVectors !== null) {
+      $xfer += $output->writeFieldBegin('bitVectors', TType::STRING, 5);
+      $xfer += $output->writeString($this->bitVectors);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class LongColumnStatsData {
+  static $_TSPEC;
+
+  /**
+   * @var int
+   */
+  public $lowValue = null;
+  /**
+   * @var int
+   */
+  public $highValue = null;
+  /**
+   * @var int
+   */
+  public $numNulls = null;
+  /**
+   * @var int
+   */
+  public $numDVs = null;
+  /**
+   * @var string
+   */
+  public $bitVectors = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'lowValue',
+          'type' => TType::I64,
+          ),
+        2 => array(
+          'var' => 'highValue',
+          'type' => TType::I64,
+          ),
+        3 => array(
+          'var' => 'numNulls',
+          'type' => TType::I64,
+          ),
+        4 => array(
+          'var' => 'numDVs',
+          'type' => TType::I64,
+          ),
+        5 => array(
+          'var' => 'bitVectors',
+          'type' => TType::STRING,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['lowValue'])) {
+        $this->lowValue = $vals['lowValue'];
+      }
+      if (isset($vals['highValue'])) {
+        $this->highValue = $vals['highValue'];
+      }
+      if (isset($vals['numNulls'])) {
+        $this->numNulls = $vals['numNulls'];
+      }
+      if (isset($vals['numDVs'])) {
+        $this->numDVs = $vals['numDVs'];
+      }
+      if (isset($vals['bitVectors'])) {
+        $this->bitVectors = $vals['bitVectors'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'LongColumnStatsData';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
           if ($ftype == TType::I64) {
-            $xfer += $input->readI64($this->writeId);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 20:
-          if ($ftype == TType::BOOL) {
-            $xfer += $input->readBool($this->isStatsCompliant);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 21:
-          if ($ftype == TType::STRUCT) {
-            $this->colStats = new \metastore\ColumnStatistics();
-            $xfer += $this->colStats->read($input);
+            $xfer += $input->readI64($this->lowValue);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 22:
-          if ($ftype == TType::BYTE) {
-            $xfer += $input->readByte($this->accessType);
+        case 2:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->highValue);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 23:
-          if ($ftype == TType::LST) {
-            $this->requiredReadCapabilities = array();
-            $_size203 = 0;
-            $_etype206 = 0;
-            $xfer += $input->readListBegin($_etype206, $_size203);
-            for ($_i207 = 0; $_i207 < $_size203; ++$_i207)
-            {
-              $elem208 = null;
-              $xfer += $input->readString($elem208);
-              $this->requiredReadCapabilities []= $elem208;
-            }
-            $xfer += $input->readListEnd();
+        case 3:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->numNulls);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 24:
-          if ($ftype == TType::LST) {
-            $this->requiredWriteCapabilities = array();
-            $_size209 = 0;
-            $_etype212 = 0;
-            $xfer += $input->readListBegin($_etype212, $_size209);
-            for ($_i213 = 0; $_i213 < $_size209; ++$_i213)
-            {
-              $elem214 = null;
-              $xfer += $input->readString($elem214);
-              $this->requiredWriteCapabilities []= $elem214;
-            }
-            $xfer += $input->readListEnd();
+        case 4:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->numDVs);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 25:
-          if ($ftype == TType::I64) {
-            $xfer += $input->readI64($this->id);
+        case 5:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->bitVectors);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -7583,191 +7461,30 @@ class Table {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Table');
-    if ($this->tableName !== null) {
-      $xfer += $output->writeFieldBegin('tableName', TType::STRING, 1);
-      $xfer += $output->writeString($this->tableName);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->dbName !== null) {
-      $xfer += $output->writeFieldBegin('dbName', TType::STRING, 2);
-      $xfer += $output->writeString($this->dbName);
+    $xfer += $output->writeStructBegin('LongColumnStatsData');
+    if ($this->lowValue !== null) {
+      $xfer += $output->writeFieldBegin('lowValue', TType::I64, 1);
+      $xfer += $output->writeI64($this->lowValue);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->owner !== null) {
-      $xfer += $output->writeFieldBegin('owner', TType::STRING, 3);
-      $xfer += $output->writeString($this->owner);
+    if ($this->highValue !== null) {
+      $xfer += $output->writeFieldBegin('highValue', TType::I64, 2);
+      $xfer += $output->writeI64($this->highValue);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->createTime !== null) {
-      $xfer += $output->writeFieldBegin('createTime', TType::I32, 4);
-      $xfer += $output->writeI32($this->createTime);
+    if ($this->numNulls !== null) {
+      $xfer += $output->writeFieldBegin('numNulls', TType::I64, 3);
+      $xfer += $output->writeI64($this->numNulls);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->lastAccessTime !== null) {
-      $xfer += $output->writeFieldBegin('lastAccessTime', TType::I32, 5);
-      $xfer += $output->writeI32($this->lastAccessTime);
+    if ($this->numDVs !== null) {
+      $xfer += $output->writeFieldBegin('numDVs', TType::I64, 4);
+      $xfer += $output->writeI64($this->numDVs);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->retention !== null) {
-      $xfer += $output->writeFieldBegin('retention', TType::I32, 6);
-      $xfer += $output->writeI32($this->retention);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->sd !== null) {
-      if (!is_object($this->sd)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('sd', TType::STRUCT, 7);
-      $xfer += $this->sd->write($output);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->partitionKeys !== null) {
-      if (!is_array($this->partitionKeys)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('partitionKeys', TType::LST, 8);
-      {
-        $output->writeListBegin(TType::STRUCT, count($this->partitionKeys));
-        {
-          foreach ($this->partitionKeys as $iter215)
-          {
-            $xfer += $iter215->write($output);
-          }
-        }
-        $output->writeListEnd();
-      }
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->parameters !== null) {
-      if (!is_array($this->parameters)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('parameters', TType::MAP, 9);
-      {
-        $output->writeMapBegin(TType::STRING, TType::STRING, count($this->parameters));
-        {
-          foreach ($this->parameters as $kiter216 => $viter217)
-          {
-            $xfer += $output->writeString($kiter216);
-            $xfer += $output->writeString($viter217);
-          }
-        }
-        $output->writeMapEnd();
-      }
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->viewOriginalText !== null) {
-      $xfer += $output->writeFieldBegin('viewOriginalText', TType::STRING, 10);
-      $xfer += $output->writeString($this->viewOriginalText);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->viewExpandedText !== null) {
-      $xfer += $output->writeFieldBegin('viewExpandedText', TType::STRING, 11);
-      $xfer += $output->writeString($this->viewExpandedText);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->tableType !== null) {
-      $xfer += $output->writeFieldBegin('tableType', TType::STRING, 12);
-      $xfer += $output->writeString($this->tableType);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->privileges !== null) {
-      if (!is_object($this->privileges)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('privileges', TType::STRUCT, 13);
-      $xfer += $this->privileges->write($output);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->temporary !== null) {
-      $xfer += $output->writeFieldBegin('temporary', TType::BOOL, 14);
-      $xfer += $output->writeBool($this->temporary);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->rewriteEnabled !== null) {
-      $xfer += $output->writeFieldBegin('rewriteEnabled', TType::BOOL, 15);
-      $xfer += $output->writeBool($this->rewriteEnabled);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->creationMetadata !== null) {
-      if (!is_object($this->creationMetadata)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('creationMetadata', TType::STRUCT, 16);
-      $xfer += $this->creationMetadata->write($output);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->catName !== null) {
-      $xfer += $output->writeFieldBegin('catName', TType::STRING, 17);
-      $xfer += $output->writeString($this->catName);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->ownerType !== null) {
-      $xfer += $output->writeFieldBegin('ownerType', TType::I32, 18);
-      $xfer += $output->writeI32($this->ownerType);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->writeId !== null) {
-      $xfer += $output->writeFieldBegin('writeId', TType::I64, 19);
-      $xfer += $output->writeI64($this->writeId);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->isStatsCompliant !== null) {
-      $xfer += $output->writeFieldBegin('isStatsCompliant', TType::BOOL, 20);
-      $xfer += $output->writeBool($this->isStatsCompliant);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->colStats !== null) {
-      if (!is_object($this->colStats)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('colStats', TType::STRUCT, 21);
-      $xfer += $this->colStats->write($output);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->accessType !== null) {
-      $xfer += $output->writeFieldBegin('accessType', TType::BYTE, 22);
-      $xfer += $output->writeByte($this->accessType);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->requiredReadCapabilities !== null) {
-      if (!is_array($this->requiredReadCapabilities)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('requiredReadCapabilities', TType::LST, 23);
-      {
-        $output->writeListBegin(TType::STRING, count($this->requiredReadCapabilities));
-        {
-          foreach ($this->requiredReadCapabilities as $iter218)
-          {
-            $xfer += $output->writeString($iter218);
-          }
-        }
-        $output->writeListEnd();
-      }
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->requiredWriteCapabilities !== null) {
-      if (!is_array($this->requiredWriteCapabilities)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('requiredWriteCapabilities', TType::LST, 24);
-      {
-        $output->writeListBegin(TType::STRING, count($this->requiredWriteCapabilities));
-        {
-          foreach ($this->requiredWriteCapabilities as $iter219)
-          {
-            $xfer += $output->writeString($iter219);
-          }
-        }
-        $output->writeListEnd();
-      }
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->id !== null) {
-      $xfer += $output->writeFieldBegin('id', TType::I64, 25);
-      $xfer += $output->writeI64($this->id);
+    if ($this->bitVectors !== null) {
+      $xfer += $output->writeFieldBegin('bitVectors', TType::STRING, 5);
+      $xfer += $output->writeString($this->bitVectors);
       $xfer += $output->writeFieldEnd();
     }
     $xfer += $output->writeFieldStop();
@@ -7777,168 +7494,76 @@ class Table {
 
 }
 
-class Partition {
+class StringColumnStatsData {
   static $_TSPEC;
 
   /**
-   * @var string[]
-   */
-  public $values = null;
-  /**
-   * @var string
+   * @var int
    */
-  public $dbName = null;
+  public $maxColLen = null;
   /**
-   * @var string
+   * @var double
    */
-  public $tableName = null;
+  public $avgColLen = null;
   /**
    * @var int
    */
-  public $createTime = null;
+  public $numNulls = null;
   /**
    * @var int
    */
-  public $lastAccessTime = null;
-  /**
-   * @var \metastore\StorageDescriptor
-   */
-  public $sd = null;
-  /**
-   * @var array
-   */
-  public $parameters = null;
-  /**
-   * @var \metastore\PrincipalPrivilegeSet
-   */
-  public $privileges = null;
+  public $numDVs = null;
   /**
    * @var string
    */
-  public $catName = null;
-  /**
-   * @var int
-   */
-  public $writeId = -1;
-  /**
-   * @var bool
-   */
-  public $isStatsCompliant = null;
-  /**
-   * @var \metastore\ColumnStatistics
-   */
-  public $colStats = null;
+  public $bitVectors = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
       self::$_TSPEC = array(
         1 => array(
-          'var' => 'values',
-          'type' => TType::LST,
-          'etype' => TType::STRING,
-          'elem' => array(
-            'type' => TType::STRING,
-            ),
+          'var' => 'maxColLen',
+          'type' => TType::I64,
           ),
         2 => array(
-          'var' => 'dbName',
-          'type' => TType::STRING,
+          'var' => 'avgColLen',
+          'type' => TType::DOUBLE,
           ),
         3 => array(
-          'var' => 'tableName',
-          'type' => TType::STRING,
+          'var' => 'numNulls',
+          'type' => TType::I64,
           ),
         4 => array(
-          'var' => 'createTime',
-          'type' => TType::I32,
+          'var' => 'numDVs',
+          'type' => TType::I64,
           ),
         5 => array(
-          'var' => 'lastAccessTime',
-          'type' => TType::I32,
-          ),
-        6 => array(
-          'var' => 'sd',
-          'type' => TType::STRUCT,
-          'class' => '\metastore\StorageDescriptor',
-          ),
-        7 => array(
-          'var' => 'parameters',
-          'type' => TType::MAP,
-          'ktype' => TType::STRING,
-          'vtype' => TType::STRING,
-          'key' => array(
-            'type' => TType::STRING,
-          ),
-          'val' => array(
-            'type' => TType::STRING,
-            ),
-          ),
-        8 => array(
-          'var' => 'privileges',
-          'type' => TType::STRUCT,
-          'class' => '\metastore\PrincipalPrivilegeSet',
-          ),
-        9 => array(
-          'var' => 'catName',
+          'var' => 'bitVectors',
           'type' => TType::STRING,
           ),
-        10 => array(
-          'var' => 'writeId',
-          'type' => TType::I64,
-          ),
-        11 => array(
-          'var' => 'isStatsCompliant',
-          'type' => TType::BOOL,
-          ),
-        12 => array(
-          'var' => 'colStats',
-          'type' => TType::STRUCT,
-          'class' => '\metastore\ColumnStatistics',
-          ),
         );
     }
     if (is_array($vals)) {
-      if (isset($vals['values'])) {
-        $this->values = $vals['values'];
+      if (isset($vals['maxColLen'])) {
+        $this->maxColLen = $vals['maxColLen'];
       }
-      if (isset($vals['dbName'])) {
-        $this->dbName = $vals['dbName'];
-      }
-      if (isset($vals['tableName'])) {
-        $this->tableName = $vals['tableName'];
-      }
-      if (isset($vals['createTime'])) {
-        $this->createTime = $vals['createTime'];
-      }
-      if (isset($vals['lastAccessTime'])) {
-        $this->lastAccessTime = $vals['lastAccessTime'];
-      }
-      if (isset($vals['sd'])) {
-        $this->sd = $vals['sd'];
-      }
-      if (isset($vals['parameters'])) {
-        $this->parameters = $vals['parameters'];
-      }
-      if (isset($vals['privileges'])) {
-        $this->privileges = $vals['privileges'];
-      }
-      if (isset($vals['catName'])) {
-        $this->catName = $vals['catName'];
+      if (isset($vals['avgColLen'])) {
+        $this->avgColLen = $vals['avgColLen'];
       }
-      if (isset($vals['writeId'])) {
-        $this->writeId = $vals['writeId'];
+      if (isset($vals['numNulls'])) {
+        $this->numNulls = $vals['numNulls'];
       }
-      if (isset($vals['isStatsCompliant'])) {
-        $this->isStatsCompliant = $vals['isStatsCompliant'];
+      if (isset($vals['numDVs'])) {
+        $this->numDVs = $vals['numDVs'];
       }
-      if (isset($vals['colStats'])) {
-        $this->colStats = $vals['colStats'];
+      if (isset($vals['bitVectors'])) {
+        $this->bitVectors = $vals['bitVectors'];
       }
     }
   }
 
   public function getName() {
-    return 'Partition';
+    return 'StringColumnStatsData';
   }
 
   public function read($input)
@@ -7957,111 +7582,36 @@ class Partition {
       switch ($fid)
       {
         case 1:
-          if ($ftype == TType::LST) {
-            $this->values = array();
-            $_size220 = 0;
-            $_etype223 = 0;
-            $xfer += $input->readListBegin($_etype223, $_size220);
-            for ($_i224 = 0; $_i224 < $_size220; ++$_i224)
-            {
-              $elem225 = null;
-              $xfer += $input->readString($elem225);
-              $this->values []= $elem225;
-            }
-            $xfer += $input->readListEnd();
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->maxColLen);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 2:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->dbName);
+          if ($ftype == TType::DOUBLE) {
+            $xfer += $input->readDouble($this->avgColLen);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 3:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->tableName);
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->numNulls);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 4:
-          if ($ftype == TType::I32) {
-            $xfer += $input->readI32($this->createTime);
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->numDVs);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 5:
-          if ($ftype == TType::I32) {
-            $xfer += $input->readI32($this->lastAccessTime);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 6:
-          if ($ftype == TType::STRUCT) {
-            $this->sd = new \metastore\StorageDescriptor();
-            $xfer += $this->sd->read($input);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 7:
-          if ($ftype == TType::MAP) {
-            $this->parameters = array();
-            $_size226 = 0;
-            $_ktype227 = 0;
-            $_vtype228 = 0;
-            $xfer += $input->readMapBegin($_ktype227, $_vtype228, $_size226);
-            for ($_i230 = 0; $_i230 < $_size226; ++$_i230)
-            {
-              $key231 = '';
-              $val232 = '';
-              $xfer += $input->readString($key231);
-              $xfer += $input->readString($val232);
-              $this->parameters[$key231] = $val232;
-            }
-            $xfer += $input->readMapEnd();
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 8:
-          if ($ftype == TType::STRUCT) {
-            $this->privileges = new \metastore\PrincipalPrivilegeSet();
-            $xfer += $this->privileges->read($input);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 9:
           if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->catName);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 10:
-          if ($ftype == TType::I64) {
-            $xfer += $input->readI64($this->writeId);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 11:
-          if ($ftype == TType::BOOL) {
-            $xfer += $input->readBool($this->isStatsCompliant);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 12:
-          if ($ftype == TType::STRUCT) {
-            $this->colStats = new \metastore\ColumnStatistics();
-            $xfer += $this->colStats->read($input);
+            $xfer += $input->readString($this->bitVectors);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -8078,99 +7628,30 @@ class Partition {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Partition');
-    if ($this->values !== null) {
-      if (!is_array($this->values)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('values', TType::LST, 1);
-      {
-        $output->writeListBegin(TType::STRING, count($this->values));
-        {
-          foreach ($this->values as $iter233)
-          {
-            $xfer += $output->writeString($iter233);
-          }
-        }
-        $output->writeListEnd();
-      }
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->dbName !== null) {
-      $xfer += $output->writeFieldBegin('dbName', TType::STRING, 2);
-      $xfer += $output->writeString($this->dbName);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->tableName !== null) {
-      $xfer += $output->writeFieldBegin('tableName', TType::STRING, 3);
-      $xfer += $output->writeString($this->tableName);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->createTime !== null) {
-      $xfer += $output->writeFieldBegin('createTime', TType::I32, 4);
-      $xfer += $output->writeI32($this->createTime);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->lastAccessTime !== null) {
-      $xfer += $output->writeFieldBegin('lastAccessTime', TType::I32, 5);
-      $xfer += $output->writeI32($this->lastAccessTime);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->sd !== null) {
-      if (!is_object($this->sd)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('sd', TType::STRUCT, 6);
-      $xfer += $this->sd->write($output);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->parameters !== null) {
-      if (!is_array($this->parameters)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('parameters', TType::MAP, 7);
-      {
-        $output->writeMapBegin(TType::STRING, TType::STRING, count($this->parameters));
-        {
-          foreach ($this->parameters as $kiter234 => $viter235)
-          {
-            $xfer += $output->writeString($kiter234);
-            $xfer += $output->writeString($viter235);
-          }
-        }
-        $output->writeMapEnd();
-      }
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->privileges !== null) {
-      if (!is_object($this->privileges)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('privileges', TType::STRUCT, 8);
-      $xfer += $this->privileges->write($output);
+    $xfer += $output->writeStructBegin('StringColumnStatsData');
+    if ($this->maxColLen !== null) {
+      $xfer += $output->writeFieldBegin('maxColLen', TType::I64, 1);
+      $xfer += $output->writeI64($this->maxColLen);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->catName !== null) {
-      $xfer += $output->writeFieldBegin('catName', TType::STRING, 9);
-      $xfer += $output->writeString($this->catName);
+    if ($this->avgColLen !== null) {
+      $xfer += $output->writeFieldBegin('avgColLen', TType::DOUBLE, 2);
+      $xfer += $output->writeDouble($this->avgColLen);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->writeId !== null) {
-      $xfer += $output->writeFieldBegin('writeId', TType::I64, 10);
-      $xfer += $output->writeI64($this->writeId);
+    if ($this->numNulls !== null) {
+      $xfer += $output->writeFieldBegin('numNulls', TType::I64, 3);
+      $xfer += $output->writeI64($this->numNulls);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->isStatsCompliant !== null) {
-      $xfer += $output->writeFieldBegin('isStatsCompliant', TType::BOOL, 11);
-      $xfer += $output->writeBool($this->isStatsCompliant);
+    if ($this->numDVs !== null) {
+      $xfer += $output->writeFieldBegin('numDVs', TType::I64, 4);
+      $xfer += $output->writeI64($this->numDVs);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->colStats !== null) {
-      if (!is_object($this->colStats)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('colStats', TType::STRUCT, 12);
-      $xfer += $this->colStats->write($output);
+    if ($this->bitVectors !== null) {
+      $xfer += $output->writeFieldBegin('bitVectors', TType::STRING, 5);
+      $xfer += $output->writeString($this->bitVectors);
       $xfer += $output->writeFieldEnd();
     }
     $xfer += $output->writeFieldStop();
@@ -8180,100 +7661,65 @@ class Partition {
 
 }
 
-class PartitionWithoutSD {
+class BinaryColumnStatsData {
   static $_TSPEC;
 
   /**
-   * @var string[]
+   * @var int
    */
-  public $values = null;
+  public $maxColLen = null;
   /**
-   * @var int
+   * @var double
    */
-  public $createTime = null;
+  public $avgColLen = null;
   /**
    * @var int
    */
-  public $lastAccessTime = null;
+  public $numNulls = null;
   /**
    * @var string
    */
-  public $relativePath = null;
-  /**
-   * @var array
-   */
-  public $parameters = null;
-  /**
-   * @var \metastore\PrincipalPrivilegeSet
-   */
-  public $privileges = null;
+  public $bitVectors = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
       self::$_TSPEC = array(
         1 => array(
-          'var' => 'values',
-          'type' => TType::LST,
-          'etype' => TType::STRING,
-          'elem' => array(
-            'type' => TType::STRING,
-            ),
+          'var' => 'maxColLen',
+          'type' => TType::I64,
           ),
         2 => array(
-          'var' => 'createTime',
-          'type' => TType::I32,
+          'var' => 'avgColLen',
+          'type' => TType::DOUBLE,
           ),
         3 => array(
-          'var' => 'lastAccessTime',
-          'type' => TType::I32,
+          'var' => 'numNulls',
+          'type' => TType::I64,
           ),
         4 => array(
-          'var' => 'relativePath',
+          'var' => 'bitVectors',
           'type' => TType::STRING,
           ),
-        5 => array(
-          'var' => 'parameters',
-          'type' => TType::MAP,
-          'ktype' => TType::STRING,
-          'vtype' => TType::STRING,
-          'key' => array(
-            'type' => TType::STRING,
-          ),
-          'val' => array(
-            'type' => TType::STRING,
-            ),
-          ),
-        6 => array(
-          'var' => 'privileges',
-          'type' => TType::STRUCT,
-          'class' => '\metastore\PrincipalPrivilegeSet',
-          ),
         );
     }
     if (is_array($vals)) {
-      if (isset($vals['values'])) {
-        $this->values = $vals['values'];
-      }
-      if (isset($vals['createTime'])) {
-        $this->createTime = $vals['createTime'];
-      }
-      if (isset($vals['lastAccessTime'])) {
-        $this->lastAccessTime = $vals['lastAccessTime'];
+      if (isset($vals['maxColLen'])) {
+        $this->maxColLen = $vals['maxColLen'];
       }
-      if (isset($vals['relativePath'])) {
-        $this->relativePath = $vals['relativePath'];
+      if (isset($vals['avgColLen'])) {
+        $this->avgColLen = $vals['avgColLen'];
       }
-      if (isset($vals['parameters'])) {
-        $this->parameters = $vals['parameters'];
+      if (isset($vals['numNulls'])) {
+        $this->numNulls = $vals['numNulls'];
       }
-      if (isset($vals['privileges'])) {
-        $this->privileges = $vals['privileges'];
+      if (isset($vals['bitVectors'])) {
+        $this->bitVectors = $vals['bitVectors'];
       }
     }
   }
 
   public function getName() {
-    return 'PartitionWithoutSD';
+    return 'BinaryColumnStatsData';
   }
 
   public function read($input)
@@ -8292,67 +7738,29 @@ class PartitionWithoutSD {
       switch ($fid)
       {
         case 1:
-          if ($ftype == TType::LST) {
-            $this->values = array();
-            $_size236 = 0;
-            $_etype239 = 0;
-            $xfer += $input->readListBegin($_etype239, $_size236);
-            for ($_i240 = 0; $_i240 < $_size236; ++$_i240)
-            {
-              $elem241 = null;
-              $xfer += $input->readString($elem241);
-              $this->values []= $elem241;
-            }
-            $xfer += $input->readListEnd();
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->maxColLen);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 2:
-          if ($ftype == TType::I32) {
-            $xfer += $input->readI32($this->createTime);
+          if ($ftype == TType::DOUBLE) {
+            $xfer += $input->readDouble($this->avgColLen);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 3:
-          if ($ftype == TType::I32) {
-            $xfer += $input->readI32($this->lastAccessTime);
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->numNulls);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 4:
           if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->relativePath);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 5:
-          if ($ftype == TType::MAP) {
-            $this->parameters = array();
-            $_size242 = 0;
-            $_ktype243 = 0;
-            $_vtype244 = 0;
-            $xfer += $input->readMapBegin($_ktype243, $_vtype244, $_size242);
-            for ($_i246 = 0; $_i246 < $_size242; ++$_i246)
-            {
-              $key247 = '';
-              $val248 = '';
-              $xfer += $input->readString($key247);
-              $xfer += $input->readString($val248);
-              $this->parameters[$key247] = $val248;
-            }
-            $xfer += $input->readMapEnd();
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 6:
-          if ($ftype == TType::STRUCT) {
-            $this->privileges = new \metastore\PrincipalPrivilegeSet();
-            $xfer += $this->privileges->read($input);
+            $xfer += $input->readString($this->bitVectors);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -8369,63 +7777,25 @@ class PartitionWithoutSD {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('PartitionWithoutSD');
-    if ($this->values !== null) {
-      if (!is_array($this->values)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('values', TType::LST, 1);
-      {
-        $output->writeListBegin(TType::STRING, count($this->values));
-        {
-          foreach ($this->values as $iter249)
-          {
-            $xfer += $output->writeString($iter249);
-          }
-        }
-        $output->writeListEnd();
-      }
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->createTime !== null) {
-      $xfer += $output->writeFieldBegin('createTime', TType::I32, 2);
-      $xfer += $output->writeI32($this->createTime);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->lastAccessTime !== null) {
-      $xfer += $output->writeFieldBegin('lastAccessTime', TType::I32, 3);
-      $xfer += $output->writeI32($this->lastAccessTime);
+    $xfer += $output->writeStructBegin('BinaryColumnStatsData');
+    if ($this->maxColLen !== null) {
+      $xfer += $output->writeFieldBegin('maxColLen', TType::I64, 1);
+      $xfer += $output->writeI64($this->maxColLen);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->relativePath !== null) {
-      $xfer += $output->writeFieldBegin('relativePath', TType::STRING, 4);
-      $xfer += $output->writeString($this->relativePath);
+    if ($this->avgColLen !== null) {
+      $xfer += $output->writeFieldBegin('avgColLen', TType::DOUBLE, 2);
+      $xfer += $output->writeDouble($this->avgColLen);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->parameters !== null) {
-      if (!is_array($this->parameters)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('parameters', TType::MAP, 5);
-      {
-        $output->writeMapBegin(TType::STRING, TType::STRING, count($this->parameters));
-        {
-          foreach ($this->parameters as $kiter250 => $viter251)
-          {
-            $xfer += $output->writeString($kiter250);
-            $xfer += $output->writeString($viter251);
-          }
-        }
-        $output->writeMapEnd();
-      }
+    if ($this->numNulls !== null) {
+      $xfer += $output->writeFieldBegin('numNulls', TType::I64, 3);
+      $xfer += $output->writeI64($this->numNulls);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->privileges !== null) {
-      if (!is_object($this->privileges)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('privileges', TType::STRUCT, 6);
-      $xfer += $this->privileges->write($output);
+    if ($this->bitVectors !== null) {
+      $xfer += $output->writeFieldBegin('bitVectors', TType::STRING, 4);
+      $xfer += $output->writeString($this->bitVectors);
       $xfer += $output->writeFieldEnd();
     }
     $xfer += $output->writeFieldStop();
@@ -8435,49 +7805,43 @@ class PartitionWithoutSD {
 
 }
 
-class PartitionSpecWithSharedSD {
+class Decimal {
   static $_TSPEC;
 
   /**
-   * @var \metastore\PartitionWithoutSD[]
+   * @var int
    */
-  public $partitions = null;
+  public $scale = null;
   /**
-   * @var \metastore\StorageDescriptor
+   * @var string
    */
-  public $sd = null;
+  public $unscaled = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
       self::$_TSPEC = array(
-        1 => array(
-          'var' => 'partitions',
-          'type' => TType::LST,
-          'etype' => TType::STRUCT,
-          'elem' => array(
-            'type' => TType::STRUCT,
-            'class' => '\metastore\PartitionWithoutSD',
-            ),
+        3 => array(
+          'var' => 'scale',
+          'type' => TType::I16,
           ),
-        2 => array(
-          'var' => 'sd',
-          'type' => TType::STRUCT,
-          'class' => '\metastore\StorageDescriptor',
+        1 => array(
+          'var' => 'unscaled',
+          'type' => TType::STRING,
           ),
         );
     }
     if (is_array($vals)) {
-      if (isset($vals['partitions'])) {
-        $this->partitions = $vals['partitions'];
+      if (isset($vals['scale'])) {
+        $this->scale = $vals['scale'];
       }
-      if (isset($vals['sd'])) {
-        $this->sd = $vals['sd'];
+      if (isset($vals['unscaled'])) {
+        $this->unscaled = $vals['unscaled'];
       }
     }
   }
 
   public function getName() {
-    return 'PartitionSpecWithSharedSD';
+    return 'Decimal';
   }
 
   public function read($input)
@@ -8495,28 +7859,16 @@ class PartitionSpecWithSharedSD {
       }
       switch ($fid)
       {
-        case 1:
-          if ($ftype == TType::LST) {
-            $this->partitions = array();
-            $_size252 = 0;
-            $_etype255 = 0;
-            $xfer += $input->readListBegin($_etype255, $_size252);
-            for ($_i256 = 0; $_i256 < $_size252; ++$_i256)
-            {
-              $elem257 = null;
-              $elem257 = new \metastore\PartitionWithoutSD();
-              $xfer += $elem257->read($input);
-              $this->partitions []= $elem257;
-            }
-            $xfer += $input->readListEnd();
+        case 3:
+          if ($ftype == TType::I16) {
+            $xfer += $input->readI16($this->scale);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 2:
-          if ($ftype == TType::STRUCT) {
-            $this->sd = new \metastore\StorageDescriptor();
-            $xfer += $this->sd->read($input);
+        case 1:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->unscaled);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -8533,30 +7885,15 @@ class PartitionSpecWithSharedSD {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('PartitionSpecWithSharedSD');
-    if ($this->partitions !== null) {
-      if (!is_array($this->partitions)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('partitions', TType::LST, 1);
-      {
-        $output->writeListBegin(TType::STRUCT, count($this->partitions));
-        {
-          foreach ($this->partitions as $iter258)
-          {
-            $xfer += $iter258->write($output);
-          }
-        }
-        $output->writeListEnd();
-      }
+    $xfer += $output->writeStructBegin('Decimal');
+    if ($this->unscaled !== null) {
+      $xfer += $output->writeFieldBegin('unscaled', TType::STRING, 1);
+      $xfer += $output->writeString($this->unscaled);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->sd !== null) {
-      if (!is_object($this->sd)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('sd', TType::STRUCT, 2);
-      $xfer += $this->sd->write($output);
+    if ($this->scale !== null) {
+      $xfer += $output->writeFieldBegin('scale', TType::I16, 3);
+      $xfer += $output->writeI16($this->scale);
       $xfer += $output->writeFieldEnd();
     }
     $xfer += $output->writeFieldStop();
@@ -8566,22 +7903,26 @@ class PartitionSpecWithSharedSD {
 
 }
 
-class BooleanColumnStatsData {
+class DecimalColumnStatsData {
   static $_TSPEC;
 
   /**
-   * @var int
+   * @var \metastore\Decimal
    */
-  public $numTrues = null;
+  public $lowValue = null;
   /**
-   * @var int
+   * @var \metastore\Decimal
    */
-  public $numFalses = null;
+  public $highValue = null;
   /**
    * @var int
    */
   public $numNulls = null;
   /**
+   * @var int
+   */
+  public $numDVs = null;
+  /**
    * @var string
    */
   public $bitVectors = null;
@@ -8590,33 +7931,42 @@ class BooleanColumnStatsData {
     if (!isset(self::$_TSPEC)) {
       self::$_TSPEC = array(
         1 => array(
-          'var' => 'numTrues',
-          'type' => TType::I64,
+          'var' => 'lowValue',
+          'type' => TType::STRUCT,
+          'class' => '\metastore\Decimal',
           ),
         2 => array(
-          'var' => 'numFalses',
-          'type' => TType::I64,
+          'var' => 'highValue',
+          'type' => TType::STRUCT,
+          'class' => '\metastore\Decimal',
           ),
         3 => array(
           'var' => 'numNulls',
           'type' => TType::I64,
           ),
         4 => array(
+          'var' => 'numDVs',
+          'type' => TType::I64,
+          ),
+        5 => array(
           'var' => 'bitVectors',
           'type' => TType::STRING,
           ),
         );
     }
     if (is_array($vals)) {
-      if (isset($vals['numTrues'])) {
-        $this->numTrues = $vals['numTrues'];
+      if (isset($vals['lowValue'])) {
+        $this->lowValue = $vals['lowValue'];
       }
-      if (isset($vals['numFalses'])) {
-        $this->numFalses = $vals['numFalses'];
+      if (isset($vals['highValue'])) {
+        $this->highValue = $vals['highValue'];
       }
       if (isset($vals['numNulls'])) {
         $this->numNulls = $vals['numNulls'];
       }
+      if (isset($vals['numDVs'])) {
+        $this->numDVs = $vals['numDVs'];
+      }
       if (isset($vals['bitVectors'])) {
         $this->bitVectors = $vals['bitVectors'];
       }
@@ -8624,7 +7974,7 @@ class BooleanColumnStatsData {
   }
 
   public function getName() {
-    return 'BooleanColumnStatsData';
+    return 'DecimalColumnStatsData';
   }
 
   public function read($input)
@@ -8643,15 +7993,17 @@ class BooleanColumnStatsData {
       switch ($fid)
       {
         case 1:
-          if ($ftype == TType::I64) {
-            $xfer += $input->readI64($this->numTrues);
+          if ($ftype == TType::STRUCT) {
+            $this->lowValue = new \metastore\Decimal();
+            $xfer += $this->lowValue->read($input);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 2:
-          if ($ftype == TType::I64) {
-            $xfer += $input->readI64($this->numFalses);
+          if ($ftype == TType::STRUCT) {
+            $this->highValue = new \metastore\Decimal();
+            $xfer += $this->highValue->read($input);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -8664,6 +8016,13 @@ class BooleanColumnStatsData {
           }
           break;
         case 4:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->numDVs);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 5:
           if ($ftype == TType::STRING) {
             $xfer += $input->readString($this->bitVectors);
           } else {
@@ -8682,15 +8041,21 @@ class BooleanColumnStatsData {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('BooleanColumnStatsData');
-    if ($this->numTrues !== null) {
-      $xfer += $output->writeFieldBegin('numTrues', TType::I64, 1);
-      $xfer += $output->writeI64($this->numTrues);
+    $xfer += $output->writeStructBegin('DecimalColumnStatsData');
+    if ($this->lowValue !== null) {
+      if (!is_object($this->lowValue)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('lowValue', TType::STRUCT, 1);
+      $xfer += $this->lowValue->write($output);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->numFalses !== null) {
-      $xfer += $output->writeFieldBegin('numFalses', TType::I64, 2);
-      $xfer += $output->writeI64($this->numFalses);
+    if ($this->highValue !== null) {
+      if (!is_object($this->highValue)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('highValue', TType::STRUCT, 2);
+      $xfer += $this->highValue->write($output);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->numNulls !== null) {
@@ -8698,8 +8063,13 @@ class BooleanColumnStatsData {
       $xfer += $output->writeI64($this->numNulls);
       $xfer += $output->writeFieldEnd();
     }
+    if ($this->numDVs !== null) {
+      $xfer += $output->writeFieldBegin('numDVs', TType::I64, 4);
+      $xfer += $output->writeI64($this->numDVs);
+      $xfer += $output->writeFieldEnd();
+    }
     if ($this->bitVectors !== null) {
-      $xfer += $output->writeFieldBegin('bitVectors', TType::STRING, 4);
+      $xfer += $output->writeFieldBegin('bitVectors', TType::STRING, 5);
       $xfer += $output->writeString($this->bitVectors);
       $xfer += $output->writeFieldEnd();
     }
@@ -8710,15 +8080,90 @@ class BooleanColumnStatsData {
 
 }
 
-class DoubleColumnStatsData {
+class Date {
   static $_TSPEC;
 
   /**
-   * @var double
+   * @var int
+   */
+  public $daysSinceEpoch = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'daysSinceEpoch',
+          'type' => TType::I64,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['daysSinceEpoch'])) {
+        $this->daysSinceEpoch = $vals['daysSinceEpoch'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'Date';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->daysSinceEpoch);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('Date');
+    if ($this->daysSinceEpoch !== null) {
+      $xfer += $output->writeFieldBegin('daysSinceEpoch', TType::I64, 1);
+      $xfer += $output->writeI64($this->daysSinceEpoch);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class DateColumnStatsData {
+  static $_TSPEC;
+
+  /**
+   * @var \metastore\Date
    */
   public $lowValue = null;
   /**
-   * @var double
+   * @var \metastore\Date
    */
   public $highValue = null;
   /**
@@ -8739,11 +8184,13 @@ class DoubleColumnStatsData {
       self::$_TSPEC = array(
         1 => array(
           'var' => 'lowValue',
-          'type' => TType::DOUBLE,
+          'type' => TType::STRUCT,
+          'class' => '\metastore\Date',
           ),
         2 => array(
           'var' => 'highValue',
-          'type' => TType::DOUBLE,
+          'type' => TType::STRUCT,
+          'class' => '\metastore\Date',
           ),
         3 => array(
           'var' => 'numNulls',
@@ -8779,7 +8226,7 @@ class DoubleColumnStatsData {
   }
 
   public function getName() {
-    return 'DoubleColumnStatsData';
+    return 'DateColumnStatsData';
   }
 
   public function read($input)
@@ -8798,15 +8245,17 @@ class DoubleColumnStatsData {
       switch ($fid)
       {
         case 1:
-          if ($ftype == TType::DOUBLE) {
-            $xfer += $input->readDouble($this->lowValue);
+          if ($ftype == TType::STRUCT) {
+            $this->lowValue = new \metastore\Date();
+            $xfer += $this->lowValue->read($input);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 2:
-          if ($ftype == TType::DOUBLE) {
-            $xfer += $input->readDouble($this->highValue);
+          if ($ftype == TType::STRUCT) {
+            $this->highValue = new \metastore\Date();
+            $xfer += $this->highValue->read($input);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -8844,15 +8293,21 @@ class DoubleColumnStatsData {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('DoubleColumnStatsData');
+    $xfer += $output->writeStructBegin('DateColumnStatsData');
     if ($this->lowValue !== null) {
-      $xfer += $output->writeFieldBegin('lowValue', TType::DOUBLE, 1);
-      $xfer += $output->writeDouble($this->lowValue);
+      if (!is_object($this->lowValue)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('lowValue', TType::STRUCT, 1);
+      $xfer += $this->lowValue->write($output);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->highValue !== null) {
-      $xfer += $output->writeFieldBegin('highValue', TType::DOUBLE, 2);
-      $xfer += $output->writeDouble($this->highValue);
+      if (!is_object($this->highValue)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('highValue', TType::STRUCT, 2);
+      $xfer += $this->highValue->write($output);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->numNulls !== null) {
@@ -8877,15 +8332,90 @@ class DoubleColumnStatsData {
 
 }
 
-class LongColumnStatsData {
+class Timestamp {
   static $_TSPEC;
 
   /**
    * @var int
    */
+  public $secondsSinceEpoch = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'secondsSinceEpoch',
+          'type' => TType::I64,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['secondsSinceEpoch'])) {
+        $this->secondsSinceEpoch = $vals['secondsSinceEpoch'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'Timestamp';
+  }
+
+  public function read($input)
+  {
+    $xfer = 0;
+    $fname = null;
+    $ftype = 0;
+    $fid = 0;
+    $xfer += $input->readStructBegin($fname);
+    while (true)
+    {
+      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
+      if ($ftype == TType::STOP) {
+        break;
+      }
+      switch ($fid)
+      {
+        case 1:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->secondsSinceEpoch);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        default:
+          $xfer += $input->skip($ftype);
+          break;
+      }
+      $xfer += $input->readFieldEnd();
+    }
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('Timestamp');
+    if ($this->secondsSinceEpoch !== null) {
+      $xfer += $output->writeFieldBegin('secondsSinceEpoch', TType::I64, 1);
+      $xfer += $output->writeI64($this->secondsSinceEpoch);
+      $xfer += $output->writeFieldEnd();
+    }
+    $xfer += $output->writeFieldStop();
+    $xfer += $output->writeStructEnd();
+    return $xfer;
+  }
+
+}
+
+class TimestampColumnStatsData {
+  static $_TSPEC;
+
+  /**
+   * @var \metastore\Timestamp
+   */
   public $lowValue = null;
   /**
-   * @var int
+   * @var \metastore\Timestamp
    */
   public $highValue = null;
   /**
@@ -8906,11 +8436,13 @@ class LongColumnStatsData {
       self::$_TSPEC = array(
         1 => array(
           'var' => 'lowValue',
-          'type' => TType::I64,
+          'type' => TType::STRUCT,
+          'class' => '\metastore\Timestamp',
           ),
         2 => array(
           'var' => 'highValue',
-          'type' => TType::I64,
+          'type' => TType::STRUCT,
+          'class' => '\metastore\Timestamp',
           ),
         3 => array(
           'var' => 'numNulls',
@@ -8946,7 +8478,7 @@ class LongColumnStatsData {
   }
 
   public function getName() {
-    return 'LongColumnStatsData';
+    return 'TimestampColumnStatsData';
   }
 
   public function read($input)
@@ -8965,15 +8497,17 @@ class LongColumnStatsData {
       switch ($fid)
       {
         case 1:
-          if ($ftype == TType::I64) {
-            $xfer += $input->readI64($this->lowValue);
+          if ($ftype == TType::STRUCT) {
+            $this->lowValue = new \metastore\Timestamp();
+            $xfer += $this->lowValue->read($input);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 2:
-          if ($ftype == TType::I64) {
-            $xfer += $input->readI64($this->highValue);
+          if ($ftype == TType::STRUCT) {
+            $this->highValue = new \metastore\Timestamp();
+            $xfer += $this->highValue->read($input);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -9011,15 +8545,21 @@ class LongColumnStatsData {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('LongColumnStatsData');
+    $xfer += $output->writeStructBegin('TimestampColumnStatsData');
     if ($this->lowValue !== null) {
-      $xfer += $output->writeFieldBegin('lowValue', TType::I64, 1);
-      $xfer += $output->writeI64($this->lowValue);
-      $xfer += $output->writeFieldEnd();
+      if (!is_object($this->lowValue)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('lowValue', TType::STRUCT, 1);
+      $xfer += $this->lowValue->write($output);
+      $xfer += $output->writeFieldEnd();
     }
     if ($this->highValue !== null) {
-      $xfer += $output->writeFieldBegin('highValue', TType::I64, 2);
-      $xfer += $output->writeI64($this->highValue);
+      if (!is_object($this->highValue)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('highValue', TType::STRUCT, 2);
+      $xfer += $this->highValue->write($output);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->numNulls !== null) {
@@ -9044,76 +8584,117 @@ class LongColumnStatsData {
 
 }
 
-class StringColumnStatsData {
+class ColumnStatisticsData {
   static $_TSPEC;
 
   /**
-   * @var int
+   * @var \metastore\BooleanColumnStatsData
    */
-  public $maxColLen = null;
+  public $booleanStats = null;
   /**
-   * @var double
+   * @var \metastore\LongColumnStatsData
    */
-  public $avgColLen = null;
+  public $longStats = null;
   /**
-   * @var int
+   * @var \metastore\DoubleColumnStatsData
    */
-  public $numNulls = null;
+  public $doubleStats = null;
   /**
-   * @var int
+   * @var \metastore\StringColumnStatsData
    */
-  public $numDVs = null;
+  public $stringStats = null;
   /**
-   * @var string
+   * @var \metastore\BinaryColumnStatsData
    */
-  public $bitVectors = null;
+  public $binaryStats = null;
+  /**
+   * @var \metastore\DecimalColumnStatsData
+   */
+  public $decimalStats = null;
+  /**
+   * @var \metastore\DateColumnStatsData
+   */
+  public $dateStats = null;
+  /**
+   * @var \metastore\TimestampColumnStatsData
+   */
+  public $timestampStats = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
       self::$_TSPEC = array(
         1 => array(
-          'var' => 'maxColLen',
-          'type' => TType::I64,
+          'var' => 'booleanStats',
+          'type' => TType::STRUCT,
+          'class' => '\metastore\BooleanColumnStatsData',
           ),
         2 => array(
-          'var' => 'avgColLen',
-          'type' => TType::DOUBLE,
+          'var' => 'longStats',
+          'type' => TType::STRUCT,
+          'class' => '\metastore\LongColumnStatsData',
           ),
         3 => array(
-          'var' => 'numNulls',
-          'type' => TType::I64,
+          'var' => 'doubleStats',
+          'type' => TType::STRUCT,
+          'class' => '\metastore\DoubleColumnStatsData',
           ),
         4 => array(
-          'var' => 'numDVs',
-          'type' => TType::I64,
+          'var' => 'stringStats',
+          'type' => TType::STRUCT,
+          'class' => '\metastore\StringColumnStatsData',
           ),
         5 => array(
-          'var' => 'bitVectors',
-          'type' => TType::STRING,
+          'var' => 'binaryStats',
+          'type' => TType::STRUCT,
+          'class' => '\metastore\BinaryColumnStatsData',
+          ),
+        6 => array(
+          'var' => 'decimalStats',
+          'type' => TType::STRUCT,
+          'class' => '\metastore\DecimalColumnStatsData',
+          ),
+        7 => array(
+          'var' => 'dateStats',
+          'type' => TType::STRUCT,
+          'class' => '\metastore\DateColumnStatsData',
+          ),
+        8 => array(
+          'var' => 'timestampStats',
+          'type' => TType::STRUCT,
+          'class' => '\metastore\TimestampColumnStatsData',
           ),
         );
     }
     if (is_array($vals)) {
-      if (isset($vals['maxColLen'])) {
-        $this->maxColLen = $vals['maxColLen'];
+      if (isset($vals['booleanStats'])) {
+        $this->booleanStats = $vals['booleanStats'];
       }
-      if (isset($vals['avgColLen'])) {
-        $this->avgColLen = $vals['avgColLen'];
+      if (isset($vals['longStats'])) {
+        $this->longStats = $vals['longStats'];
       }
-      if (isset($vals['numNulls'])) {
-        $this->numNulls = $vals['numNulls'];
+      if (isset($vals['doubleStats'])) {
+        $this->doubleStats = $vals['doubleStats'];
       }
-      if (isset($vals['numDVs'])) {
-        $this->numDVs = $vals['numDVs'];
+      if (isset($vals['stringStats'])) {
+        $this->stringStats = $vals['stringStats'];
       }
-      if (isset($vals['bitVectors'])) {
-        $this->bitVectors = $vals['bitVectors'];
+      if (isset($vals['binaryStats'])) {
+        $this->binaryStats = $vals['binaryStats'];
+      }
+      if (isset($vals['decimalStats'])) {
+        $this->decimalStats = $vals['decimalStats'];
+      }
+      if (isset($vals['dateStats'])) {
+        $this->dateStats = $vals['dateStats'];
+      }
+      if (isset($vals['timestampStats'])) {
+        $this->timestampStats = $vals['timestampStats'];
       }
     }
   }
 
   public function getName() {
-    return 'StringColumnStatsData';
+    return 'ColumnStatisticsData';
   }
 
   public function read($input)
@@ -9132,36 +8713,65 @@ class StringColumnStatsData {
       switch ($fid)
       {
         case 1:
-          if ($ftype == TType::I64) {
-            $xfer += $input->readI64($this->maxColLen);
+          if ($ftype == TType::STRUCT) {
+            $this->booleanStats = new \metastore\BooleanColumnStatsData();
+            $xfer += $this->booleanStats->read($input);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 2:
-          if ($ftype == TType::DOUBLE) {
-            $xfer += $input->readDouble($this->avgColLen);
+          if ($ftype == TType::STRUCT) {
+            $this->longStats = new \metastore\LongColumnStatsData();
+            $xfer += $this->longStats->read($input);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 3:
-          if ($ftype == TType::I64) {
-            $xfer += $input->readI64($this->numNulls);
+          if ($ftype == TType::STRUCT) {
+            $this->doubleStats = new \metastore\DoubleColumnStatsData();
+            $xfer += $this->doubleStats->read($input);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 4:
-          if ($ftype == TType::I64) {
-            $xfer += $input->readI64($this->numDVs);
+          if ($ftype == TType::STRUCT) {
+            $this->stringStats = new \metastore\StringColumnStatsData();
+            $xfer += $this->stringStats->read($input);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 5:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->bitVectors);
+          if ($ftype == TType::STRUCT) {
+            $this->binaryStats = new \metastore\BinaryColumnStatsData();
+            $xfer += $this->binaryStats->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 6:
+          if ($ftype == TType::STRUCT) {
+            $this->decimalStats = new \metastore\DecimalColumnStatsData();
+            $xfer += $this->decimalStats->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 7:
+          if ($ftype == TType::STRUCT) {
+            $this->dateStats = new \metastore\DateColumnStatsData();
+            $xfer += $this->dateStats->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 8:
+          if ($ftype == TType::STRUCT) {
+            $this->timestampStats = new \metastore\TimestampColumnStatsData();
+            $xfer += $this->timestampStats->read($input);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -9178,30 +8788,69 @@ class StringColumnStatsData {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('StringColumnStatsData');
-    if ($this->maxColLen !== null) {
-      $xfer += $output->writeFieldBegin('maxColLen', TType::I64, 1);
-      $xfer += $output->writeI64($this->maxColLen);
+    $xfer += $output->writeStructBegin('ColumnStatisticsData');
+    if ($this->booleanStats !== null) {
+      if (!is_object($this->booleanStats)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('booleanStats', TType::STRUCT, 1);
+      $xfer += $this->booleanStats->write($output);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->avgColLen !== null) {
-      $xfer += $output->writeFieldBegin('avgColLen', TType::DOUBLE, 2);
-      $xfer += $output->writeDouble($this->avgColLen);
+    if ($this->longStats !== null) {
+      if (!is_object($this->longStats)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('longStats', TType::STRUCT, 2);
+      $xfer += $this->longStats->write($output);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->numNulls !== null) {
-      $xfer += $output->writeFieldBegin('numNulls', TType::I64, 3);
-      $xfer += $output->writeI64($this->numNulls);
+    if ($this->doubleStats !== null) {
+      if (!is_object($this->doubleStats)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('doubleStats', TType::STRUCT, 3);
+      $xfer += $this->doubleStats->write($output);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->numDVs !== null) {
-      $xfer += $output->writeFieldBegin('numDVs', TType::I64, 4);
-      $xfer += $output->writeI64($this->numDVs);
+    if ($this->stringStats !== null) {
+      if (!is_object($this->stringStats)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('stringStats', TType::STRUCT, 4);
+      $xfer += $this->stringStats->write($output);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->bitVectors !== null) {
-      $xfer += $output->writeFieldBegin('bitVectors', TType::STRING, 5);
-      $xfer += $output->writeString($this->bitVectors);
+    if ($this->binaryStats !== null) {
+      if (!is_object($this->binaryStats)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('binaryStats', TType::STRUCT, 5);
+      $xfer += $this->binaryStats->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->decimalStats !== null) {
+      if (!is_object($this->decimalStats)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('decimalStats', TType::STRUCT, 6);
+      $xfer += $this->decimalStats->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->dateStats !== null) {
+      if (!is_object($this->dateStats)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('dateStats', TType::STRUCT, 7);
+      $xfer += $this->dateStats->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->timestampStats !== null) {
+      if (!is_object($this->timestampStats)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('timestampStats', TType::STRUCT, 8);
+      $xfer += $this->timestampStats->write($output);
       $xfer += $output->writeFieldEnd();
     }
     $xfer += $output->writeFieldStop();
@@ -9211,65 +8860,55 @@ class StringColumnStatsData {
 
 }
 
-class BinaryColumnStatsData {
+class ColumnStatisticsObj {
   static $_TSPEC;
 
   /**
-   * @var int
-   */
-  public $maxColLen = null;
-  /**
-   * @var double
+   * @var string
    */
-  public $avgColLen = null;
+  public $colName = null;
   /**
-   * @var int
+   * @var string
    */
-  public $numNulls = null;
+  public $colType = null;
   /**
-   * @var string
+   * @var \metastore\ColumnStatisticsData
    */
-  public $bitVectors = null;
+  public $statsData = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
       self::$_TSPEC = array(
         1 => array(
-          'var' => 'maxColLen',
-          'type' => TType::I64,
+          'var' => 'colName',
+          'type' => TType::STRING,
           ),
         2 => array(
-          'var' => 'avgColLen',
-          'type' => TType::DOUBLE,
+          'var' => 'colType',
+          'type' => TType::STRING,
           ),
         3 => array(
-          'var' => 'numNulls',
-          'type' => TType::I64,
-          ),
-        4 => array(
-          'var' => 'bitVectors',
-          'type' => TType::STRING,
+          'var' => 'statsData',
+          'type' => TType::STRUCT,
+          'class' => '\metastore\ColumnStatisticsData',
           ),
         );
     }
     if (is_array($vals)) {
-      if (isset($vals['maxColLen'])) {
-        $this->maxColLen = $vals['maxColLen'];
-      }
-      if (isset($vals['avgColLen'])) {
-        $this->avgColLen = $vals['avgColLen'];
+      if (isset($vals['colName'])) {
+        $this->colName = $vals['colName'];
       }
-      if (isset($vals['numNulls'])) {
-        $this->numNulls = $vals['numNulls'];
+      if (isset($vals['colType'])) {
+        $this->colType = $vals['colType'];
       }
-      if (isset($vals['bitVectors'])) {
-        $this->bitVectors = $vals['bitVectors'];
+      if (isset($vals['statsData'])) {
+        $this->statsData = $vals['statsData'];
       }
     }
   }
 
   public function getName() {
-    return 'BinaryColumnStatsData';
+    return 'ColumnStatisticsObj';
   }
 
   public function read($input)
@@ -9288,29 +8927,23 @@ class BinaryColumnStatsData {
       switch ($fid)
       {
         case 1:
-          if ($ftype == TType::I64) {
-            $xfer += $input->readI64($this->maxColLen);
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->colName);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 2:
-          if ($ftype == TType::DOUBLE) {
-            $xfer += $input->readDouble($this->avgColLen);
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->colType);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 3:
-          if ($ftype == TType::I64) {
-            $xfer += $input->readI64($this->numNulls);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 4:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->bitVectors);
+          if ($ftype == TType::STRUCT) {
+            $this->statsData = new \metastore\ColumnStatisticsData();
+            $xfer += $this->statsData->read($input);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -9327,25 +8960,23 @@ class BinaryColumnStatsData {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('BinaryColumnStatsData');
-    if ($this->maxColLen !== null) {
-      $xfer += $output->writeFieldBegin('maxColLen', TType::I64, 1);
-      $xfer += $output->writeI64($this->maxColLen);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->avgColLen !== null) {
-      $xfer += $output->writeFieldBegin('avgColLen', TType::DOUBLE, 2);
-      $xfer += $output->writeDouble($this->avgColLen);
+    $xfer += $output->writeStructBegin('ColumnStatisticsObj');
+    if ($this->colName !== null) {
+      $xfer += $output->writeFieldBegin('colName', TType::STRING, 1);
+      $xfer += $output->writeString($this->colName);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->numNulls !== null) {
-      $xfer += $output->writeFieldBegin('numNulls', TType::I64, 3);
-      $xfer += $output->writeI64($this->numNulls);
+    if ($this->colType !== null) {
+      $xfer += $output->writeFieldBegin('colType', TType::STRING, 2);
+      $xfer += $output->writeString($this->colType);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->bitVectors !== null) {
-      $xfer += $output->writeFieldBegin('bitVectors', TType::STRING, 4);
-      $xfer += $output->writeString($this->bitVectors);
+    if ($this->statsData !== null) {
+      if (!is_object($this->statsData)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('statsData', TType::STRUCT, 3);
+      $xfer += $this->statsData->write($output);
       $xfer += $output->writeFieldEnd();
     }
     $xfer += $output->writeFieldStop();
@@ -9355,43 +8986,87 @@ class BinaryColumnStatsData {
 
 }
 
-class Decimal {
+class ColumnStatisticsDesc {
   static $_TSPEC;
 
   /**
+   * @var bool
+   */
+  public $isTblLevel = null;
+  /**
+   * @var string
+   */
+  public $dbName = null;
+  /**
+   * @var string
+   */
+  public $tableName = null;
+  /**
+   * @var string
+   */
+  public $partName = null;
+  /**
    * @var int
    */
-  public $scale = null;
+  public $lastAnalyzed = null;
   /**
    * @var string
    */
-  public $unscaled = null;
+  public $catName = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
       self::$_TSPEC = array(
+        1 => array(
+          'var' => 'isTblLevel',
+          'type' => TType::BOOL,
+          ),
+        2 => array(
+          'var' => 'dbName',
+          'type' => TType::STRING,
+          ),
         3 => array(
-          'var' => 'scale',
-          'type' => TType::I16,
+          'var' => 'tableName',
+          'type' => TType::STRING,
           ),
-        1 => array(
-          'var' => 'unscaled',
+        4 => array(
+          'var' => 'partName',
+          'type' => TType::STRING,
+          ),
+        5 => array(
+          'var' => 'lastAnalyzed',
+          'type' => TType::I64,
+          ),
+        6 => array(
+          'var' => 'catName',
           'type' => TType::STRING,
           ),
         );
     }
     if (is_array($vals)) {
-      if (isset($vals['scale'])) {
-        $this->scale = $vals['scale'];
+      if (isset($vals['isTblLevel'])) {
+        $this->isTblLevel = $vals['isTblLevel'];
       }
-      if (isset($vals['unscaled'])) {
-        $this->unscaled = $vals['unscaled'];
+      if (isset($vals['dbName'])) {
+        $this->dbName = $vals['dbName'];
+      }
+      if (isset($vals['tableName'])) {
+        $this->tableName = $vals['tableName'];
+      }
+      if (isset($vals['partName'])) {
+        $this->partName = $vals['partName'];
+      }
+      if (isset($vals['lastAnalyzed'])) {
+        $this->lastAnalyzed = $vals['lastAnalyzed'];
+      }
+      if (isset($vals['catName'])) {
+        $this->catName = $vals['catName'];
       }
     }
   }
 
   public function getName() {
-    return 'Decimal';
+    return 'ColumnStatisticsDesc';
   }
 
   public function read($input)
@@ -9409,16 +9084,44 @@ class Decimal {
       }
       switch ($fid)
       {
+        case 1:
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->isTblLevel);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 2:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->dbName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
         case 3:
-          if ($ftype == TType::I16) {
-            $xfer += $input->readI16($this->scale);
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->tableName);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 1:
+        case 4:
           if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->unscaled);
+            $xfer += $input->readString($this->partName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 5:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->lastAnalyzed);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 6:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->catName);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -9435,15 +9138,35 @@ class Decimal {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('Decimal');
-    if ($this->unscaled !== null) {
-      $xfer += $output->writeFieldBegin('unscaled', TType::STRING, 1);
-      $xfer += $output->writeString($this->unscaled);
+    $xfer += $output->writeStructBegin('ColumnStatisticsDesc');
+    if ($this->isTblLevel !== null) {
+      $xfer += $output->writeFieldBegin('isTblLevel', TType::BOOL, 1);
+      $xfer += $output->writeBool($this->isTblLevel);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->scale !== null) {
-      $xfer += $output->writeFieldBegin('scale', TType::I16, 3);
-      $xfer += $output->writeI16($this->scale);
+    if ($this->dbName !== null) {
+      $xfer += $output->writeFieldBegin('dbName', TType::STRING, 2);
+      $xfer += $output->writeString($this->dbName);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->tableName !== null) {
+      $xfer += $output->writeFieldBegin('tableName', TType::STRING, 3);
+      $xfer += $output->writeString($this->tableName);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->partName !== null) {
+      $xfer += $output->writeFieldBegin('partName', TType::STRING, 4);
+      $xfer += $output->writeString($this->partName);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->lastAnalyzed !== null) {
+      $xfer += $output->writeFieldBegin('lastAnalyzed', TType::I64, 5);
+      $xfer += $output->writeI64($this->lastAnalyzed);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->catName !== null) {
+      $xfer += $output->writeFieldBegin('catName', TType::STRING, 6);
+      $xfer += $output->writeString($this->catName);
       $xfer += $output->writeFieldEnd();
     }
     $xfer += $output->writeFieldStop();
@@ -9453,78 +9176,71 @@ class Decimal {
 
 }
 
-class DecimalColumnStatsData {
+class ColumnStatistics {
   static $_TSPEC;
 
   /**
-   * @var \metastore\Decimal
-   */
-  public $lowValue = null;
-  /**
-   * @var \metastore\Decimal
+   * @var \metastore\ColumnStatisticsDesc
    */
-  public $highValue = null;
+  public $statsDesc = null;
   /**
-   * @var int
+   * @var \metastore\ColumnStatisticsObj[]
    */
-  public $numNulls = null;
+  public $statsObj = null;
   /**
-   * @var int
+   * @var bool
    */
-  public $numDVs = null;
+  public $isStatsCompliant = null;
   /**
    * @var string
    */
-  public $bitVectors = null;
+  public $engine = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
       self::$_TSPEC = array(
         1 => array(
-          'var' => 'lowValue',
+          'var' => 'statsDesc',
           'type' => TType::STRUCT,
-          'class' => '\metastore\Decimal',
+          'class' => '\metastore\ColumnStatisticsDesc',
           ),
         2 => array(
-          'var' => 'highValue',
-          'type' => TType::STRUCT,
-          'class' => '\metastore\Decimal',
+          'var' => 'statsObj',
+          'type' => TType::LST,
+          'etype' => TType::STRUCT,
+          'elem' => array(
+            'type' => TType::STRUCT,
+            'class' => '\metastore\ColumnStatisticsObj',
+            ),
           ),
         3 => array(
-          'var' => 'numNulls',
-          'type' => TType::I64,
+          'var' => 'isStatsCompliant',
+          'type' => TType::BOOL,
           ),
         4 => array(
-          'var' => 'numDVs',
-          'type' => TType::I64,
-          ),
-        5 => array(
-          'var' => 'bitVectors',
+          'var' => 'engine',
           'type' => TType::STRING,
           ),
         );
     }
     if (is_array($vals)) {
-      if (isset($vals['lowValue'])) {
-        $this->lowValue = $vals['lowValue'];
-      }
-      if (isset($vals['highValue'])) {
-        $this->highValue = $vals['highValue'];
+      if (isset($vals['statsDesc'])) {
+        $this->statsDesc = $vals['statsDesc'];
       }
-      if (isset($vals['numNulls'])) {
-        $this->numNulls = $vals['numNulls'];
+      if (isset($vals['statsObj'])) {
+        $this->statsObj = $vals['statsObj'];
       }
-      if (isset($vals['numDVs'])) {
-        $this->numDVs = $vals['numDVs'];
+      if (isset($vals['isStatsCompliant'])) {
+        $this->isStatsCompliant = $vals['isStatsCompliant'];
       }
-      if (isset($vals['bitVectors'])) {
-        $this->bitVectors = $vals['bitVectors'];
+      if (isset($vals['engine'])) {
+        $this->engine = $vals['engine'];
       }
     }
   }
 
   public function getName() {
-    return 'DecimalColumnStatsData';
+    return 'ColumnStatistics';
   }
 
   public function read($input)
@@ -9544,37 +9260,40 @@ class DecimalColumnStatsData {
       {
         case 1:
           if ($ftype == TType::STRUCT) {
-            $this->lowValue = new \metastore\Decimal();
-            $xfer += $this->lowValue->read($input);
+            $this->statsDesc = new \metastore\ColumnStatisticsDesc();
+            $xfer += $this->statsDesc->read($input);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 2:
-          if ($ftype == TType::STRUCT) {
-            $this->highValue = new \metastore\Decimal();
-            $xfer += $this->highValue->read($input);
+          if ($ftype == TType::LST) {
+            $this->statsObj = array();
+            $_size190 = 0;
+            $_etype193 = 0;
+            $xfer += $input->readListBegin($_etype193, $_size190);
+            for ($_i194 = 0; $_i194 < $_size190; ++$_i194)
+            {
+              $elem195 = null;
+              $elem195 = new \metastore\ColumnStatisticsObj();
+              $xfer += $elem195->read($input);
+              $this->statsObj []= $elem195;
+            }
+            $xfer += $input->readListEnd();
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 3:
-          if ($ftype == TType::I64) {
-            $xfer += $input->readI64($this->numNulls);
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->isStatsCompliant);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 4:
-          if ($ftype == TType::I64) {
-            $xfer += $input->readI64($this->numDVs);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 5:
           if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->bitVectors);
+            $xfer += $input->readString($this->engine);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -9591,36 +9310,40 @@ class DecimalColumnStatsData {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('DecimalColumnStatsData');
-    if ($this->lowValue !== null) {
-      if (!is_object($this->lowValue)) {
+    $xfer += $output->writeStructBegin('ColumnStatistics');
+    if ($this->statsDesc !== null) {
+      if (!is_object($this->statsDesc)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('lowValue', TType::STRUCT, 1);
-      $xfer += $this->lowValue->write($output);
+      $xfer += $output->writeFieldBegin('statsDesc', TType::STRUCT, 1);
+      $xfer += $this->statsDesc->write($output);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->highValue !== null) {
-      if (!is_object($this->highValue)) {
+    if ($this->statsObj !== null) {
+      if (!is_array($this->statsObj)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('highValue', TType::STRUCT, 2);
-      $xfer += $this->highValue->write($output);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->numNulls !== null) {
-      $xfer += $output->writeFieldBegin('numNulls', TType::I64, 3);
-      $xfer += $output->writeI64($this->numNulls);
+      $xfer += $output->writeFieldBegin('statsObj', TType::LST, 2);
+      {
+        $output->writeListBegin(TType::STRUCT, count($this->statsObj));
+        {
+          foreach ($this->statsObj as $iter196)
+          {
+            $xfer += $iter196->write($output);
+          }
+        }
+        $output->writeListEnd();
+      }
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->numDVs !== null) {
-      $xfer += $output->writeFieldBegin('numDVs', TType::I64, 4);
-      $xfer += $output->writeI64($this->numDVs);
+    if ($this->isStatsCompliant !== null) {
+      $xfer += $output->writeFieldBegin('isStatsCompliant', TType::BOOL, 3);
+      $xfer += $output->writeBool($this->isStatsCompliant);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->bitVectors !== null) {
-      $xfer += $output->writeFieldBegin('bitVectors', TType::STRING, 5);
-      $xfer += $output->writeString($this->bitVectors);
+    if ($this->engine !== null) {
+      $xfer += $output->writeFieldBegin('engine', TType::STRING, 4);
+      $xfer += $output->writeString($this->engine);
       $xfer += $output->writeFieldEnd();
     }
     $xfer += $output->writeFieldStop();
@@ -9630,153 +9353,321 @@ class DecimalColumnStatsData {
 
 }
 
-class Date {
+class Table {
   static $_TSPEC;
 
   /**
-   * @var int
+   * @var string
    */
-  public $daysSinceEpoch = null;
-
-  public function __construct($vals=null) {
-    if (!isset(self::$_TSPEC)) {
-      self::$_TSPEC = array(
-        1 => array(
-          'var' => 'daysSinceEpoch',
-          'type' => TType::I64,
-          ),
-        );
-    }
-    if (is_array($vals)) {
-      if (isset($vals['daysSinceEpoch'])) {
-        $this->daysSinceEpoch = $vals['daysSinceEpoch'];
-      }
-    }
-  }
-
-  public function getName() {
-    return 'Date';
-  }
-
-  public function read($input)
-  {
-    $xfer = 0;
-    $fname = null;
-    $ftype = 0;
-    $fid = 0;
-    $xfer += $input->readStructBegin($fname);
-    while (true)
-    {
-      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
-      if ($ftype == TType::STOP) {
-        break;
-      }
-      switch ($fid)
-      {
-        case 1:
-          if ($ftype == TType::I64) {
-            $xfer += $input->readI64($this->daysSinceEpoch);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        default:
-          $xfer += $input->skip($ftype);
-          break;
-      }
-      $xfer += $input->readFieldEnd();
-    }
-    $xfer += $input->readStructEnd();
-    return $xfer;
-  }
-
-  public function write($output) {
-    $xfer = 0;
-    $xfer += $output->writeStructBegin('Date');
-    if ($this->daysSinceEpoch !== null) {
-      $xfer += $output->writeFieldBegin('daysSinceEpoch', TType::I64, 1);
-      $xfer += $output->writeI64($this->daysSinceEpoch);
-      $xfer += $output->writeFieldEnd();
-    }
-    $xfer += $output->writeFieldStop();
-    $xfer += $output->writeStructEnd();
-    return $xfer;
-  }
-
-}
-
-class DateColumnStatsData {
-  static $_TSPEC;
-
+  public $tableName = null;
   /**
-   * @var \metastore\Date
+   * @var string
    */
-  public $lowValue = null;
+  public $dbName = null;
   /**
-   * @var \metastore\Date
+   * @var string
    */
-  public $highValue = null;
+  public $owner = null;
   /**
    * @var int
    */
-  public $numNulls = null;
+  public $createTime = null;
   /**
    * @var int
    */
-  public $numDVs = null;
+  public $lastAccessTime = null;
+  /**
+   * @var int
+   */
+  public $retention = null;
+  /**
+   * @var \metastore\StorageDescriptor
+   */
+  public $sd = null;
+  /**
+   * @var \metastore\FieldSchema[]
+   */
+  public $partitionKeys = null;
+  /**
+   * @var array
+   */
+  public $parameters = null;
   /**
    * @var string
    */
-  public $bitVectors = null;
-
-  public function __construct($vals=null) {
-    if (!isset(self::$_TSPEC)) {
-      self::$_TSPEC = array(
-        1 => array(
-          'var' => 'lowValue',
-          'type' => TType::STRUCT,
-          'class' => '\metastore\Date',
-          ),
-        2 => array(
-          'var' => 'highValue',
-          'type' => TType::STRUCT,
-          'class' => '\metastore\Date',
-          ),
-        3 => array(
-          'var' => 'numNulls',
-          'type' => TType::I64,
-          ),
-        4 => array(
-          'var' => 'numDVs',
-          'type' => TType::I64,
-          ),
-        5 => array(
-          'var' => 'bitVectors',
-          'type' => TType::STRING,
-          ),
-        );
-    }
-    if (is_array($vals)) {
-      if (isset($vals['lowValue'])) {
-        $this->lowValue = $vals['lowValue'];
-      }
-      if (isset($vals['highValue'])) {
-        $this->highValue = $vals['highValue'];
-      }
-      if (isset($vals['numNulls'])) {
-        $this->numNulls = $vals['numNulls'];
-      }
-      if (isset($vals['numDVs'])) {
-        $this->numDVs = $vals['numDVs'];
-      }
-      if (isset($vals['bitVectors'])) {
-        $this->bitVectors = $vals['bitVectors'];
-      }
-    }
-  }
-
-  public function getName() {
-    return 'DateColumnStatsData';
+  public $viewOriginalText = null;
+  /**
+   * @var string
+   */
+  public $viewExpandedText = null;
+  /**
+   * @var string
+   */
+  public $tableType = null;
+  /**
+   * @var \metastore\PrincipalPrivilegeSet
+   */
+  public $privileges = null;
+  /**
+   * @var bool
+   */
+  public $temporary = false;
+  /**
+   * @var bool
+   */
+  public $rewriteEnabled = null;
+  /**
+   * @var \metastore\CreationMetadata
+   */
+  public $creationMetadata = null;
+  /**
+   * @var string
+   */
+  public $catName = null;
+  /**
+   * @var int
+   */
+  public $ownerType =   1;
+  /**
+   * @var int
+   */
+  public $writeId = -1;
+  /**
+   * @var bool
+   */
+  public $isStatsCompliant = null;
+  /**
+   * @var \metastore\ColumnStatistics
+   */
+  public $colStats = null;
+  /**
+   * @var int
+   */
+  public $accessType = null;
+  /**
+   * @var string[]
+   */
+  public $requiredReadCapabilities = null;
+  /**
+   * @var string[]
+   */
+  public $requiredWriteCapabilities = null;
+  /**
+   * @var int
+   */
+  public $id = null;
+
+  public function __construct($vals=null) {
+    if (!isset(self::$_TSPEC)) {
+      self::$_TSPEC = array(
+        1 => array(
+          'var' => 'tableName',
+          'type' => TType::STRING,
+          ),
+        2 => array(
+          'var' => 'dbName',
+          'type' => TType::STRING,
+          ),
+        3 => array(
+          'var' => 'owner',
+          'type' => TType::STRING,
+          ),
+        4 => array(
+          'var' => 'createTime',
+          'type' => TType::I32,
+          ),
+        5 => array(
+          'var' => 'lastAccessTime',
+          'type' => TType::I32,
+          ),
+        6 => array(
+          'var' => 'retention',
+          'type' => TType::I32,
+          ),
+        7 => array(
+          'var' => 'sd',
+          'type' => TType::STRUCT,
+          'class' => '\metastore\StorageDescriptor',
+          ),
+        8 => array(
+          'var' => 'partitionKeys',
+          'type' => TType::LST,
+          'etype' => TType::STRUCT,
+          'elem' => array(
+            'type' => TType::STRUCT,
+            'class' => '\metastore\FieldSchema',
+            ),
+          ),
+        9 => array(
+          'var' => 'parameters',
+          'type' => TType::MAP,
+          'ktype' => TType::STRING,
+          'vtype' => TType::STRING,
+          'key' => array(
+            'type' => TType::STRING,
+          ),
+          'val' => array(
+            'type' => TType::STRING,
+            ),
+          ),
+        10 => array(
+          'var' => 'viewOriginalText',
+          'type' => TType::STRING,
+          ),
+        11 => array(
+          'var' => 'viewExpandedText',
+          'type' => TType::STRING,
+          ),
+        12 => array(
+          'var' => 'tableType',
+          'type' => TType::STRING,
+          ),
+        13 => array(
+          'var' => 'privileges',
+          'type' => TType::STRUCT,
+          'class' => '\metastore\PrincipalPrivilegeSet',
+          ),
+        14 => array(
+          'var' => 'temporary',
+          'type' => TType::BOOL,
+          ),
+        15 => array(
+          'var' => 'rewriteEnabled',
+          'type' => TType::BOOL,
+          ),
+        16 => array(
+          'var' => 'creationMetadata',
+          'type' => TType::STRUCT,
+          'class' => '\metastore\CreationMetadata',
+          ),
+        17 => array(
+          'var' => 'catName',
+          'type' => TType::STRING,
+          ),
+        18 => array(
+          'var' => 'ownerType',
+          'type' => TType::I32,
+          ),
+        19 => array(
+          'var' => 'writeId',
+          'type' => TType::I64,
+          ),
+        20 => array(
+          'var' => 'isStatsCompliant',
+          'type' => TType::BOOL,
+          ),
+        21 => array(
+          'var' => 'colStats',
+          'type' => TType::STRUCT,
+          'class' => '\metastore\ColumnStatistics',
+          ),
+        22 => array(
+          'var' => 'accessType',
+          'type' => TType::BYTE,
+          ),
+        23 => array(
+          'var' => 'requiredReadCapabilities',
+          'type' => TType::LST,
+          'etype' => TType::STRING,
+          'elem' => array(
+            'type' => TType::STRING,
+            ),
+          ),
+        24 => array(
+          'var' => 'requiredWriteCapabilities',
+          'type' => TType::LST,
+          'etype' => TType::STRING,
+          'elem' => array(
+            'type' => TType::STRING,
+            ),
+          ),
+        25 => array(
+          'var' => 'id',
+          'type' => TType::I64,
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['tableName'])) {
+        $this->tableName = $vals['tableName'];
+      }
+      if (isset($vals['dbName'])) {
+        $this->dbName = $vals['dbName'];
+      }
+      if (isset($vals['owner'])) {
+        $this->owner = $vals['owner'];
+      }
+      if (isset($vals['createTime'])) {
+        $this->createTime = $vals['createTime'];
+      }
+      if (isset($vals['lastAccessTime'])) {
+        $this->lastAccessTime = $vals['lastAccessTime'];
+      }
+      if (isset($vals['retention'])) {
+        $this->retention = $vals['retention'];
+      }
+      if (isset($vals['sd'])) {
+        $this->sd = $vals['sd'];
+      }
+      if (isset($vals['partitionKeys'])) {
+        $this->partitionKeys = $vals['partitionKeys'];
+      }
+      if (isset($vals['parameters'])) {
+        $this->parameters = $vals['parameters'];
+      }
+      if (isset($vals['viewOriginalText'])) {
+        $this->viewOriginalText = $vals['viewOriginalText'];
+      }
+      if (isset($vals['viewExpandedText'])) {
+        $this->viewExpandedText = $vals['viewExpandedText'];
+      }
+      if (isset($vals['tableType'])) {
+        $this->tableType = $vals['tableType'];
+      }
+      if (isset($vals['privileges'])) {
+        $this->privileges = $vals['privileges'];
+      }
+      if (isset($vals['temporary'])) {
+        $this->temporary = $vals['temporary'];
+      }
+      if (isset($vals['rewriteEnabled'])) {
+        $this->rewriteEnabled = $vals['rewriteEnabled'];
+      }
+      if (isset($vals['creationMetadata'])) {
+        $this->creationMetadata = $vals['creationMetadata'];
+      }
+      if (isset($vals['catName'])) {
+        $this->catName = $vals['catName'];
+      }
+      if (isset($vals['ownerType'])) {
+        $this->ownerType = $vals['ownerType'];
+      }
+      if (isset($vals['writeId'])) {
+        $this->writeId = $vals['writeId'];
+      }
+      if (isset($vals['isStatsCompliant'])) {
+        $this->isStatsCompliant = $vals['isStatsCompliant'];
+      }
+      if (isset($vals['colStats'])) {
+        $this->colStats = $vals['colStats'];
+      }
+      if (isset($vals['accessType'])) {
+        $this->accessType = $vals['accessType'];
+      }
+      if (isset($vals['requiredReadCapabilities'])) {
+        $this->requiredReadCapabilities = $vals['requiredReadCapabilities'];
+      }
+      if (isset($vals['requiredWriteCapabilities'])) {
+        $this->requiredWriteCapabilities = $vals['requiredWriteCapabilities'];
+      }
+      if (isset($vals['id'])) {
+        $this->id = $vals['id'];
+      }
+    }
+  }
+
+  public function getName() {
+    return 'Table';
   }
 
   public function read($input)
@@ -9795,290 +9686,224 @@ class DateColumnStatsData {
       switch ($fid)
       {
         case 1:
-          if ($ftype == TType::STRUCT) {
-            $this->lowValue = new \metastore\Date();
-            $xfer += $this->lowValue->read($input);
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->tableName);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 2:
-          if ($ftype == TType::STRUCT) {
-            $this->highValue = new \metastore\Date();
-            $xfer += $this->highValue->read($input);
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->dbName);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 3:
-          if ($ftype == TType::I64) {
-            $xfer += $input->readI64($this->numNulls);
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->owner);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 4:
-          if ($ftype == TType::I64) {
-            $xfer += $input->readI64($this->numDVs);
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->createTime);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 5:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->lastAccessTime);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 6:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->retention);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 7:
+          if ($ftype == TType::STRUCT) {
+            $this->sd = new \metastore\StorageDescriptor();
+            $xfer += $this->sd->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 8:
+          if ($ftype == TType::LST) {
+            $this->partitionKeys = array();
+            $_size197 = 0;
+            $_etype200 = 0;
+            $xfer += $input->readListBegin($_etype200, $_size197);
+            for ($_i201 = 0; $_i201 < $_size197; ++$_i201)
+            {
+              $elem202 = null;
+              $elem202 = new \metastore\FieldSchema();
+              $xfer += $elem202->read($input);
+              $this->partitionKeys []= $elem202;
+            }
+            $xfer += $input->readListEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 9:
+          if ($ftype == TType::MAP) {
+            $this->parameters = array();
+            $_size203 = 0;
+            $_ktype204 = 0;
+            $_vtype205 = 0;
+            $xfer += $input->readMapBegin($_ktype204, $_vtype205, $_size203);
+            for ($_i207 = 0; $_i207 < $_size203; ++$_i207)
+            {
+              $key208 = '';
+              $val209 = '';
+              $xfer += $input->readString($key208);
+              $xfer += $input->readString($val209);
+              $this->parameters[$key208] = $val209;
+            }
+            $xfer += $input->readMapEnd();
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 10:
           if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->bitVectors);
+            $xfer += $input->readString($this->viewOriginalText);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        default:
-          $xfer += $input->skip($ftype);
+        case 11:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->viewExpandedText);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
           break;
-      }
-      $xfer += $input->readFieldEnd();
-    }
-    $xfer += $input->readStructEnd();
-    return $xfer;
-  }
-
-  public function write($output) {
-    $xfer = 0;
-    $xfer += $output->writeStructBegin('DateColumnStatsData');
-    if ($this->lowValue !== null) {
-      if (!is_object($this->lowValue)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('lowValue', TType::STRUCT, 1);
-      $xfer += $this->lowValue->write($output);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->highValue !== null) {
-      if (!is_object($this->highValue)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('highValue', TType::STRUCT, 2);
-      $xfer += $this->highValue->write($output);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->numNulls !== null) {
-      $xfer += $output->writeFieldBegin('numNulls', TType::I64, 3);
-      $xfer += $output->writeI64($this->numNulls);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->numDVs !== null) {
-      $xfer += $output->writeFieldBegin('numDVs', TType::I64, 4);
-      $xfer += $output->writeI64($this->numDVs);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->bitVectors !== null) {
-      $xfer += $output->writeFieldBegin('bitVectors', TType::STRING, 5);
-      $xfer += $output->writeString($this->bitVectors);
-      $xfer += $output->writeFieldEnd();
-    }
-    $xfer += $output->writeFieldStop();
-    $xfer += $output->writeStructEnd();
-    return $xfer;
-  }
-
-}
-
-class Timestamp {
-  static $_TSPEC;
-
-  /**
-   * @var int
-   */
-  public $secondsSinceEpoch = null;
-
-  public function __construct($vals=null) {
-    if (!isset(self::$_TSPEC)) {
-      self::$_TSPEC = array(
-        1 => array(
-          'var' => 'secondsSinceEpoch',
-          'type' => TType::I64,
-          ),
-        );
-    }
-    if (is_array($vals)) {
-      if (isset($vals['secondsSinceEpoch'])) {
-        $this->secondsSinceEpoch = $vals['secondsSinceEpoch'];
-      }
-    }
-  }
-
-  public function getName() {
-    return 'Timestamp';
-  }
-
-  public function read($input)
-  {
-    $xfer = 0;
-    $fname = null;
-    $ftype = 0;
-    $fid = 0;
-    $xfer += $input->readStructBegin($fname);
-    while (true)
-    {
-      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
-      if ($ftype == TType::STOP) {
-        break;
-      }
-      switch ($fid)
-      {
-        case 1:
+        case 12:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->tableType);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 13:
+          if ($ftype == TType::STRUCT) {
+            $this->privileges = new \metastore\PrincipalPrivilegeSet();
+            $xfer += $this->privileges->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 14:
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->temporary);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 15:
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->rewriteEnabled);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 16:
+          if ($ftype == TType::STRUCT) {
+            $this->creationMetadata = new \metastore\CreationMetadata();
+            $xfer += $this->creationMetadata->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 17:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->catName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 18:
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->ownerType);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 19:
           if ($ftype == TType::I64) {
-            $xfer += $input->readI64($this->secondsSinceEpoch);
+            $xfer += $input->readI64($this->writeId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 20:
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->isStatsCompliant);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        default:
-          $xfer += $input->skip($ftype);
-          break;
-      }
-      $xfer += $input->readFieldEnd();
-    }
-    $xfer += $input->readStructEnd();
-    return $xfer;
-  }
-
-  public function write($output) {
-    $xfer = 0;
-    $xfer += $output->writeStructBegin('Timestamp');
-    if ($this->secondsSinceEpoch !== null) {
-      $xfer += $output->writeFieldBegin('secondsSinceEpoch', TType::I64, 1);
-      $xfer += $output->writeI64($this->secondsSinceEpoch);
-      $xfer += $output->writeFieldEnd();
-    }
-    $xfer += $output->writeFieldStop();
-    $xfer += $output->writeStructEnd();
-    return $xfer;
-  }
-
-}
-
-class TimestampColumnStatsData {
-  static $_TSPEC;
-
-  /**
-   * @var \metastore\Timestamp
-   */
-  public $lowValue = null;
-  /**
-   * @var \metastore\Timestamp
-   */
-  public $highValue = null;
-  /**
-   * @var int
-   */
-  public $numNulls = null;
-  /**
-   * @var int
-   */
-  public $numDVs = null;
-  /**
-   * @var string
-   */
-  public $bitVectors = null;
-
-  public function __construct($vals=null) {
-    if (!isset(self::$_TSPEC)) {
-      self::$_TSPEC = array(
-        1 => array(
-          'var' => 'lowValue',
-          'type' => TType::STRUCT,
-          'class' => '\metastore\Timestamp',
-          ),
-        2 => array(
-          'var' => 'highValue',
-          'type' => TType::STRUCT,
-          'class' => '\metastore\Timestamp',
-          ),
-        3 => array(
-          'var' => 'numNulls',
-          'type' => TType::I64,
-          ),
-        4 => array(
-          'var' => 'numDVs',
-          'type' => TType::I64,
-          ),
-        5 => array(
-          'var' => 'bitVectors',
-          'type' => TType::STRING,
-          ),
-        );
-    }
-    if (is_array($vals)) {
-      if (isset($vals['lowValue'])) {
-        $this->lowValue = $vals['lowValue'];
-      }
-      if (isset($vals['highValue'])) {
-        $this->highValue = $vals['highValue'];
-      }
-      if (isset($vals['numNulls'])) {
-        $this->numNulls = $vals['numNulls'];
-      }
-      if (isset($vals['numDVs'])) {
-        $this->numDVs = $vals['numDVs'];
-      }
-      if (isset($vals['bitVectors'])) {
-        $this->bitVectors = $vals['bitVectors'];
-      }
-    }
-  }
-
-  public function getName() {
-    return 'TimestampColumnStatsData';
-  }
-
-  public function read($input)
-  {
-    $xfer = 0;
-    $fname = null;
-    $ftype = 0;
-    $fid = 0;
-    $xfer += $input->readStructBegin($fname);
-    while (true)
-    {
-      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
-      if ($ftype == TType::STOP) {
-        break;
-      }
-      switch ($fid)
-      {
-        case 1:
+        case 21:
           if ($ftype == TType::STRUCT) {
-            $this->lowValue = new \metastore\Timestamp();
-            $xfer += $this->lowValue->read($input);
+            $this->colStats = new \metastore\ColumnStatistics();
+            $xfer += $this->colStats->read($input);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 2:
-          if ($ftype == TType::STRUCT) {
-            $this->highValue = new \metastore\Timestamp();
-            $xfer += $this->highValue->read($input);
+        case 22:
+          if ($ftype == TType::BYTE) {
+            $xfer += $input->readByte($this->accessType);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 3:
-          if ($ftype == TType::I64) {
-            $xfer += $input->readI64($this->numNulls);
+        case 23:
+          if ($ftype == TType::LST) {
+            $this->requiredReadCapabilities = array();
+            $_size210 = 0;
+            $_etype213 = 0;
+            $xfer += $input->readListBegin($_etype213, $_size210);
+            for ($_i214 = 0; $_i214 < $_size210; ++$_i214)
+            {
+              $elem215 = null;
+              $xfer += $input->readString($elem215);
+              $this->requiredReadCapabilities []= $elem215;
+            }
+            $xfer += $input->readListEnd();
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 4:
-          if ($ftype == TType::I64) {
-            $xfer += $input->readI64($this->numDVs);
+        case 24:
+          if ($ftype == TType::LST) {
+            $this->requiredWriteCapabilities = array();
+            $_size216 = 0;
+            $_etype219 = 0;
+            $xfer += $input->readListBegin($_etype219, $_size216);
+            for ($_i220 = 0; $_i220 < $_size216; ++$_i220)
+            {
+              $elem221 = null;
+              $xfer += $input->readString($elem221);
+              $this->requiredWriteCapabilities []= $elem221;
+            }
+            $xfer += $input->readListEnd();
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 5:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->bitVectors);
+        case 25:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->id);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -10089,42 +9914,197 @@ class TimestampColumnStatsData {
       }
       $xfer += $input->readFieldEnd();
     }
-    $xfer += $input->readStructEnd();
-    return $xfer;
-  }
-
-  public function write($output) {
-    $xfer = 0;
-    $xfer += $output->writeStructBegin('TimestampColumnStatsData');
-    if ($this->lowValue !== null) {
-      if (!is_object($this->lowValue)) {
+    $xfer += $input->readStructEnd();
+    return $xfer;
+  }
+
+  public function write($output) {
+    $xfer = 0;
+    $xfer += $output->writeStructBegin('Table');
+    if ($this->tableName !== null) {
+      $xfer += $output->writeFieldBegin('tableName', TType::STRING, 1);
+      $xfer += $output->writeString($this->tableName);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->dbName !== null) {
+      $xfer += $output->writeFieldBegin('dbName', TType::STRING, 2);
+      $xfer += $output->writeString($this->dbName);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->owner !== null) {
+      $xfer += $output->writeFieldBegin('owner', TType::STRING, 3);
+      $xfer += $output->writeString($this->owner);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->createTime !== null) {
+      $xfer += $output->writeFieldBegin('createTime', TType::I32, 4);
+      $xfer += $output->writeI32($this->createTime);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->lastAccessTime !== null) {
+      $xfer += $output->writeFieldBegin('lastAccessTime', TType::I32, 5);
+      $xfer += $output->writeI32($this->lastAccessTime);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->retention !== null) {
+      $xfer += $output->writeFieldBegin('retention', TType::I32, 6);
+      $xfer += $output->writeI32($this->retention);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->sd !== null) {
+      if (!is_object($this->sd)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('sd', TType::STRUCT, 7);
+      $xfer += $this->sd->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->partitionKeys !== null) {
+      if (!is_array($this->partitionKeys)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('partitionKeys', TType::LST, 8);
+      {
+        $output->writeListBegin(TType::STRUCT, count($this->partitionKeys));
+        {
+          foreach ($this->partitionKeys as $iter222)
+          {
+            $xfer += $iter222->write($output);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->parameters !== null) {
+      if (!is_array($this->parameters)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('parameters', TType::MAP, 9);
+      {
+        $output->writeMapBegin(TType::STRING, TType::STRING, count($this->parameters));
+        {
+          foreach ($this->parameters as $kiter223 => $viter224)
+          {
+            $xfer += $output->writeString($kiter223);
+            $xfer += $output->writeString($viter224);
+          }
+        }
+        $output->writeMapEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->viewOriginalText !== null) {
+      $xfer += $output->writeFieldBegin('viewOriginalText', TType::STRING, 10);
+      $xfer += $output->writeString($this->viewOriginalText);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->viewExpandedText !== null) {
+      $xfer += $output->writeFieldBegin('viewExpandedText', TType::STRING, 11);
+      $xfer += $output->writeString($this->viewExpandedText);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->tableType !== null) {
+      $xfer += $output->writeFieldBegin('tableType', TType::STRING, 12);
+      $xfer += $output->writeString($this->tableType);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->privileges !== null) {
+      if (!is_object($this->privileges)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('privileges', TType::STRUCT, 13);
+      $xfer += $this->privileges->write($output);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->temporary !== null) {
+      $xfer += $output->writeFieldBegin('temporary', TType::BOOL, 14);
+      $xfer += $output->writeBool($this->temporary);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->rewriteEnabled !== null) {
+      $xfer += $output->writeFieldBegin('rewriteEnabled', TType::BOOL, 15);
+      $xfer += $output->writeBool($this->rewriteEnabled);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->creationMetadata !== null) {
+      if (!is_object($this->creationMetadata)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('lowValue', TType::STRUCT, 1);
-      $xfer += $this->lowValue->write($output);
+      $xfer += $output->writeFieldBegin('creationMetadata', TType::STRUCT, 16);
+      $xfer += $this->creationMetadata->write($output);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->highValue !== null) {
-      if (!is_object($this->highValue)) {
+    if ($this->catName !== null) {
+      $xfer += $output->writeFieldBegin('catName', TType::STRING, 17);
+      $xfer += $output->writeString($this->catName);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->ownerType !== null) {
+      $xfer += $output->writeFieldBegin('ownerType', TType::I32, 18);
+      $xfer += $output->writeI32($this->ownerType);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->writeId !== null) {
+      $xfer += $output->writeFieldBegin('writeId', TType::I64, 19);
+      $xfer += $output->writeI64($this->writeId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->isStatsCompliant !== null) {
+      $xfer += $output->writeFieldBegin('isStatsCompliant', TType::BOOL, 20);
+      $xfer += $output->writeBool($this->isStatsCompliant);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->colStats !== null) {
+      if (!is_object($this->colStats)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('highValue', TType::STRUCT, 2);
-      $xfer += $this->highValue->write($output);
+      $xfer += $output->writeFieldBegin('colStats', TType::STRUCT, 21);
+      $xfer += $this->colStats->write($output);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->numNulls !== null) {
-      $xfer += $output->writeFieldBegin('numNulls', TType::I64, 3);
-      $xfer += $output->writeI64($this->numNulls);
+    if ($this->accessType !== null) {
+      $xfer += $output->writeFieldBegin('accessType', TType::BYTE, 22);
+      $xfer += $output->writeByte($this->accessType);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->numDVs !== null) {
-      $xfer += $output->writeFieldBegin('numDVs', TType::I64, 4);
-      $xfer += $output->writeI64($this->numDVs);
+    if ($this->requiredReadCapabilities !== null) {
+      if (!is_array($this->requiredReadCapabilities)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('requiredReadCapabilities', TType::LST, 23);
+      {
+        $output->writeListBegin(TType::STRING, count($this->requiredReadCapabilities));
+        {
+          foreach ($this->requiredReadCapabilities as $iter225)
+          {
+            $xfer += $output->writeString($iter225);
+          }
+        }
+        $output->writeListEnd();
+      }
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->bitVectors !== null) {
-      $xfer += $output->writeFieldBegin('bitVectors', TType::STRING, 5);
-      $xfer += $output->writeString($this->bitVectors);
+    if ($this->requiredWriteCapabilities !== null) {
+      if (!is_array($this->requiredWriteCapabilities)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('requiredWriteCapabilities', TType::LST, 24);
+      {
+        $output->writeListBegin(TType::STRING, count($this->requiredWriteCapabilities));
+        {
+          foreach ($this->requiredWriteCapabilities as $iter226)
+          {
+            $xfer += $output->writeString($iter226);
+          }
+        }
+        $output->writeListEnd();
+      }
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->id !== null) {
+      $xfer += $output->writeFieldBegin('id', TType::I64, 25);
+      $xfer += $output->writeI64($this->id);
       $xfer += $output->writeFieldEnd();
     }
     $xfer += $output->writeFieldStop();
@@ -10134,117 +10114,168 @@ class TimestampColumnStatsData {
 
 }
 
-class ColumnStatisticsData {
+class Partition {
   static $_TSPEC;
 
   /**
-   * @var \metastore\BooleanColumnStatsData
+   * @var string[]
    */
-  public $booleanStats = null;
+  public $values = null;
   /**
-   * @var \metastore\LongColumnStatsData
+   * @var string
    */
-  public $longStats = null;
+  public $dbName = null;
   /**
-   * @var \metastore\DoubleColumnStatsData
+   * @var string
    */
-  public $doubleStats = null;
+  public $tableName = null;
   /**
-   * @var \metastore\StringColumnStatsData
+   * @var int
    */
-  public $stringStats = null;
+  public $createTime = null;
   /**
-   * @var \metastore\BinaryColumnStatsData
+   * @var int
    */
-  public $binaryStats = null;
+  public $lastAccessTime = null;
   /**
-   * @var \metastore\DecimalColumnStatsData
+   * @var \metastore\StorageDescriptor
    */
-  public $decimalStats = null;
+  public $sd = null;
   /**
-   * @var \metastore\DateColumnStatsData
+   * @var array
    */
-  public $dateStats = null;
+  public $parameters = null;
   /**
-   * @var \metastore\TimestampColumnStatsData
+   * @var \metastore\PrincipalPrivilegeSet
    */
-  public $timestampStats = null;
+  public $privileges = null;
+  /**
+   * @var string
+   */
+  public $catName = null;
+  /**
+   * @var int
+   */
+  public $writeId = -1;
+  /**
+   * @var bool
+   */
+  public $isStatsCompliant = null;
+  /**
+   * @var \metastore\ColumnStatistics
+   */
+  public $colStats = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
       self::$_TSPEC = array(
         1 => array(
-          'var' => 'booleanStats',
-          'type' => TType::STRUCT,
-          'class' => '\metastore\BooleanColumnStatsData',
+          'var' => 'values',
+          'type' => TType::LST,
+          'etype' => TType::STRING,
+          'elem' => array(
+            'type' => TType::STRING,
+            ),
           ),
         2 => array(
-          'var' => 'longStats',
-          'type' => TType::STRUCT,
-          'class' => '\metastore\LongColumnStatsData',
+          'var' => 'dbName',
+          'type' => TType::STRING,
           ),
         3 => array(
-          'var' => 'doubleStats',
-          'type' => TType::STRUCT,
-          'class' => '\metastore\DoubleColumnStatsData',
+          'var' => 'tableName',
+          'type' => TType::STRING,
           ),
         4 => array(
-          'var' => 'stringStats',
-          'type' => TType::STRUCT,
-          'class' => '\metastore\StringColumnStatsData',
+          'var' => 'createTime',
+          'type' => TType::I32,
           ),
         5 => array(
-          'var' => 'binaryStats',
-          'type' => TType::STRUCT,
-          'class' => '\metastore\BinaryColumnStatsData',
+          'var' => 'lastAccessTime',
+          'type' => TType::I32,
           ),
         6 => array(
-          'var' => 'decimalStats',
+          'var' => 'sd',
           'type' => TType::STRUCT,
-          'class' => '\metastore\DecimalColumnStatsData',
+          'class' => '\metastore\StorageDescriptor',
           ),
         7 => array(
-          'var' => 'dateStats',
-          'type' => TType::STRUCT,
-          'class' => '\metastore\DateColumnStatsData',
+          'var' => 'parameters',
+          'type' => TType::MAP,
+          'ktype' => TType::STRING,
+          'vtype' => TType::STRING,
+          'key' => array(
+            'type' => TType::STRING,
+          ),
+          'val' => array(
+            'type' => TType::STRING,
+            ),
           ),
         8 => array(
-          'var' => 'timestampStats',
+          'var' => 'privileges',
           'type' => TType::STRUCT,
-          'class' => '\metastore\TimestampColumnStatsData',
+          'class' => '\metastore\PrincipalPrivilegeSet',
+          ),
+        9 => array(
+          'var' => 'catName',
+          'type' => TType::STRING,
+          ),
+        10 => array(
+          'var' => 'writeId',
+          'type' => TType::I64,
+          ),
+        11 => array(
+          'var' => 'isStatsCompliant',
+          'type' => TType::BOOL,
+          ),
+        12 => array(
+          'var' => 'colStats',
+          'type' => TType::STRUCT,
+          'class' => '\metastore\ColumnStatistics',
           ),
         );
     }
     if (is_array($vals)) {
-      if (isset($vals['booleanStats'])) {
-        $this->booleanStats = $vals['booleanStats'];
+      if (isset($vals['values'])) {
+        $this->values = $vals['values'];
       }
-      if (isset($vals['longStats'])) {
-        $this->longStats = $vals['longStats'];
+      if (isset($vals['dbName'])) {
+        $this->dbName = $vals['dbName'];
       }
-      if (isset($vals['doubleStats'])) {
-        $this->doubleStats = $vals['doubleStats'];
+      if (isset($vals['tableName'])) {
+        $this->tableName = $vals['tableName'];
       }
-      if (isset($vals['stringStats'])) {
-        $this->stringStats = $vals['stringStats'];
+      if (isset($vals['createTime'])) {
+        $this->createTime = $vals['createTime'];
       }
-      if (isset($vals['binaryStats'])) {
-        $this->binaryStats = $vals['binaryStats'];
+      if (isset($vals['lastAccessTime'])) {
+        $this->lastAccessTime = $vals['lastAccessTime'];
       }
-      if (isset($vals['decimalStats'])) {
-        $this->decimalStats = $vals['decimalStats'];
+      if (isset($vals['sd'])) {
+        $this->sd = $vals['sd'];
       }
-      if (isset($vals['dateStats'])) {
-        $this->dateStats = $vals['dateStats'];
+      if (isset($vals['parameters'])) {
+        $this->parameters = $vals['parameters'];
       }
-      if (isset($vals['timestampStats'])) {
-        $this->timestampStats = $vals['timestampStats'];
+      if (isset($vals['privileges'])) {
+        $this->privileges = $vals['privileges'];
+      }
+      if (isset($vals['catName'])) {
+        $this->catName = $vals['catName'];
+      }
+      if (isset($vals['writeId'])) {
+        $this->writeId = $vals['writeId'];
+      }
+      if (isset($vals['isStatsCompliant'])) {
+        $this->isStatsCompliant = $vals['isStatsCompliant'];
+      }
+      if (isset($vals['colStats'])) {
+        $this->colStats = $vals['colStats'];
       }
     }
   }
 
   public function getName() {
-    return 'ColumnStatisticsData';
+    return 'Partition';
   }
 
   public function read($input)
@@ -10263,65 +10294,111 @@ class ColumnStatisticsData {
       switch ($fid)
       {
         case 1:
-          if ($ftype == TType::STRUCT) {
-            $this->booleanStats = new \metastore\BooleanColumnStatsData();
-            $xfer += $this->booleanStats->read($input);
+          if ($ftype == TType::LST) {
+            $this->values = array();
+            $_size227 = 0;
+            $_etype230 = 0;
+            $xfer += $input->readListBegin($_etype230, $_size227);
+            for ($_i231 = 0; $_i231 < $_size227; ++$_i231)
+            {
+              $elem232 = null;
+              $xfer += $input->readString($elem232);
+              $this->values []= $elem232;
+            }
+            $xfer += $input->readListEnd();
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 2:
-          if ($ftype == TType::STRUCT) {
-            $this->longStats = new \metastore\LongColumnStatsData();
-            $xfer += $this->longStats->read($input);
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->dbName);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 3:
-          if ($ftype == TType::STRUCT) {
-            $this->doubleStats = new \metastore\DoubleColumnStatsData();
-            $xfer += $this->doubleStats->read($input);
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->tableName);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 4:
-          if ($ftype == TType::STRUCT) {
-            $this->stringStats = new \metastore\StringColumnStatsData();
-            $xfer += $this->stringStats->read($input);
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->createTime);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 5:
-          if ($ftype == TType::STRUCT) {
-            $this->binaryStats = new \metastore\BinaryColumnStatsData();
-            $xfer += $this->binaryStats->read($input);
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->lastAccessTime);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 6:
           if ($ftype == TType::STRUCT) {
-            $this->decimalStats = new \metastore\DecimalColumnStatsData();
-            $xfer += $this->decimalStats->read($input);
+            $this->sd = new \metastore\StorageDescriptor();
+            $xfer += $this->sd->read($input);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 7:
-          if ($ftype == TType::STRUCT) {
-            $this->dateStats = new \metastore\DateColumnStatsData();
-            $xfer += $this->dateStats->read($input);
+          if ($ftype == TType::MAP) {
+            $this->parameters = array();
+            $_size233 = 0;
+            $_ktype234 = 0;
+            $_vtype235 = 0;
+            $xfer += $input->readMapBegin($_ktype234, $_vtype235, $_size233);
+            for ($_i237 = 0; $_i237 < $_size233; ++$_i237)
+            {
+              $key238 = '';
+              $val239 = '';
+              $xfer += $input->readString($key238);
+              $xfer += $input->readString($val239);
+              $this->parameters[$key238] = $val239;
+            }
+            $xfer += $input->readMapEnd();
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 8:
           if ($ftype == TType::STRUCT) {
-            $this->timestampStats = new \metastore\TimestampColumnStatsData();
-            $xfer += $this->timestampStats->read($input);
+            $this->privileges = new \metastore\PrincipalPrivilegeSet();
+            $xfer += $this->privileges->read($input);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 9:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->catName);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 10:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->writeId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 11:
+          if ($ftype == TType::BOOL) {
+            $xfer += $input->readBool($this->isStatsCompliant);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 12:
+          if ($ftype == TType::STRUCT) {
+            $this->colStats = new \metastore\ColumnStatistics();
+            $xfer += $this->colStats->read($input);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -10338,195 +10415,99 @@ class ColumnStatisticsData {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('ColumnStatisticsData');
-    if ($this->booleanStats !== null) {
-      if (!is_object($this->booleanStats)) {
+    $xfer += $output->writeStructBegin('Partition');
+    if ($this->values !== null) {
+      if (!is_array($this->values)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('booleanStats', TType::STRUCT, 1);
-      $xfer += $this->booleanStats->write($output);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->longStats !== null) {
-      if (!is_object($this->longStats)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      $xfer += $output->writeFieldBegin('values', TType::LST, 1);
+      {
+        $output->writeListBegin(TType::STRING, count($this->values));
+        {
+          foreach ($this->values as $iter240)
+          {
+            $xfer += $output->writeString($iter240);
+          }
+        }
+        $output->writeListEnd();
       }
-      $xfer += $output->writeFieldBegin('longStats', TType::STRUCT, 2);
-      $xfer += $this->longStats->write($output);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->doubleStats !== null) {
-      if (!is_object($this->doubleStats)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('doubleStats', TType::STRUCT, 3);
-      $xfer += $this->doubleStats->write($output);
+    if ($this->dbName !== null) {
+      $xfer += $output->writeFieldBegin('dbName', TType::STRING, 2);
+      $xfer += $output->writeString($this->dbName);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->stringStats !== null) {
-      if (!is_object($this->stringStats)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('stringStats', TType::STRUCT, 4);
-      $xfer += $this->stringStats->write($output);
+    if ($this->tableName !== null) {
+      $xfer += $output->writeFieldBegin('tableName', TType::STRING, 3);
+      $xfer += $output->writeString($this->tableName);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->binaryStats !== null) {
-      if (!is_object($this->binaryStats)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('binaryStats', TType::STRUCT, 5);
-      $xfer += $this->binaryStats->write($output);
+    if ($this->createTime !== null) {
+      $xfer += $output->writeFieldBegin('createTime', TType::I32, 4);
+      $xfer += $output->writeI32($this->createTime);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->decimalStats !== null) {
-      if (!is_object($this->decimalStats)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('decimalStats', TType::STRUCT, 6);
-      $xfer += $this->decimalStats->write($output);
+    if ($this->lastAccessTime !== null) {
+      $xfer += $output->writeFieldBegin('lastAccessTime', TType::I32, 5);
+      $xfer += $output->writeI32($this->lastAccessTime);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->dateStats !== null) {
-      if (!is_object($this->dateStats)) {
+    if ($this->sd !== null) {
+      if (!is_object($this->sd)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('dateStats', TType::STRUCT, 7);
-      $xfer += $this->dateStats->write($output);
+      $xfer += $output->writeFieldBegin('sd', TType::STRUCT, 6);
+      $xfer += $this->sd->write($output);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->timestampStats !== null) {
-      if (!is_object($this->timestampStats)) {
+    if ($this->parameters !== null) {
+      if (!is_array($this->parameters)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('timestampStats', TType::STRUCT, 8);
-      $xfer += $this->timestampStats->write($output);
-      $xfer += $output->writeFieldEnd();
-    }
-    $xfer += $output->writeFieldStop();
-    $xfer += $output->writeStructEnd();
-    return $xfer;
-  }
-
-}
-
-class ColumnStatisticsObj {
-  static $_TSPEC;
-
-  /**
-   * @var string
-   */
-  public $colName = null;
-  /**
-   * @var string
-   */
-  public $colType = null;
-  /**
-   * @var \metastore\ColumnStatisticsData
-   */
-  public $statsData = null;
-
-  public function __construct($vals=null) {
-    if (!isset(self::$_TSPEC)) {
-      self::$_TSPEC = array(
-        1 => array(
-          'var' => 'colName',
-          'type' => TType::STRING,
-          ),
-        2 => array(
-          'var' => 'colType',
-          'type' => TType::STRING,
-          ),
-        3 => array(
-          'var' => 'statsData',
-          'type' => TType::STRUCT,
-          'class' => '\metastore\ColumnStatisticsData',
-          ),
-        );
-    }
-    if (is_array($vals)) {
-      if (isset($vals['colName'])) {
-        $this->colName = $vals['colName'];
-      }
-      if (isset($vals['colType'])) {
-        $this->colType = $vals['colType'];
-      }
-      if (isset($vals['statsData'])) {
-        $this->statsData = $vals['statsData'];
-      }
-    }
-  }
-
-  public function getName() {
-    return 'ColumnStatisticsObj';
-  }
-
-  public function read($input)
-  {
-    $xfer = 0;
-    $fname = null;
-    $ftype = 0;
-    $fid = 0;
-    $xfer += $input->readStructBegin($fname);
-    while (true)
-    {
-      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
-      if ($ftype == TType::STOP) {
-        break;
-      }
-      switch ($fid)
+      $xfer += $output->writeFieldBegin('parameters', TType::MAP, 7);
       {
-        case 1:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->colName);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 2:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->colType);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 3:
-          if ($ftype == TType::STRUCT) {
-            $this->statsData = new \metastore\ColumnStatisticsData();
-            $xfer += $this->statsData->read($input);
-          } else {
-            $xfer += $input->skip($ftype);
+        $output->writeMapBegin(TType::STRING, TType::STRING, count($this->parameters));
+        {
+          foreach ($this->parameters as $kiter241 => $viter242)
+          {
+            $xfer += $output->writeString($kiter241);
+            $xfer += $output->writeString($viter242);
           }
-          break;
-        default:
-          $xfer += $input->skip($ftype);
-          break;
+        }
+        $output->writeMapEnd();
       }
-      $xfer += $input->readFieldEnd();
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->privileges !== null) {
+      if (!is_object($this->privileges)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('privileges', TType::STRUCT, 8);
+      $xfer += $this->privileges->write($output);
+      $xfer += $output->writeFieldEnd();
     }
-    $xfer += $input->readStructEnd();
-    return $xfer;
-  }
-
-  public function write($output) {
-    $xfer = 0;
-    $xfer += $output->writeStructBegin('ColumnStatisticsObj');
-    if ($this->colName !== null) {
-      $xfer += $output->writeFieldBegin('colName', TType::STRING, 1);
-      $xfer += $output->writeString($this->colName);
+    if ($this->catName !== null) {
+      $xfer += $output->writeFieldBegin('catName', TType::STRING, 9);
+      $xfer += $output->writeString($this->catName);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->colType !== null) {
-      $xfer += $output->writeFieldBegin('colType', TType::STRING, 2);
-      $xfer += $output->writeString($this->colType);
+    if ($this->writeId !== null) {
+      $xfer += $output->writeFieldBegin('writeId', TType::I64, 10);
+      $xfer += $output->writeI64($this->writeId);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->statsData !== null) {
-      if (!is_object($this->statsData)) {
+    if ($this->isStatsCompliant !== null) {
+      $xfer += $output->writeFieldBegin('isStatsCompliant', TType::BOOL, 11);
+      $xfer += $output->writeBool($this->isStatsCompliant);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->colStats !== null) {
+      if (!is_object($this->colStats)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('statsData', TType::STRUCT, 3);
-      $xfer += $this->statsData->write($output);
+      $xfer += $output->writeFieldBegin('colStats', TType::STRUCT, 12);
+      $xfer += $this->colStats->write($output);
       $xfer += $output->writeFieldEnd();
     }
     $xfer += $output->writeFieldStop();
@@ -10536,87 +10517,100 @@ class ColumnStatisticsObj {
 
 }
 
-class ColumnStatisticsDesc {
+class PartitionWithoutSD {
   static $_TSPEC;
 
   /**
-   * @var bool
+   * @var string[]
    */
-  public $isTblLevel = null;
+  public $values = null;
   /**
-   * @var string
+   * @var int
    */
-  public $dbName = null;
+  public $createTime = null;
   /**
-   * @var string
+   * @var int
    */
-  public $tableName = null;
+  public $lastAccessTime = null;
   /**
    * @var string
    */
-  public $partName = null;
+  public $relativePath = null;
   /**
-   * @var int
+   * @var array
    */
-  public $lastAnalyzed = null;
+  public $parameters = null;
   /**
-   * @var string
+   * @var \metastore\PrincipalPrivilegeSet
    */
-  public $catName = null;
+  public $privileges = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
       self::$_TSPEC = array(
         1 => array(
-          'var' => 'isTblLevel',
-          'type' => TType::BOOL,
+          'var' => 'values',
+          'type' => TType::LST,
+          'etype' => TType::STRING,
+          'elem' => array(
+            'type' => TType::STRING,
+            ),
           ),
         2 => array(
-          'var' => 'dbName',
-          'type' => TType::STRING,
+          'var' => 'createTime',
+          'type' => TType::I32,
           ),
         3 => array(
-          'var' => 'tableName',
-          'type' => TType::STRING,
+          'var' => 'lastAccessTime',
+          'type' => TType::I32,
           ),
         4 => array(
-          'var' => 'partName',
+          'var' => 'relativePath',
           'type' => TType::STRING,
           ),
         5 => array(
-          'var' => 'lastAnalyzed',
-          'type' => TType::I64,
+          'var' => 'parameters',
+          'type' => TType::MAP,
+          'ktype' => TType::STRING,
+          'vtype' => TType::STRING,
+          'key' => array(
+            'type' => TType::STRING,
+          ),
+          'val' => array(
+            'type' => TType::STRING,
+            ),
           ),
         6 => array(
-          'var' => 'catName',
-          'type' => TType::STRING,
+          'var' => 'privileges',
+          'type' => TType::STRUCT,
+          'class' => '\metastore\PrincipalPrivilegeSet',
           ),
         );
     }
     if (is_array($vals)) {
-      if (isset($vals['isTblLevel'])) {
-        $this->isTblLevel = $vals['isTblLevel'];
+      if (isset($vals['values'])) {
+        $this->values = $vals['values'];
       }
-      if (isset($vals['dbName'])) {
-        $this->dbName = $vals['dbName'];
+      if (isset($vals['createTime'])) {
+        $this->createTime = $vals['createTime'];
       }
-      if (isset($vals['tableName'])) {
-        $this->tableName = $vals['tableName'];
+      if (isset($vals['lastAccessTime'])) {
+        $this->lastAccessTime = $vals['lastAccessTime'];
       }
-      if (isset($vals['partName'])) {
-        $this->partName = $vals['partName'];
+      if (isset($vals['relativePath'])) {
+        $this->relativePath = $vals['relativePath'];
       }
-      if (isset($vals['lastAnalyzed'])) {
-        $this->lastAnalyzed = $vals['lastAnalyzed'];
+      if (isset($vals['parameters'])) {
+        $this->parameters = $vals['parameters'];
       }
-      if (isset($vals['catName'])) {
-        $this->catName = $vals['catName'];
+      if (isset($vals['privileges'])) {
+        $this->privileges = $vals['privileges'];
       }
     }
   }
 
   public function getName() {
-    return 'ColumnStatisticsDesc';
+    return 'PartitionWithoutSD';
   }
 
   public function read($input)
@@ -10635,43 +10629,67 @@ class ColumnStatisticsDesc {
       switch ($fid)
       {
         case 1:
-          if ($ftype == TType::BOOL) {
-            $xfer += $input->readBool($this->isTblLevel);
+          if ($ftype == TType::LST) {
+            $this->values = array();
+            $_size243 = 0;
+            $_etype246 = 0;
+            $xfer += $input->readListBegin($_etype246, $_size243);
+            for ($_i247 = 0; $_i247 < $_size243; ++$_i247)
+            {
+              $elem248 = null;
+              $xfer += $input->readString($elem248);
+              $this->values []= $elem248;
+            }
+            $xfer += $input->readListEnd();
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 2:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->dbName);
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->createTime);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 3:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->tableName);
+          if ($ftype == TType::I32) {
+            $xfer += $input->readI32($this->lastAccessTime);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 4:
           if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->partName);
+            $xfer += $input->readString($this->relativePath);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 5:
-          if ($ftype == TType::I64) {
-            $xfer += $input->readI64($this->lastAnalyzed);
+          if ($ftype == TType::MAP) {
+            $this->parameters = array();
+            $_size249 = 0;
+            $_ktype250 = 0;
+            $_vtype251 = 0;
+            $xfer += $input->readMapBegin($_ktype250, $_vtype251, $_size249);
+            for ($_i253 = 0; $_i253 < $_size249; ++$_i253)
+            {
+              $key254 = '';
+              $val255 = '';
+              $xfer += $input->readString($key254);
+              $xfer += $input->readString($val255);
+              $this->parameters[$key254] = $val255;
+            }
+            $xfer += $input->readMapEnd();
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 6:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->catName);
+          if ($ftype == TType::STRUCT) {
+            $this->privileges = new \metastore\PrincipalPrivilegeSet();
+            $xfer += $this->privileges->read($input);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -10688,35 +10706,63 @@ class ColumnStatisticsDesc {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('ColumnStatisticsDesc');
-    if ($this->isTblLevel !== null) {
-      $xfer += $output->writeFieldBegin('isTblLevel', TType::BOOL, 1);
-      $xfer += $output->writeBool($this->isTblLevel);
+    $xfer += $output->writeStructBegin('PartitionWithoutSD');
+    if ($this->values !== null) {
+      if (!is_array($this->values)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('values', TType::LST, 1);
+      {
+        $output->writeListBegin(TType::STRING, count($this->values));
+        {
+          foreach ($this->values as $iter256)
+          {
+            $xfer += $output->writeString($iter256);
+          }
+        }
+        $output->writeListEnd();
+      }
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->dbName !== null) {
-      $xfer += $output->writeFieldBegin('dbName', TType::STRING, 2);
-      $xfer += $output->writeString($this->dbName);
+    if ($this->createTime !== null) {
+      $xfer += $output->writeFieldBegin('createTime', TType::I32, 2);
+      $xfer += $output->writeI32($this->createTime);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->tableName !== null) {
-      $xfer += $output->writeFieldBegin('tableName', TType::STRING, 3);
-      $xfer += $output->writeString($this->tableName);
+    if ($this->lastAccessTime !== null) {
+      $xfer += $output->writeFieldBegin('lastAccessTime', TType::I32, 3);
+      $xfer += $output->writeI32($this->lastAccessTime);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->partName !== null) {
-      $xfer += $output->writeFieldBegin('partName', TType::STRING, 4);
-      $xfer += $output->writeString($this->partName);
+    if ($this->relativePath !== null) {
+      $xfer += $output->writeFieldBegin('relativePath', TType::STRING, 4);
+      $xfer += $output->writeString($this->relativePath);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->lastAnalyzed !== null) {
-      $xfer += $output->writeFieldBegin('lastAnalyzed', TType::I64, 5);
-      $xfer += $output->writeI64($this->lastAnalyzed);
+    if ($this->parameters !== null) {
+      if (!is_array($this->parameters)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('parameters', TType::MAP, 5);
+      {
+        $output->writeMapBegin(TType::STRING, TType::STRING, count($this->parameters));
+        {
+          foreach ($this->parameters as $kiter257 => $viter258)
+          {
+            $xfer += $output->writeString($kiter257);
+            $xfer += $output->writeString($viter258);
+          }
+        }
+        $output->writeMapEnd();
+      }
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->catName !== null) {
-      $xfer += $output->writeFieldBegin('catName', TType::STRING, 6);
-      $xfer += $output->writeString($this->catName);
+    if ($this->privileges !== null) {
+      if (!is_object($this->privileges)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('privileges', TType::STRUCT, 6);
+      $xfer += $this->privileges->write($output);
       $xfer += $output->writeFieldEnd();
     }
     $xfer += $output->writeFieldStop();
@@ -10726,71 +10772,49 @@ class ColumnStatisticsDesc {
 
 }
 
-class ColumnStatistics {
+class PartitionSpecWithSharedSD {
   static $_TSPEC;
 
   /**
-   * @var \metastore\ColumnStatisticsDesc
-   */
-  public $statsDesc = null;
-  /**
-   * @var \metastore\ColumnStatisticsObj[]
-   */
-  public $statsObj = null;
-  /**
-   * @var bool
+   * @var \metastore\PartitionWithoutSD[]
    */
-  public $isStatsCompliant = null;
+  public $partitions = null;
   /**
-   * @var string
+   * @var \metastore\StorageDescriptor
    */
-  public $engine = null;
+  public $sd = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
       self::$_TSPEC = array(
         1 => array(
-          'var' => 'statsDesc',
-          'type' => TType::STRUCT,
-          'class' => '\metastore\ColumnStatisticsDesc',
-          ),
-        2 => array(
-          'var' => 'statsObj',
+          'var' => 'partitions',
           'type' => TType::LST,
           'etype' => TType::STRUCT,
           'elem' => array(
             'type' => TType::STRUCT,
-            'class' => '\metastore\ColumnStatisticsObj',
+            'class' => '\metastore\PartitionWithoutSD',
             ),
           ),
-        3 => array(
-          'var' => 'isStatsCompliant',
-          'type' => TType::BOOL,
-          ),
-        4 => array(
-          'var' => 'engine',
-          'type' => TType::STRING,
-          ),
-        );
-    }
-    if (is_array($vals)) {
-      if (isset($vals['statsDesc'])) {
-        $this->statsDesc = $vals['statsDesc'];
-      }
-      if (isset($vals['statsObj'])) {
-        $this->statsObj = $vals['statsObj'];
-      }
-      if (isset($vals['isStatsCompliant'])) {
-        $this->isStatsCompliant = $vals['isStatsCompliant'];
+        2 => array(
+          'var' => 'sd',
+          'type' => TType::STRUCT,
+          'class' => '\metastore\StorageDescriptor',
+          ),
+        );
+    }
+    if (is_array($vals)) {
+      if (isset($vals['partitions'])) {
+        $this->partitions = $vals['partitions'];
       }
-      if (isset($vals['engine'])) {
-        $this->engine = $vals['engine'];
+      if (isset($vals['sd'])) {
+        $this->sd = $vals['sd'];
       }
     }
   }
 
   public function getName() {
-    return 'ColumnStatistics';
+    return 'PartitionSpecWithSharedSD';
   }
 
   public function read($input)
@@ -10809,41 +10833,27 @@ class ColumnStatistics {
       switch ($fid)
       {
         case 1:
-          if ($ftype == TType::STRUCT) {
-            $this->statsDesc = new \metastore\ColumnStatisticsDesc();
-            $xfer += $this->statsDesc->read($input);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 2:
           if ($ftype == TType::LST) {
-            $this->statsObj = array();
+            $this->partitions = array();
             $_size259 = 0;
             $_etype262 = 0;
             $xfer += $input->readListBegin($_etype262, $_size259);
             for ($_i263 = 0; $_i263 < $_size259; ++$_i263)
             {
               $elem264 = null;
-              $elem264 = new \metastore\ColumnStatisticsObj();
+              $elem264 = new \metastore\PartitionWithoutSD();
               $xfer += $elem264->read($input);
-              $this->statsObj []= $elem264;
+              $this->partitions []= $elem264;
             }
             $xfer += $input->readListEnd();
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 3:
-          if ($ftype == TType::BOOL) {
-            $xfer += $input->readBool($this->isStatsCompliant);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 4:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->engine);
+        case 2:
+          if ($ftype == TType::STRUCT) {
+            $this->sd = new \metastore\StorageDescriptor();
+            $xfer += $this->sd->read($input);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -10860,24 +10870,16 @@ class ColumnStatistics {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('ColumnStatistics');
-    if ($this->statsDesc !== null) {
-      if (!is_object($this->statsDesc)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('statsDesc', TType::STRUCT, 1);
-      $xfer += $this->statsDesc->write($output);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->statsObj !== null) {
-      if (!is_array($this->statsObj)) {
+    $xfer += $output->writeStructBegin('PartitionSpecWithSharedSD');
+    if ($this->partitions !== null) {
+      if (!is_array($this->partitions)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('statsObj', TType::LST, 2);
+      $xfer += $output->writeFieldBegin('partitions', TType::LST, 1);
       {
-        $output->writeListBegin(TType::STRUCT, count($this->statsObj));
+        $output->writeListBegin(TType::STRUCT, count($this->partitions));
         {
-          foreach ($this->statsObj as $iter265)
+          foreach ($this->partitions as $iter265)
           {
             $xfer += $iter265->write($output);
           }
@@ -10886,14 +10888,12 @@ class ColumnStatistics {
       }
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->isStatsCompliant !== null) {
-      $xfer += $output->writeFieldBegin('isStatsCompliant', TType::BOOL, 3);
-      $xfer += $output->writeBool($this->isStatsCompliant);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->engine !== null) {
-      $xfer += $output->writeFieldBegin('engine', TType::STRING, 4);
-      $xfer += $output->writeString($this->engine);
+    if ($this->sd !== null) {
+      if (!is_object($this->sd)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('sd', TType::STRUCT, 2);
+      $xfer += $this->sd->write($output);
       $xfer += $output->writeFieldEnd();
     }
     $xfer += $output->writeFieldStop();
@@ -35259,66 +35259,43 @@ class ScheduledQueryPollRequest {
 
 }
 
-class ScheduledQueryPollResponse {
+class ScheduledQueryKey {
   static $_TSPEC;
 
   /**
-   * @var \metastore\ScheduledQueryKey
-   */
-  public $scheduleKey = null;
-  /**
-   * @var int
-   */
-  public $executionId = null;
-  /**
    * @var string
    */
-  public $query = null;
+  public $scheduleName = null;
   /**
    * @var string
    */
-  public $user = null;
+  public $clusterNamespace = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
       self::$_TSPEC = array(
         1 => array(
-          'var' => 'scheduleKey',
-          'type' => TType::STRUCT,
-          'class' => '\metastore\ScheduledQueryKey',
-          ),
-        2 => array(
-          'var' => 'executionId',
-          'type' => TType::I64,
-          ),
-        3 => array(
-          'var' => 'query',
+          'var' => 'scheduleName',
           'type' => TType::STRING,
           ),
-        4 => array(
-          'var' => 'user',
+        2 => array(
+          'var' => 'clusterNamespace',
           'type' => TType::STRING,
           ),
         );
     }
     if (is_array($vals)) {
-      if (isset($vals['scheduleKey'])) {
-        $this->scheduleKey = $vals['scheduleKey'];
-      }
-      if (isset($vals['executionId'])) {
-        $this->executionId = $vals['executionId'];
-      }
-      if (isset($vals['query'])) {
-        $this->query = $vals['query'];
+      if (isset($vals['scheduleName'])) {
+        $this->scheduleName = $vals['scheduleName'];
       }
-      if (isset($vals['user'])) {
-        $this->user = $vals['user'];
+      if (isset($vals['clusterNamespace'])) {
+        $this->clusterNamespace = $vals['clusterNamespace'];
       }
     }
   }
 
   public function getName() {
-    return 'ScheduledQueryPollResponse';
+    return 'ScheduledQueryKey';
   }
 
   public function read($input)
@@ -35337,30 +35314,15 @@ class ScheduledQueryPollResponse {
       switch ($fid)
       {
         case 1:
-          if ($ftype == TType::STRUCT) {
-            $this->scheduleKey = new \metastore\ScheduledQueryKey();
-            $xfer += $this->scheduleKey->read($input);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 2:
-          if ($ftype == TType::I64) {
-            $xfer += $input->readI64($this->executionId);
-          } else {
-            $xfer += $input->skip($ftype);
-          }
-          break;
-        case 3:
           if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->query);
+            $xfer += $input->readString($this->scheduleName);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
-        case 4:
+        case 2:
           if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->user);
+            $xfer += $input->readString($this->clusterNamespace);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -35377,28 +35339,15 @@ class ScheduledQueryPollResponse {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('ScheduledQueryPollResponse');
-    if ($this->scheduleKey !== null) {
-      if (!is_object($this->scheduleKey)) {
-        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
-      }
-      $xfer += $output->writeFieldBegin('scheduleKey', TType::STRUCT, 1);
-      $xfer += $this->scheduleKey->write($output);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->executionId !== null) {
-      $xfer += $output->writeFieldBegin('executionId', TType::I64, 2);
-      $xfer += $output->writeI64($this->executionId);
-      $xfer += $output->writeFieldEnd();
-    }
-    if ($this->query !== null) {
-      $xfer += $output->writeFieldBegin('query', TType::STRING, 3);
-      $xfer += $output->writeString($this->query);
+    $xfer += $output->writeStructBegin('ScheduledQueryKey');
+    if ($this->scheduleName !== null) {
+      $xfer += $output->writeFieldBegin('scheduleName', TType::STRING, 1);
+      $xfer += $output->writeString($this->scheduleName);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->user !== null) {
-      $xfer += $output->writeFieldBegin('user', TType::STRING, 4);
-      $xfer += $output->writeString($this->user);
+    if ($this->clusterNamespace !== null) {
+      $xfer += $output->writeFieldBegin('clusterNamespace', TType::STRING, 2);
+      $xfer += $output->writeString($this->clusterNamespace);
       $xfer += $output->writeFieldEnd();
     }
     $xfer += $output->writeFieldStop();
@@ -35408,43 +35357,66 @@ class ScheduledQueryPollResponse {
 
 }
 
-class ScheduledQueryKey {
+class ScheduledQueryPollResponse {
   static $_TSPEC;
 
   /**
+   * @var \metastore\ScheduledQueryKey
+   */
+  public $scheduleKey = null;
+  /**
+   * @var int
+   */
+  public $executionId = null;
+  /**
    * @var string
    */
-  public $scheduleName = null;
+  public $query = null;
   /**
    * @var string
    */
-  public $clusterNamespace = null;
+  public $user = null;
 
   public function __construct($vals=null) {
     if (!isset(self::$_TSPEC)) {
       self::$_TSPEC = array(
         1 => array(
-          'var' => 'scheduleName',
-          'type' => TType::STRING,
+          'var' => 'scheduleKey',
+          'type' => TType::STRUCT,
+          'class' => '\metastore\ScheduledQueryKey',
           ),
         2 => array(
-          'var' => 'clusterNamespace',
+          'var' => 'executionId',
+          'type' => TType::I64,
+          ),
+        3 => array(
+          'var' => 'query',
+          'type' => TType::STRING,
+          ),
+        4 => array(
+          'var' => 'user',
           'type' => TType::STRING,
           ),
         );
     }
     if (is_array($vals)) {
-      if (isset($vals['scheduleName'])) {
-        $this->scheduleName = $vals['scheduleName'];
+      if (isset($vals['scheduleKey'])) {
+        $this->scheduleKey = $vals['scheduleKey'];
       }
-      if (isset($vals['clusterNamespace'])) {
-        $this->clusterNamespace = $vals['clusterNamespace'];
+      if (isset($vals['executionId'])) {
+        $this->executionId = $vals['executionId'];
+      }
+      if (isset($vals['query'])) {
+        $this->query = $vals['query'];
+      }
+      if (isset($vals['user'])) {
+        $this->user = $vals['user'];
       }
     }
   }
 
   public function getName() {
-    return 'ScheduledQueryKey';
+    return 'ScheduledQueryPollResponse';
   }
 
   public function read($input)
@@ -35463,15 +35435,30 @@ class ScheduledQueryKey {
       switch ($fid)
       {
         case 1:
-          if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->scheduleName);
+          if ($ftype == TType::STRUCT) {
+            $this->scheduleKey = new \metastore\ScheduledQueryKey();
+            $xfer += $this->scheduleKey->read($input);
           } else {
             $xfer += $input->skip($ftype);
           }
           break;
         case 2:
+          if ($ftype == TType::I64) {
+            $xfer += $input->readI64($this->executionId);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 3:
           if ($ftype == TType::STRING) {
-            $xfer += $input->readString($this->clusterNamespace);
+            $xfer += $input->readString($this->query);
+          } else {
+            $xfer += $input->skip($ftype);
+          }
+          break;
+        case 4:
+          if ($ftype == TType::STRING) {
+            $xfer += $input->readString($this->user);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -35488,15 +35475,28 @@ class ScheduledQueryKey {
 
   public function write($output) {
     $xfer = 0;
-    $xfer += $output->writeStructBegin('ScheduledQueryKey');
-    if ($this->scheduleName !== null) {
-      $xfer += $output->writeFieldBegin('scheduleName', TType::STRING, 1);
-      $xfer += $output->writeString($this->scheduleName);
+    $xfer += $output->writeStructBegin('ScheduledQueryPollResponse');
+    if ($this->scheduleKey !== null) {
+      if (!is_object($this->scheduleKey)) {
+        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
+      }
+      $xfer += $output->writeFieldBegin('scheduleKey', TType::STRUCT, 1);
+      $xfer += $this->scheduleKey->write($output);
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->clusterNamespace !== null) {
-      $xfer += $output->writeFieldBegin('clusterNamespace', TType::STRING, 2);
-      $xfer += $output->writeString($this->clusterNamespace);
+    if ($this->executionId !== null) {
+      $xfer += $output->writeFieldBegin('executionId', TType::I64, 2);
+      $xfer += $output->writeI64($this->executionId);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->query !== null) {
+      $xfer += $output->writeFieldBegin('query', TType::STRING, 3);
+      $xfer += $output->writeString($this->query);
+      $xfer += $output->writeFieldEnd();
+    }
+    if ($this->user !== null) {
+      $xfer += $output->writeFieldBegin('user', TType::STRING, 4);
+      $xfer += $output->writeString($this->user);
       $xfer += $output->writeFieldEnd();
     }
     $xfer += $output->writeFieldStop();
diff --git a/standalone-metastore/metastore-common/src/gen/thrift/gen-py/hive_metastore/ttypes.py b/standalone-metastore/metastore-common/src/gen/thrift/gen-py/hive_metastore/ttypes.py
index 9ab129c..0dcca59 100644
--- a/standalone-metastore/metastore-common/src/gen/thrift/gen-py/hive_metastore/ttypes.py
+++ b/standalone-metastore/metastore-common/src/gen/thrift/gen-py/hive_metastore/ttypes.py
@@ -4970,91 +4970,28 @@ class CreationMetadata:
   def __ne__(self, other):
     return not (self == other)
 
-class Table:
+class BooleanColumnStatsData:
   """
   Attributes:
-   - tableName
-   - dbName
-   - owner
-   - createTime
-   - lastAccessTime
-   - retention
-   - sd
-   - partitionKeys
-   - parameters
-   - viewOriginalText
-   - viewExpandedText
-   - tableType
-   - privileges
-   - temporary
-   - rewriteEnabled
-   - creationMetadata
-   - catName
-   - ownerType
-   - writeId
-   - isStatsCompliant
-   - colStats
-   - accessType
-   - requiredReadCapabilities
-   - requiredWriteCapabilities
-   - id
+   - numTrues
+   - numFalses
+   - numNulls
+   - bitVectors
   """
 
   thrift_spec = (
     None, # 0
-    (1, TType.STRING, 'tableName', None, None, ), # 1
-    (2, TType.STRING, 'dbName', None, None, ), # 2
-    (3, TType.STRING, 'owner', None, None, ), # 3
-    (4, TType.I32, 'createTime', None, None, ), # 4
-    (5, TType.I32, 'lastAccessTime', None, None, ), # 5
-    (6, TType.I32, 'retention', None, None, ), # 6
-    (7, TType.STRUCT, 'sd', (StorageDescriptor, StorageDescriptor.thrift_spec), None, ), # 7
-    (8, TType.LIST, 'partitionKeys', (TType.STRUCT,(FieldSchema, FieldSchema.thrift_spec)), None, ), # 8
-    (9, TType.MAP, 'parameters', (TType.STRING,None,TType.STRING,None), None, ), # 9
-    (10, TType.STRING, 'viewOriginalText', None, None, ), # 10
-    (11, TType.STRING, 'viewExpandedText', None, None, ), # 11
-    (12, TType.STRING, 'tableType', None, None, ), # 12
-    (13, TType.STRUCT, 'privileges', (PrincipalPrivilegeSet, PrincipalPrivilegeSet.thrift_spec), None, ), # 13
-    (14, TType.BOOL, 'temporary', None, False, ), # 14
-    (15, TType.BOOL, 'rewriteEnabled', None, None, ), # 15
-    (16, TType.STRUCT, 'creationMetadata', (CreationMetadata, CreationMetadata.thrift_spec), None, ), # 16
-    (17, TType.STRING, 'catName', None, None, ), # 17
-    (18, TType.I32, 'ownerType', None,     1, ), # 18
-    (19, TType.I64, 'writeId', None, -1, ), # 19
-    (20, TType.BOOL, 'isStatsCompliant', None, None, ), # 20
-    (21, TType.STRUCT, 'colStats', (ColumnStatistics, ColumnStatistics.thrift_spec), None, ), # 21
-    (22, TType.BYTE, 'accessType', None, None, ), # 22
-    (23, TType.LIST, 'requiredReadCapabilities', (TType.STRING,None), None, ), # 23
-    (24, TType.LIST, 'requiredWriteCapabilities', (TType.STRING,None), None, ), # 24
-    (25, TType.I64, 'id', None, None, ), # 25
+    (1, TType.I64, 'numTrues', None, None, ), # 1
+    (2, TType.I64, 'numFalses', None, None, ), # 2
+    (3, TType.I64, 'numNulls', None, None, ), # 3
+    (4, TType.STRING, 'bitVectors', None, None, ), # 4
   )
 
-  def __init__(self, tableName=None, dbName=None, owner=None, createTime=None, lastAccessTime=None, retention=None, sd=None, partitionKeys=None, parameters=None, viewOriginalText=None, viewExpandedText=None, tableType=None, privileges=None, temporary=thrift_spec[14][4], rewriteEnabled=None, creationMetadata=None, catName=None, ownerType=thrift_spec[18][4], writeId=thrift_spec[19][4], isStatsCompliant=None, colStats=None, accessType=None, requiredReadCapabilities=None, requiredWriteCapabi [...]
-    self.tableName = tableName
-    self.dbName = dbName
-    self.owner = owner
-    self.createTime = createTime
-    self.lastAccessTime = lastAccessTime
-    self.retention = retention
-    self.sd = sd
-    self.partitionKeys = partitionKeys
-    self.parameters = parameters
-    self.viewOriginalText = viewOriginalText
-    self.viewExpandedText = viewExpandedText
-    self.tableType = tableType
-    self.privileges = privileges
-    self.temporary = temporary
-    self.rewriteEnabled = rewriteEnabled
-    self.creationMetadata = creationMetadata
-    self.catName = catName
-    self.ownerType = ownerType
-    self.writeId = writeId
-    self.isStatsCompliant = isStatsCompliant
-    self.colStats = colStats
-    self.accessType = accessType
-    self.requiredReadCapabilities = requiredReadCapabilities
-    self.requiredWriteCapabilities = requiredWriteCapabilities
-    self.id = id
+  def __init__(self, numTrues=None, numFalses=None, numNulls=None, bitVectors=None,):
+    self.numTrues = numTrues
+    self.numFalses = numFalses
+    self.numNulls = numNulls
+    self.bitVectors = bitVectors
 
   def read(self, iprot):
     if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
@@ -5066,154 +5003,23 @@ class Table:
       if ftype == TType.STOP:
         break
       if fid == 1:
-        if ftype == TType.STRING:
-          self.tableName = iprot.readString()
+        if ftype == TType.I64:
+          self.numTrues = iprot.readI64()
         else:
           iprot.skip(ftype)
       elif fid == 2:
-        if ftype == TType.STRING:
-          self.dbName = iprot.readString()
+        if ftype == TType.I64:
+          self.numFalses = iprot.readI64()
         else:
           iprot.skip(ftype)
       elif fid == 3:
-        if ftype == TType.STRING:
-          self.owner = iprot.readString()
+        if ftype == TType.I64:
+          self.numNulls = iprot.readI64()
         else:
           iprot.skip(ftype)
       elif fid == 4:
-        if ftype == TType.I32:
-          self.createTime = iprot.readI32()
-        else:
-          iprot.skip(ftype)
-      elif fid == 5:
-        if ftype == TType.I32:
-          self.lastAccessTime = iprot.readI32()
-        else:
-          iprot.skip(ftype)
-      elif fid == 6:
-        if ftype == TType.I32:
-          self.retention = iprot.readI32()
-        else:
-          iprot.skip(ftype)
-      elif fid == 7:
-        if ftype == TType.STRUCT:
-          self.sd = StorageDescriptor()
-          self.sd.read(iprot)
-        else:
-          iprot.skip(ftype)
-      elif fid == 8:
-        if ftype == TType.LIST:
-          self.partitionKeys = []
-          (_etype192, _size189) = iprot.readListBegin()
-          for _i193 in xrange(_size189):
-            _elem194 = FieldSchema()
-            _elem194.read(iprot)
-            self.partitionKeys.append(_elem194)
-          iprot.readListEnd()
-        else:
-          iprot.skip(ftype)
-      elif fid == 9:
-        if ftype == TType.MAP:
-          self.parameters = {}
-          (_ktype196, _vtype197, _size195 ) = iprot.readMapBegin()
-          for _i199 in xrange(_size195):
-            _key200 = iprot.readString()
-            _val201 = iprot.readString()
-            self.parameters[_key200] = _val201
-          iprot.readMapEnd()
-        else:
-          iprot.skip(ftype)
-      elif fid == 10:
-        if ftype == TType.STRING:
-          self.viewOriginalText = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 11:
         if ftype == TType.STRING:
-          self.viewExpandedText = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 12:
-        if ftype == TType.STRING:
-          self.tableType = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 13:
-        if ftype == TType.STRUCT:
-          self.privileges = PrincipalPrivilegeSet()
-          self.privileges.read(iprot)
-        else:
-          iprot.skip(ftype)
-      elif fid == 14:
-        if ftype == TType.BOOL:
-          self.temporary = iprot.readBool()
-        else:
-          iprot.skip(ftype)
-      elif fid == 15:
-        if ftype == TType.BOOL:
-          self.rewriteEnabled = iprot.readBool()
-        else:
-          iprot.skip(ftype)
-      elif fid == 16:
-        if ftype == TType.STRUCT:
-          self.creationMetadata = CreationMetadata()
-          self.creationMetadata.read(iprot)
-        else:
-          iprot.skip(ftype)
-      elif fid == 17:
-        if ftype == TType.STRING:
-          self.catName = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 18:
-        if ftype == TType.I32:
-          self.ownerType = iprot.readI32()
-        else:
-          iprot.skip(ftype)
-      elif fid == 19:
-        if ftype == TType.I64:
-          self.writeId = iprot.readI64()
-        else:
-          iprot.skip(ftype)
-      elif fid == 20:
-        if ftype == TType.BOOL:
-          self.isStatsCompliant = iprot.readBool()
-        else:
-          iprot.skip(ftype)
-      elif fid == 21:
-        if ftype == TType.STRUCT:
-          self.colStats = ColumnStatistics()
-          self.colStats.read(iprot)
-        else:
-          iprot.skip(ftype)
-      elif fid == 22:
-        if ftype == TType.BYTE:
-          self.accessType = iprot.readByte()
-        else:
-          iprot.skip(ftype)
-      elif fid == 23:
-        if ftype == TType.LIST:
-          self.requiredReadCapabilities = []
-          (_etype205, _size202) = iprot.readListBegin()
-          for _i206 in xrange(_size202):
-            _elem207 = iprot.readString()
-            self.requiredReadCapabilities.append(_elem207)
-          iprot.readListEnd()
-        else:
-          iprot.skip(ftype)
-      elif fid == 24:
-        if ftype == TType.LIST:
-          self.requiredWriteCapabilities = []
-          (_etype211, _size208) = iprot.readListBegin()
-          for _i212 in xrange(_size208):
-            _elem213 = iprot.readString()
-            self.requiredWriteCapabilities.append(_elem213)
-          iprot.readListEnd()
-        else:
-          iprot.skip(ftype)
-      elif fid == 25:
-        if ftype == TType.I64:
-          self.id = iprot.readI64()
+          self.bitVectors = iprot.readString()
         else:
           iprot.skip(ftype)
       else:
@@ -5225,154 +5031,42 @@ class Table:
     if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
       oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
       return
-    oprot.writeStructBegin('Table')
-    if self.tableName is not None:
-      oprot.writeFieldBegin('tableName', TType.STRING, 1)
-      oprot.writeString(self.tableName)
-      oprot.writeFieldEnd()
-    if self.dbName is not None:
-      oprot.writeFieldBegin('dbName', TType.STRING, 2)
-      oprot.writeString(self.dbName)
-      oprot.writeFieldEnd()
-    if self.owner is not None:
-      oprot.writeFieldBegin('owner', TType.STRING, 3)
-      oprot.writeString(self.owner)
-      oprot.writeFieldEnd()
-    if self.createTime is not None:
-      oprot.writeFieldBegin('createTime', TType.I32, 4)
-      oprot.writeI32(self.createTime)
-      oprot.writeFieldEnd()
-    if self.lastAccessTime is not None:
-      oprot.writeFieldBegin('lastAccessTime', TType.I32, 5)
-      oprot.writeI32(self.lastAccessTime)
-      oprot.writeFieldEnd()
-    if self.retention is not None:
-      oprot.writeFieldBegin('retention', TType.I32, 6)
-      oprot.writeI32(self.retention)
-      oprot.writeFieldEnd()
-    if self.sd is not None:
-      oprot.writeFieldBegin('sd', TType.STRUCT, 7)
-      self.sd.write(oprot)
-      oprot.writeFieldEnd()
-    if self.partitionKeys is not None:
-      oprot.writeFieldBegin('partitionKeys', TType.LIST, 8)
-      oprot.writeListBegin(TType.STRUCT, len(self.partitionKeys))
-      for iter214 in self.partitionKeys:
-        iter214.write(oprot)
-      oprot.writeListEnd()
-      oprot.writeFieldEnd()
-    if self.parameters is not None:
-      oprot.writeFieldBegin('parameters', TType.MAP, 9)
-      oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.parameters))
-      for kiter215,viter216 in self.parameters.items():
-        oprot.writeString(kiter215)
-        oprot.writeString(viter216)
-      oprot.writeMapEnd()
-      oprot.writeFieldEnd()
-    if self.viewOriginalText is not None:
-      oprot.writeFieldBegin('viewOriginalText', TType.STRING, 10)
-      oprot.writeString(self.viewOriginalText)
-      oprot.writeFieldEnd()
-    if self.viewExpandedText is not None:
-      oprot.writeFieldBegin('viewExpandedText', TType.STRING, 11)
-      oprot.writeString(self.viewExpandedText)
-      oprot.writeFieldEnd()
-    if self.tableType is not None:
-      oprot.writeFieldBegin('tableType', TType.STRING, 12)
-      oprot.writeString(self.tableType)
-      oprot.writeFieldEnd()
-    if self.privileges is not None:
-      oprot.writeFieldBegin('privileges', TType.STRUCT, 13)
-      self.privileges.write(oprot)
-      oprot.writeFieldEnd()
-    if self.temporary is not None:
-      oprot.writeFieldBegin('temporary', TType.BOOL, 14)
-      oprot.writeBool(self.temporary)
-      oprot.writeFieldEnd()
-    if self.rewriteEnabled is not None:
-      oprot.writeFieldBegin('rewriteEnabled', TType.BOOL, 15)
-      oprot.writeBool(self.rewriteEnabled)
-      oprot.writeFieldEnd()
-    if self.creationMetadata is not None:
-      oprot.writeFieldBegin('creationMetadata', TType.STRUCT, 16)
-      self.creationMetadata.write(oprot)
-      oprot.writeFieldEnd()
-    if self.catName is not None:
-      oprot.writeFieldBegin('catName', TType.STRING, 17)
-      oprot.writeString(self.catName)
-      oprot.writeFieldEnd()
-    if self.ownerType is not None:
-      oprot.writeFieldBegin('ownerType', TType.I32, 18)
-      oprot.writeI32(self.ownerType)
-      oprot.writeFieldEnd()
-    if self.writeId is not None:
-      oprot.writeFieldBegin('writeId', TType.I64, 19)
-      oprot.writeI64(self.writeId)
-      oprot.writeFieldEnd()
-    if self.isStatsCompliant is not None:
-      oprot.writeFieldBegin('isStatsCompliant', TType.BOOL, 20)
-      oprot.writeBool(self.isStatsCompliant)
-      oprot.writeFieldEnd()
-    if self.colStats is not None:
-      oprot.writeFieldBegin('colStats', TType.STRUCT, 21)
-      self.colStats.write(oprot)
-      oprot.writeFieldEnd()
-    if self.accessType is not None:
-      oprot.writeFieldBegin('accessType', TType.BYTE, 22)
-      oprot.writeByte(self.accessType)
+    oprot.writeStructBegin('BooleanColumnStatsData')
+    if self.numTrues is not None:
+      oprot.writeFieldBegin('numTrues', TType.I64, 1)
+      oprot.writeI64(self.numTrues)
       oprot.writeFieldEnd()
-    if self.requiredReadCapabilities is not None:
-      oprot.writeFieldBegin('requiredReadCapabilities', TType.LIST, 23)
-      oprot.writeListBegin(TType.STRING, len(self.requiredReadCapabilities))
-      for iter217 in self.requiredReadCapabilities:
-        oprot.writeString(iter217)
-      oprot.writeListEnd()
+    if self.numFalses is not None:
+      oprot.writeFieldBegin('numFalses', TType.I64, 2)
+      oprot.writeI64(self.numFalses)
       oprot.writeFieldEnd()
-    if self.requiredWriteCapabilities is not None:
-      oprot.writeFieldBegin('requiredWriteCapabilities', TType.LIST, 24)
-      oprot.writeListBegin(TType.STRING, len(self.requiredWriteCapabilities))
-      for iter218 in self.requiredWriteCapabilities:
-        oprot.writeString(iter218)
-      oprot.writeListEnd()
+    if self.numNulls is not None:
+      oprot.writeFieldBegin('numNulls', TType.I64, 3)
+      oprot.writeI64(self.numNulls)
       oprot.writeFieldEnd()
-    if self.id is not None:
-      oprot.writeFieldBegin('id', TType.I64, 25)
-      oprot.writeI64(self.id)
+    if self.bitVectors is not None:
+      oprot.writeFieldBegin('bitVectors', TType.STRING, 4)
+      oprot.writeString(self.bitVectors)
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
 
   def validate(self):
+    if self.numTrues is None:
+      raise TProtocol.TProtocolException(message='Required field numTrues is unset!')
+    if self.numFalses is None:
+      raise TProtocol.TProtocolException(message='Required field numFalses is unset!')
+    if self.numNulls is None:
+      raise TProtocol.TProtocolException(message='Required field numNulls is unset!')
     return
 
 
   def __hash__(self):
     value = 17
-    value = (value * 31) ^ hash(self.tableName)
-    value = (value * 31) ^ hash(self.dbName)
-    value = (value * 31) ^ hash(self.owner)
-    value = (value * 31) ^ hash(self.createTime)
-    value = (value * 31) ^ hash(self.lastAccessTime)
-    value = (value * 31) ^ hash(self.retention)
-    value = (value * 31) ^ hash(self.sd)
-    value = (value * 31) ^ hash(self.partitionKeys)
-    value = (value * 31) ^ hash(self.parameters)
-    value = (value * 31) ^ hash(self.viewOriginalText)
-    value = (value * 31) ^ hash(self.viewExpandedText)
-    value = (value * 31) ^ hash(self.tableType)
-    value = (value * 31) ^ hash(self.privileges)
-    value = (value * 31) ^ hash(self.temporary)
-    value = (value * 31) ^ hash(self.rewriteEnabled)
-    value = (value * 31) ^ hash(self.creationMetadata)
-    value = (value * 31) ^ hash(self.catName)
-    value = (value * 31) ^ hash(self.ownerType)
-    value = (value * 31) ^ hash(self.writeId)
-    value = (value * 31) ^ hash(self.isStatsCompliant)
-    value = (value * 31) ^ hash(self.colStats)
-    value = (value * 31) ^ hash(self.accessType)
-    value = (value * 31) ^ hash(self.requiredReadCapabilities)
-    value = (value * 31) ^ hash(self.requiredWriteCapabilities)
-    value = (value * 31) ^ hash(self.id)
+    value = (value * 31) ^ hash(self.numTrues)
+    value = (value * 31) ^ hash(self.numFalses)
+    value = (value * 31) ^ hash(self.numNulls)
+    value = (value * 31) ^ hash(self.bitVectors)
     return value
 
   def __repr__(self):
@@ -5386,52 +5080,31 @@ class Table:
   def __ne__(self, other):
     return not (self == other)
 
-class Partition:
+class DoubleColumnStatsData:
   """
   Attributes:
-   - values
-   - dbName
-   - tableName
-   - createTime
-   - lastAccessTime
-   - sd
-   - parameters
-   - privileges
-   - catName
-   - writeId
-   - isStatsCompliant
-   - colStats
+   - lowValue
+   - highValue
+   - numNulls
+   - numDVs
+   - bitVectors
   """
 
   thrift_spec = (
     None, # 0
-    (1, TType.LIST, 'values', (TType.STRING,None), None, ), # 1
-    (2, TType.STRING, 'dbName', None, None, ), # 2
-    (3, TType.STRING, 'tableName', None, None, ), # 3
-    (4, TType.I32, 'createTime', None, None, ), # 4
-    (5, TType.I32, 'lastAccessTime', None, None, ), # 5
-    (6, TType.STRUCT, 'sd', (StorageDescriptor, StorageDescriptor.thrift_spec), None, ), # 6
-    (7, TType.MAP, 'parameters', (TType.STRING,None,TType.STRING,None), None, ), # 7
-    (8, TType.STRUCT, 'privileges', (PrincipalPrivilegeSet, PrincipalPrivilegeSet.thrift_spec), None, ), # 8
-    (9, TType.STRING, 'catName', None, None, ), # 9
-    (10, TType.I64, 'writeId', None, -1, ), # 10
-    (11, TType.BOOL, 'isStatsCompliant', None, None, ), # 11
-    (12, TType.STRUCT, 'colStats', (ColumnStatistics, ColumnStatistics.thrift_spec), None, ), # 12
+    (1, TType.DOUBLE, 'lowValue', None, None, ), # 1
+    (2, TType.DOUBLE, 'highValue', None, None, ), # 2
+    (3, TType.I64, 'numNulls', None, None, ), # 3
+    (4, TType.I64, 'numDVs', None, None, ), # 4
+    (5, TType.STRING, 'bitVectors', None, None, ), # 5
   )
 
-  def __init__(self, values=None, dbName=None, tableName=None, createTime=None, lastAccessTime=None, sd=None, parameters=None, privileges=None, catName=None, writeId=thrift_spec[10][4], isStatsCompliant=None, colStats=None,):
-    self.values = values
-    self.dbName = dbName
-    self.tableName = tableName
-    self.createTime = createTime
-    self.lastAccessTime = lastAccessTime
-    self.sd = sd
-    self.parameters = parameters
-    self.privileges = privileges
-    self.catName = catName
-    self.writeId = writeId
-    self.isStatsCompliant = isStatsCompliant
-    self.colStats = colStats
+  def __init__(self, lowValue=None, highValue=None, numNulls=None, numDVs=None, bitVectors=None,):
+    self.lowValue = lowValue
+    self.highValue = highValue
+    self.numNulls = numNulls
+    self.numDVs = numDVs
+    self.bitVectors = bitVectors
 
   def read(self, iprot):
     if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
@@ -5443,77 +5116,28 @@ class Partition:
       if ftype == TType.STOP:
         break
       if fid == 1:
-        if ftype == TType.LIST:
-          self.values = []
-          (_etype222, _size219) = iprot.readListBegin()
-          for _i223 in xrange(_size219):
-            _elem224 = iprot.readString()
-            self.values.append(_elem224)
-          iprot.readListEnd()
+        if ftype == TType.DOUBLE:
+          self.lowValue = iprot.readDouble()
         else:
           iprot.skip(ftype)
       elif fid == 2:
-        if ftype == TType.STRING:
-          self.dbName = iprot.readString()
+        if ftype == TType.DOUBLE:
+          self.highValue = iprot.readDouble()
         else:
           iprot.skip(ftype)
       elif fid == 3:
-        if ftype == TType.STRING:
-          self.tableName = iprot.readString()
+        if ftype == TType.I64:
+          self.numNulls = iprot.readI64()
         else:
           iprot.skip(ftype)
       elif fid == 4:
-        if ftype == TType.I32:
-          self.createTime = iprot.readI32()
-        else:
-          iprot.skip(ftype)
-      elif fid == 5:
-        if ftype == TType.I32:
-          self.lastAccessTime = iprot.readI32()
-        else:
-          iprot.skip(ftype)
-      elif fid == 6:
-        if ftype == TType.STRUCT:
-          self.sd = StorageDescriptor()
-          self.sd.read(iprot)
-        else:
-          iprot.skip(ftype)
-      elif fid == 7:
-        if ftype == TType.MAP:
-          self.parameters = {}
-          (_ktype226, _vtype227, _size225 ) = iprot.readMapBegin()
-          for _i229 in xrange(_size225):
-            _key230 = iprot.readString()
-            _val231 = iprot.readString()
-            self.parameters[_key230] = _val231
-          iprot.readMapEnd()
-        else:
-          iprot.skip(ftype)
-      elif fid == 8:
-        if ftype == TType.STRUCT:
-          self.privileges = PrincipalPrivilegeSet()
-          self.privileges.read(iprot)
-        else:
-          iprot.skip(ftype)
-      elif fid == 9:
-        if ftype == TType.STRING:
-          self.catName = iprot.readString()
-        else:
-          iprot.skip(ftype)
-      elif fid == 10:
         if ftype == TType.I64:
-          self.writeId = iprot.readI64()
-        else:
-          iprot.skip(ftype)
-      elif fid == 11:
-        if ftype == TType.BOOL:
-          self.isStatsCompliant = iprot.readBool()
-        else:
-          iprot.skip(ftype)
-      elif fid == 12:
-        if ftype == TType.STRUCT:
-          self.colStats = ColumnStatistics()
-          self.colStats.read(iprot)
+          self.numDVs = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRING:
+          self.bitVectors = iprot.readString()
         else:
           iprot.skip(ftype)
       else:
@@ -5525,83 +5149,45 @@ class Partition:
     if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
       oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
       return
-    oprot.writeStructBegin('Partition')
-    if self.values is not None:
-      oprot.writeFieldBegin('values', TType.LIST, 1)
-      oprot.writeListBegin(TType.STRING, len(self.values))
-      for iter232 in self.values:
-        oprot.writeString(iter232)
-      oprot.writeListEnd()
-      oprot.writeFieldEnd()
-    if self.dbName is not None:
-      oprot.writeFieldBegin('dbName', TType.STRING, 2)
-      oprot.writeString(self.dbName)
-      oprot.writeFieldEnd()
-    if self.tableName is not None:
-      oprot.writeFieldBegin('tableName', TType.STRING, 3)
-      oprot.writeString(self.tableName)
-      oprot.writeFieldEnd()
-    if self.createTime is not None:
-      oprot.writeFieldBegin('createTime', TType.I32, 4)
-      oprot.writeI32(self.createTime)
-      oprot.writeFieldEnd()
-    if self.lastAccessTime is not None:
-      oprot.writeFieldBegin('lastAccessTime', TType.I32, 5)
-      oprot.writeI32(self.lastAccessTime)
-      oprot.writeFieldEnd()
-    if self.sd is not None:
-      oprot.writeFieldBegin('sd', TType.STRUCT, 6)
-      self.sd.write(oprot)
-      oprot.writeFieldEnd()
-    if self.parameters is not None:
-      oprot.writeFieldBegin('parameters', TType.MAP, 7)
-      oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.parameters))
-      for kiter233,viter234 in self.parameters.items():
-        oprot.writeString(kiter233)
-        oprot.writeString(viter234)
-      oprot.writeMapEnd()
-      oprot.writeFieldEnd()
-    if self.privileges is not None:
-      oprot.writeFieldBegin('privileges', TType.STRUCT, 8)
-      self.privileges.write(oprot)
+    oprot.writeStructBegin('DoubleColumnStatsData')
+    if self.lowValue is not None:
+      oprot.writeFieldBegin('lowValue', TType.DOUBLE, 1)
+      oprot.writeDouble(self.lowValue)
       oprot.writeFieldEnd()
-    if self.catName is not None:
-      oprot.writeFieldBegin('catName', TType.STRING, 9)
-      oprot.writeString(self.catName)
+    if self.highValue is not None:
+      oprot.writeFieldBegin('highValue', TType.DOUBLE, 2)
+      oprot.writeDouble(self.highValue)
       oprot.writeFieldEnd()
-    if self.writeId is not None:
-      oprot.writeFieldBegin('writeId', TType.I64, 10)
-      oprot.writeI64(self.writeId)
+    if self.numNulls is not None:
+      oprot.writeFieldBegin('numNulls', TType.I64, 3)
+      oprot.writeI64(self.numNulls)
       oprot.writeFieldEnd()
-    if self.isStatsCompliant is not None:
-      oprot.writeFieldBegin('isStatsCompliant', TType.BOOL, 11)
-      oprot.writeBool(self.isStatsCompliant)
+    if self.numDVs is not None:
+      oprot.writeFieldBegin('numDVs', TType.I64, 4)
+      oprot.writeI64(self.numDVs)
       oprot.writeFieldEnd()
-    if self.colStats is not None:
-      oprot.writeFieldBegin('colStats', TType.STRUCT, 12)
-      self.colStats.write(oprot)
+    if self.bitVectors is not None:
+      oprot.writeFieldBegin('bitVectors', TType.STRING, 5)
+      oprot.writeString(self.bitVectors)
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
 
   def validate(self):
+    if self.numNulls is None:
+      raise TProtocol.TProtocolException(message='Required field numNulls is unset!')
+    if self.numDVs is None:
+      raise TProtocol.TProtocolException(message='Required field numDVs is unset!')
     return
 
 
   def __hash__(self):
     value = 17
-    value = (value * 31) ^ hash(self.values)
-    value = (value * 31) ^ hash(self.dbName)
-    value = (value * 31) ^ hash(self.tableName)
-    value = (value * 31) ^ hash(self.createTime)
-    value = (value * 31) ^ hash(self.lastAccessTime)
-    value = (value * 31) ^ hash(self.sd)
-    value = (value * 31) ^ hash(self.parameters)
-    value = (value * 31) ^ hash(self.privileges)
-    value = (value * 31) ^ hash(self.catName)
-    value = (value * 31) ^ hash(self.writeId)
-    value = (value * 31) ^ hash(self.isStatsCompliant)
-    value = (value * 31) ^ hash(self.colStats)
+    value = (value * 31) ^ hash(self.lowValue)
+    value = (value * 31) ^ hash(self.highValue)
+    value = (value * 31) ^ hash(self.numNulls)
+    value = (value * 31) ^ hash(self.numDVs)
+    value = (value * 31) ^ hash(self.bitVectors)
     return value
 
   def __repr__(self):
@@ -5615,34 +5201,31 @@ class Partition:
   def __ne__(self, other):
     return not (self == other)
 
-class PartitionWithoutSD:
+class LongColumnStatsData:
   """
   Attributes:
-   - values
-   - createTime
-   - lastAccessTime
-   - relativePath
-   - parameters
-   - privileges
+   - lowValue
+   - highValue
+   - numNulls
+   - numDVs
+   - bitVectors
   """
 
   thrift_spec = (
     None, # 0
-    (1, TType.LIST, 'values', (TType.STRING,None), None, ), # 1
-    (2, TType.I32, 'createTime', None, None, ), # 2
-    (3, TType.I32, 'lastAccessTime', None, None, ), # 3
-    (4, TType.STRING, 'relativePath', None, None, ), # 4
-    (5, TType.MAP, 'parameters', (TType.STRING,None,TType.STRING,None), None, ), # 5
-    (6, TType.STRUCT, 'privileges', (PrincipalPrivilegeSet, PrincipalPrivilegeSet.thrift_spec), None, ), # 6
+    (1, TType.I64, 'lowValue', None, None, ), # 1
+    (2, TType.I64, 'highValue', None, None, ), # 2
+    (3, TType.I64, 'numNulls', None, None, ), # 3
+    (4, TType.I64, 'numDVs', None, None, ), # 4
+    (5, TType.STRING, 'bitVectors', None, None, ), # 5
   )
 
-  def __init__(self, values=None, createTime=None, lastAccessTime=None, relativePath=None, parameters=None, privileges=None,):
-    self.values = values
-    self.createTime = createTime
-    self.lastAccessTime = lastAccessTime
-    self.relativePath = relativePath
-    self.parameters = parameters
-    self.privileges = privileges
+  def __init__(self, lowValue=None, highValue=None, numNulls=None, numDVs=None, bitVectors=None,):
+    self.lowValue = lowValue
+    self.highValue = highValue
+    self.numNulls = numNulls
+    self.numDVs = numDVs
+    self.bitVectors = bitVectors
 
   def read(self, iprot):
     if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
@@ -5654,45 +5237,28 @@ class PartitionWithoutSD:
       if ftype == TType.STOP:
         break
       if fid == 1:
-        if ftype == TType.LIST:
-          self.values = []
-          (_etype238, _size235) = iprot.readListBegin()
-          for _i239 in xrange(_size235):
-            _elem240 = iprot.readString()
-            self.values.append(_elem240)
-          iprot.readListEnd()
+        if ftype == TType.I64:
+          self.lowValue = iprot.readI64()
         else:
           iprot.skip(ftype)
       elif fid == 2:
-        if ftype == TType.I32:
-          self.createTime = iprot.readI32()
+        if ftype == TType.I64:
+          self.highValue = iprot.readI64()
         else:
           iprot.skip(ftype)
       elif fid == 3:
-        if ftype == TType.I32:
-          self.lastAccessTime = iprot.readI32()
+        if ftype == TType.I64:
+          self.numNulls = iprot.readI64()
         else:
           iprot.skip(ftype)
       elif fid == 4:
-        if ftype == TType.STRING:
-          self.relativePath = iprot.readString()
+        if ftype == TType.I64:
+          self.numDVs = iprot.readI64()
         else:
           iprot.skip(ftype)
       elif fid == 5:
-        if ftype == TType.MAP:
-          self.parameters = {}
-          (_ktype242, _vtype243, _size241 ) = iprot.readMapBegin()
-          for _i245 in xrange(_size241):
-            _key246 = iprot.readString()
-            _val247 = iprot.readString()
-            self.parameters[_key246] = _val247
-          iprot.readMapEnd()
-        else:
-          iprot.skip(ftype)
-      elif fid == 6:
-        if ftype == TType.STRUCT:
-          self.privileges = PrincipalPrivilegeSet()
-          self.privileges.read(iprot)
+        if ftype == TType.STRING:
+          self.bitVectors = iprot.readString()
         else:
           iprot.skip(ftype)
       else:
@@ -5704,53 +5270,45 @@ class PartitionWithoutSD:
     if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
       oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
       return
-    oprot.writeStructBegin('PartitionWithoutSD')
-    if self.values is not None:
-      oprot.writeFieldBegin('values', TType.LIST, 1)
-      oprot.writeListBegin(TType.STRING, len(self.values))
-      for iter248 in self.values:
-        oprot.writeString(iter248)
-      oprot.writeListEnd()
-      oprot.writeFieldEnd()
-    if self.createTime is not None:
-      oprot.writeFieldBegin('createTime', TType.I32, 2)
-      oprot.writeI32(self.createTime)
+    oprot.writeStructBegin('LongColumnStatsData')
+    if self.lowValue is not None:
+      oprot.writeFieldBegin('lowValue', TType.I64, 1)
+      oprot.writeI64(self.lowValue)
       oprot.writeFieldEnd()
-    if self.lastAccessTime is not None:
-      oprot.writeFieldBegin('lastAccessTime', TType.I32, 3)
-      oprot.writeI32(self.lastAccessTime)
+    if self.highValue is not None:
+      oprot.writeFieldBegin('highValue', TType.I64, 2)
+      oprot.writeI64(self.highValue)
       oprot.writeFieldEnd()
-    if self.relativePath is not None:
-      oprot.writeFieldBegin('relativePath', TType.STRING, 4)
-      oprot.writeString(self.relativePath)
+    if self.numNulls is not None:
+      oprot.writeFieldBegin('numNulls', TType.I64, 3)
+      oprot.writeI64(self.numNulls)
       oprot.writeFieldEnd()
-    if self.parameters is not None:
-      oprot.writeFieldBegin('parameters', TType.MAP, 5)
-      oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.parameters))
-      for kiter249,viter250 in self.parameters.items():
-        oprot.writeString(kiter249)
-        oprot.writeString(viter250)
-      oprot.writeMapEnd()
+    if self.numDVs is not None:
+      oprot.writeFieldBegin('numDVs', TType.I64, 4)
+      oprot.writeI64(self.numDVs)
       oprot.writeFieldEnd()
-    if self.privileges is not None:
-      oprot.writeFieldBegin('privileges', TType.STRUCT, 6)
-      self.privileges.write(oprot)
+    if self.bitVectors is not None:
+      oprot.writeFieldBegin('bitVectors', TType.STRING, 5)
+      oprot.writeString(self.bitVectors)
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
 
   def validate(self):
+    if self.numNulls is None:
+      raise TProtocol.TProtocolException(message='Required field numNulls is unset!')
+    if self.numDVs is None:
+      raise TProtocol.TProtocolException(message='Required field numDVs is unset!')
     return
 
 
   def __hash__(self):
     value = 17
-    value = (value * 31) ^ hash(self.values)
-    value = (value * 31) ^ hash(self.createTime)
-    value = (value * 31) ^ hash(self.lastAccessTime)
-    value = (value * 31) ^ hash(self.relativePath)
-    value = (value * 31) ^ hash(self.parameters)
-    value = (value * 31) ^ hash(self.privileges)
+    value = (value * 31) ^ hash(self.lowValue)
+    value = (value * 31) ^ hash(self.highValue)
+    value = (value * 31) ^ hash(self.numNulls)
+    value = (value * 31) ^ hash(self.numDVs)
+    value = (value * 31) ^ hash(self.bitVectors)
     return value
 
   def __repr__(self):
@@ -5764,22 +5322,31 @@ class PartitionWithoutSD:
   def __ne__(self, other):
     return not (self == other)
 
-class PartitionSpecWithSharedSD:
+class StringColumnStatsData:
   """
   Attributes:
-   - partitions
-   - sd
+   - maxColLen
+   - avgColLen
+   - numNulls
+   - numDVs
+   - bitVectors
   """
 
   thrift_spec = (
     None, # 0
-    (1, TType.LIST, 'partitions', (TType.STRUCT,(PartitionWithoutSD, PartitionWithoutSD.thrift_spec)), None, ), # 1
-    (2, TType.STRUCT, 'sd', (StorageDescriptor, StorageDescriptor.thrift_spec), None, ), # 2
+    (1, TType.I64, 'maxColLen', None, None, ), # 1
+    (2, TType.DOUBLE, 'avgColLen', None, None, ), # 2
+    (3, TType.I64, 'numNulls', None, None, ), # 3
+    (4, TType.I64, 'numDVs', None, None, ), # 4
+    (5, TType.STRING, 'bitVectors', None, None, ), # 5
   )
 
-  def __init__(self, partitions=None, sd=None,):
-    self.partitions = partitions
-    self.sd = sd
+  def __init__(self, maxColLen=None, avgColLen=None, numNulls=None, numDVs=None, bitVectors=None,):
+    self.maxColLen = maxColLen
+    self.avgColLen = avgColLen
+    self.numNulls = numNulls
+    self.numDVs = numDVs
+    self.bitVectors = bitVectors
 
   def read(self, iprot):
     if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
@@ -5791,20 +5358,28 @@ class PartitionSpecWithSharedSD:
       if ftype == TType.STOP:
         break
       if fid == 1:
-        if ftype == TType.LIST:
-          self.partitions = []
-          (_etype254, _size251) = iprot.readListBegin()
-          for _i255 in xrange(_size251):
-            _elem256 = PartitionWithoutSD()
-            _elem256.read(iprot)
-            self.partitions.append(_elem256)
-          iprot.readListEnd()
+        if ftype == TType.I64:
+          self.maxColLen = iprot.readI64()
         else:
           iprot.skip(ftype)
       elif fid == 2:
-        if ftype == TType.STRUCT:
-          self.sd = StorageDescriptor()
-          self.sd.read(iprot)
+        if ftype == TType.DOUBLE:
+          self.avgColLen = iprot.readDouble()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.I64:
+          self.numNulls = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.I64:
+          self.numDVs = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRING:
+          self.bitVectors = iprot.readString()
         else:
           iprot.skip(ftype)
       else:
@@ -5816,29 +5391,49 @@ class PartitionSpecWithSharedSD:
     if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
       oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
       return
-    oprot.writeStructBegin('PartitionSpecWithSharedSD')
-    if self.partitions is not None:
-      oprot.writeFieldBegin('partitions', TType.LIST, 1)
-      oprot.writeListBegin(TType.STRUCT, len(self.partitions))
-      for iter257 in self.partitions:
-        iter257.write(oprot)
-      oprot.writeListEnd()
+    oprot.writeStructBegin('StringColumnStatsData')
+    if self.maxColLen is not None:
+      oprot.writeFieldBegin('maxColLen', TType.I64, 1)
+      oprot.writeI64(self.maxColLen)
       oprot.writeFieldEnd()
-    if self.sd is not None:
-      oprot.writeFieldBegin('sd', TType.STRUCT, 2)
-      self.sd.write(oprot)
+    if self.avgColLen is not None:
+      oprot.writeFieldBegin('avgColLen', TType.DOUBLE, 2)
+      oprot.writeDouble(self.avgColLen)
+      oprot.writeFieldEnd()
+    if self.numNulls is not None:
+      oprot.writeFieldBegin('numNulls', TType.I64, 3)
+      oprot.writeI64(self.numNulls)
+      oprot.writeFieldEnd()
+    if self.numDVs is not None:
+      oprot.writeFieldBegin('numDVs', TType.I64, 4)
+      oprot.writeI64(self.numDVs)
+      oprot.writeFieldEnd()
+    if self.bitVectors is not None:
+      oprot.writeFieldBegin('bitVectors', TType.STRING, 5)
+      oprot.writeString(self.bitVectors)
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
 
   def validate(self):
+    if self.maxColLen is None:
+      raise TProtocol.TProtocolException(message='Required field maxColLen is unset!')
+    if self.avgColLen is None:
+      raise TProtocol.TProtocolException(message='Required field avgColLen is unset!')
+    if self.numNulls is None:
+      raise TProtocol.TProtocolException(message='Required field numNulls is unset!')
+    if self.numDVs is None:
+      raise TProtocol.TProtocolException(message='Required field numDVs is unset!')
     return
 
 
   def __hash__(self):
     value = 17
-    value = (value * 31) ^ hash(self.partitions)
-    value = (value * 31) ^ hash(self.sd)
+    value = (value * 31) ^ hash(self.maxColLen)
+    value = (value * 31) ^ hash(self.avgColLen)
+    value = (value * 31) ^ hash(self.numNulls)
+    value = (value * 31) ^ hash(self.numDVs)
+    value = (value * 31) ^ hash(self.bitVectors)
     return value
 
   def __repr__(self):
@@ -5852,26 +5447,26 @@ class PartitionSpecWithSharedSD:
   def __ne__(self, other):
     return not (self == other)
 
-class BooleanColumnStatsData:
+class BinaryColumnStatsData:
   """
   Attributes:
-   - numTrues
-   - numFalses
+   - maxColLen
+   - avgColLen
    - numNulls
    - bitVectors
   """
 
   thrift_spec = (
     None, # 0
-    (1, TType.I64, 'numTrues', None, None, ), # 1
-    (2, TType.I64, 'numFalses', None, None, ), # 2
+    (1, TType.I64, 'maxColLen', None, None, ), # 1
+    (2, TType.DOUBLE, 'avgColLen', None, None, ), # 2
     (3, TType.I64, 'numNulls', None, None, ), # 3
     (4, TType.STRING, 'bitVectors', None, None, ), # 4
   )
 
-  def __init__(self, numTrues=None, numFalses=None, numNulls=None, bitVectors=None,):
-    self.numTrues = numTrues
-    self.numFalses = numFalses
+  def __init__(self, maxColLen=None, avgColLen=None, numNulls=None, bitVectors=None,):
+    self.maxColLen = maxColLen
+    self.avgColLen = avgColLen
     self.numNulls = numNulls
     self.bitVectors = bitVectors
 
@@ -5886,12 +5481,12 @@ class BooleanColumnStatsData:
         break
       if fid == 1:
         if ftype == TType.I64:
-          self.numTrues = iprot.readI64()
+          self.maxColLen = iprot.readI64()
         else:
           iprot.skip(ftype)
       elif fid == 2:
-        if ftype == TType.I64:
-          self.numFalses = iprot.readI64()
+        if ftype == TType.DOUBLE:
+          self.avgColLen = iprot.readDouble()
         else:
           iprot.skip(ftype)
       elif fid == 3:
@@ -5913,14 +5508,14 @@ class BooleanColumnStatsData:
     if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
       oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
       return
-    oprot.writeStructBegin('BooleanColumnStatsData')
-    if self.numTrues is not None:
-      oprot.writeFieldBegin('numTrues', TType.I64, 1)
-      oprot.writeI64(self.numTrues)
+    oprot.writeStructBegin('BinaryColumnStatsData')
+    if self.maxColLen is not None:
+      oprot.writeFieldBegin('maxColLen', TType.I64, 1)
+      oprot.writeI64(self.maxColLen)
       oprot.writeFieldEnd()
-    if self.numFalses is not None:
-      oprot.writeFieldBegin('numFalses', TType.I64, 2)
-      oprot.writeI64(self.numFalses)
+    if self.avgColLen is not None:
+      oprot.writeFieldBegin('avgColLen', TType.DOUBLE, 2)
+      oprot.writeDouble(self.avgColLen)
       oprot.writeFieldEnd()
     if self.numNulls is not None:
       oprot.writeFieldBegin('numNulls', TType.I64, 3)
@@ -5934,10 +5529,10 @@ class BooleanColumnStatsData:
     oprot.writeStructEnd()
 
   def validate(self):
-    if self.numTrues is None:
-      raise TProtocol.TProtocolException(message='Required field numTrues is unset!')
-    if self.numFalses is None:
-      raise TProtocol.TProtocolException(message='Required field numFalses is unset!')
+    if self.maxColLen is None:
+      raise TProtocol.TProtocolException(message='Required field maxColLen is unset!')
+    if self.avgColLen is None:
+      raise TProtocol.TProtocolException(message='Required field avgColLen is unset!')
     if self.numNulls is None:
       raise TProtocol.TProtocolException(message='Required field numNulls is unset!')
     return
@@ -5945,8 +5540,8 @@ class BooleanColumnStatsData:
 
   def __hash__(self):
     value = 17
-    value = (value * 31) ^ hash(self.numTrues)
-    value = (value * 31) ^ hash(self.numFalses)
+    value = (value * 31) ^ hash(self.maxColLen)
+    value = (value * 31) ^ hash(self.avgColLen)
     value = (value * 31) ^ hash(self.numNulls)
     value = (value * 31) ^ hash(self.bitVectors)
     return value
@@ -5962,31 +5557,23 @@ class BooleanColumnStatsData:
   def __ne__(self, other):
     return not (self == other)
 
-class DoubleColumnStatsData:
+class Decimal:
   """
   Attributes:
-   - lowValue
-   - highValue
-   - numNulls
-   - numDVs
-   - bitVectors
+   - scale
+   - unscaled
   """
 
   thrift_spec = (
     None, # 0
-    (1, TType.DOUBLE, 'lowValue', None, None, ), # 1
-    (2, TType.DOUBLE, 'highValue', None, None, ), # 2
-    (3, TType.I64, 'numNulls', None, None, ), # 3
-    (4, TType.I64, 'numDVs', None, None, ), # 4
-    (5, TType.STRING, 'bitVectors', None, None, ), # 5
+    (1, TType.STRING, 'unscaled', None, None, ), # 1
+    None, # 2
+    (3, TType.I16, 'scale', None, None, ), # 3
   )
 
-  def __init__(self, lowValue=None, highValue=None, numNulls=None, numDVs=None, bitVectors=None,):
-    self.lowValue = lowValue
-    self.highValue = highValue
-    self.numNulls = numNulls
-    self.numDVs = numDVs
-    self.bitVectors = bitVectors
+  def __init__(self, scale=None, unscaled=None,):
+    self.scale = scale
+    self.unscaled = unscaled
 
   def read(self, iprot):
     if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
@@ -5997,29 +5584,14 @@ class DoubleColumnStatsData:
       (fname, ftype, fid) = iprot.readFieldBegin()
       if ftype == TType.STOP:
         break
-      if fid == 1:
-        if ftype == TType.DOUBLE:
-          self.lowValue = iprot.readDouble()
-        else:
-          iprot.skip(ftype)
-      elif fid == 2:
-        if ftype == TType.DOUBLE:
-          self.highValue = iprot.readDouble()
-        else:
-          iprot.skip(ftype)
-      elif fid == 3:
-        if ftype == TType.I64:
-          self.numNulls = iprot.readI64()
-        else:
-          iprot.skip(ftype)
-      elif fid == 4:
-        if ftype == TType.I64:
-          self.numDVs = iprot.readI64()
+      if fid == 3:
+        if ftype == TType.I16:
+          self.scale = iprot.readI16()
         else:
           iprot.skip(ftype)
-      elif fid == 5:
+      elif fid == 1:
         if ftype == TType.STRING:
-          self.bitVectors = iprot.readString()
+          self.unscaled = iprot.readString()
         else:
           iprot.skip(ftype)
       else:
@@ -6031,45 +5603,30 @@ class DoubleColumnStatsData:
     if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
       oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
       return
-    oprot.writeStructBegin('DoubleColumnStatsData')
-    if self.lowValue is not None:
-      oprot.writeFieldBegin('lowValue', TType.DOUBLE, 1)
-      oprot.writeDouble(self.lowValue)
-      oprot.writeFieldEnd()
-    if self.highValue is not None:
-      oprot.writeFieldBegin('highValue', TType.DOUBLE, 2)
-      oprot.writeDouble(self.highValue)
-      oprot.writeFieldEnd()
-    if self.numNulls is not None:
-      oprot.writeFieldBegin('numNulls', TType.I64, 3)
-      oprot.writeI64(self.numNulls)
-      oprot.writeFieldEnd()
-    if self.numDVs is not None:
-      oprot.writeFieldBegin('numDVs', TType.I64, 4)
-      oprot.writeI64(self.numDVs)
+    oprot.writeStructBegin('Decimal')
+    if self.unscaled is not None:
+      oprot.writeFieldBegin('unscaled', TType.STRING, 1)
+      oprot.writeString(self.unscaled)
       oprot.writeFieldEnd()
-    if self.bitVectors is not None:
-      oprot.writeFieldBegin('bitVectors', TType.STRING, 5)
-      oprot.writeString(self.bitVectors)
+    if self.scale is not None:
+      oprot.writeFieldBegin('scale', TType.I16, 3)
+      oprot.writeI16(self.scale)
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
 
   def validate(self):
-    if self.numNulls is None:
-      raise TProtocol.TProtocolException(message='Required field numNulls is unset!')
-    if self.numDVs is None:
-      raise TProtocol.TProtocolException(message='Required field numDVs is unset!')
+    if self.scale is None:
+      raise TProtocol.TProtocolException(message='Required field scale is unset!')
+    if self.unscaled is None:
+      raise TProtocol.TProtocolException(message='Required field unscaled is unset!')
     return
 
 
   def __hash__(self):
     value = 17
-    value = (value * 31) ^ hash(self.lowValue)
-    value = (value * 31) ^ hash(self.highValue)
-    value = (value * 31) ^ hash(self.numNulls)
-    value = (value * 31) ^ hash(self.numDVs)
-    value = (value * 31) ^ hash(self.bitVectors)
+    value = (value * 31) ^ hash(self.scale)
+    value = (value * 31) ^ hash(self.unscaled)
     return value
 
   def __repr__(self):
@@ -6083,7 +5640,7 @@ class DoubleColumnStatsData:
   def __ne__(self, other):
     return not (self == other)
 
-class LongColumnStatsData:
+class DecimalColumnStatsData:
   """
   Attributes:
    - lowValue
@@ -6095,8 +5652,8 @@ class LongColumnStatsData:
 
   thrift_spec = (
     None, # 0
-    (1, TType.I64, 'lowValue', None, None, ), # 1
-    (2, TType.I64, 'highValue', None, None, ), # 2
+    (1, TType.STRUCT, 'lowValue', (Decimal, Decimal.thrift_spec), None, ), # 1
+    (2, TType.STRUCT, 'highValue', (Decimal, Decimal.thrift_spec), None, ), # 2
     (3, TType.I64, 'numNulls', None, None, ), # 3
     (4, TType.I64, 'numDVs', None, None, ), # 4
     (5, TType.STRING, 'bitVectors', None, None, ), # 5
@@ -6119,13 +5676,15 @@ class LongColumnStatsData:
       if ftype == TType.STOP:
         break
       if fid == 1:
-        if ftype == TType.I64:
-          self.lowValue = iprot.readI64()
+        if ftype == TType.STRUCT:
+          self.lowValue = Decimal()
+          self.lowValue.read(iprot)
         else:
           iprot.skip(ftype)
       elif fid == 2:
-        if ftype == TType.I64:
-          self.highValue = iprot.readI64()
+        if ftype == TType.STRUCT:
+          self.highValue = Decimal()
+          self.highValue.read(iprot)
         else:
           iprot.skip(ftype)
       elif fid == 3:
@@ -6152,14 +5711,14 @@ class LongColumnStatsData:
     if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
       oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
       return
-    oprot.writeStructBegin('LongColumnStatsData')
+    oprot.writeStructBegin('DecimalColumnStatsData')
     if self.lowValue is not None:
-      oprot.writeFieldBegin('lowValue', TType.I64, 1)
-      oprot.writeI64(self.lowValue)
+      oprot.writeFieldBegin('lowValue', TType.STRUCT, 1)
+      self.lowValue.write(oprot)
       oprot.writeFieldEnd()
     if self.highValue is not None:
-      oprot.writeFieldBegin('highValue', TType.I64, 2)
-      oprot.writeI64(self.highValue)
+      oprot.writeFieldBegin('highValue', TType.STRUCT, 2)
+      self.highValue.write(oprot)
       oprot.writeFieldEnd()
     if self.numNulls is not None:
       oprot.writeFieldBegin('numNulls', TType.I64, 3)
@@ -6204,64 +5763,32 @@ class LongColumnStatsData:
   def __ne__(self, other):
     return not (self == other)
 
-class StringColumnStatsData:
+class Date:
   """
   Attributes:
-   - maxColLen
-   - avgColLen
-   - numNulls
-   - numDVs
-   - bitVectors
+   - daysSinceEpoch
   """
 
   thrift_spec = (
     None, # 0
-    (1, TType.I64, 'maxColLen', None, None, ), # 1
-    (2, TType.DOUBLE, 'avgColLen', None, None, ), # 2
-    (3, TType.I64, 'numNulls', None, None, ), # 3
-    (4, TType.I64, 'numDVs', None, None, ), # 4
-    (5, TType.STRING, 'bitVectors', None, None, ), # 5
+    (1, TType.I64, 'daysSinceEpoch', None, None, ), # 1
   )
 
-  def __init__(self, maxColLen=None, avgColLen=None, numNulls=None, numDVs=None, bitVectors=None,):
-    self.maxColLen = maxColLen
-    self.avgColLen = avgColLen
-    self.numNulls = numNulls
-    self.numDVs = numDVs
-    self.bitVectors = bitVectors
-
-  def read(self, iprot):
-    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
-      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
-      return
-    iprot.readStructBegin()
-    while True:
-      (fname, ftype, fid) = iprot.readFieldBegin()
-      if ftype == TType.STOP:
-        break
-      if fid == 1:
-        if ftype == TType.I64:
-          self.maxColLen = iprot.readI64()
-        else:
-          iprot.skip(ftype)
-      elif fid == 2:
-        if ftype == TType.DOUBLE:
-          self.avgColLen = iprot.readDouble()
-        else:
-          iprot.skip(ftype)
-      elif fid == 3:
-        if ftype == TType.I64:
-          self.numNulls = iprot.readI64()
-        else:
-          iprot.skip(ftype)
-      elif fid == 4:
+  def __init__(self, daysSinceEpoch=None,):
+    self.daysSinceEpoch = daysSinceEpoch
+
+  def read(self, iprot):
+    if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
+      fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec))
+      return
+    iprot.readStructBegin()
+    while True:
+      (fname, ftype, fid) = iprot.readFieldBegin()
+      if ftype == TType.STOP:
+        break
+      if fid == 1:
         if ftype == TType.I64:
-          self.numDVs = iprot.readI64()
-        else:
-          iprot.skip(ftype)
-      elif fid == 5:
-        if ftype == TType.STRING:
-          self.bitVectors = iprot.readString()
+          self.daysSinceEpoch = iprot.readI64()
         else:
           iprot.skip(ftype)
       else:
@@ -6273,49 +5800,23 @@ class StringColumnStatsData:
     if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
       oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
       return
-    oprot.writeStructBegin('StringColumnStatsData')
-    if self.maxColLen is not None:
-      oprot.writeFieldBegin('maxColLen', TType.I64, 1)
-      oprot.writeI64(self.maxColLen)
-      oprot.writeFieldEnd()
-    if self.avgColLen is not None:
-      oprot.writeFieldBegin('avgColLen', TType.DOUBLE, 2)
-      oprot.writeDouble(self.avgColLen)
-      oprot.writeFieldEnd()
-    if self.numNulls is not None:
-      oprot.writeFieldBegin('numNulls', TType.I64, 3)
-      oprot.writeI64(self.numNulls)
-      oprot.writeFieldEnd()
-    if self.numDVs is not None:
-      oprot.writeFieldBegin('numDVs', TType.I64, 4)
-      oprot.writeI64(self.numDVs)
-      oprot.writeFieldEnd()
-    if self.bitVectors is not None:
-      oprot.writeFieldBegin('bitVectors', TType.STRING, 5)
-      oprot.writeString(self.bitVectors)
+    oprot.writeStructBegin('Date')
+    if self.daysSinceEpoch is not None:
+      oprot.writeFieldBegin('daysSinceEpoch', TType.I64, 1)
+      oprot.writeI64(self.daysSinceEpoch)
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
 
   def validate(self):
-    if self.maxColLen is None:
-      raise TProtocol.TProtocolException(message='Required field maxColLen is unset!')
-    if self.avgColLen is None:
-      raise TProtocol.TProtocolException(message='Required field avgColLen is unset!')
-    if self.numNulls is None:
-      raise TProtocol.TProtocolException(message='Required field numNulls is unset!')
-    if self.numDVs is None:
-      raise TProtocol.TProtocolException(message='Required field numDVs is unset!')
+    if self.daysSinceEpoch is None:
+      raise TProtocol.TProtocolException(message='Required field daysSinceEpoch is unset!')
     return
 
 
   def __hash__(self):
     value = 17
-    value = (value * 31) ^ hash(self.maxColLen)
-    value = (value * 31) ^ hash(self.avgColLen)
-    value = (value * 31) ^ hash(self.numNulls)
-    value = (value * 31) ^ hash(self.numDVs)
-    value = (value * 31) ^ hash(self.bitVectors)
+    value = (value * 31) ^ hash(self.daysSinceEpoch)
     return value
 
   def __repr__(self):
@@ -6329,27 +5830,30 @@ class StringColumnStatsData:
   def __ne__(self, other):
     return not (self == other)
 
-class BinaryColumnStatsData:
+class DateColumnStatsData:
   """
   Attributes:
-   - maxColLen
-   - avgColLen
+   - lowValue
+   - highValue
    - numNulls
+   - numDVs
    - bitVectors
   """
 
   thrift_spec = (
     None, # 0
-    (1, TType.I64, 'maxColLen', None, None, ), # 1
-    (2, TType.DOUBLE, 'avgColLen', None, None, ), # 2
+    (1, TType.STRUCT, 'lowValue', (Date, Date.thrift_spec), None, ), # 1
+    (2, TType.STRUCT, 'highValue', (Date, Date.thrift_spec), None, ), # 2
     (3, TType.I64, 'numNulls', None, None, ), # 3
-    (4, TType.STRING, 'bitVectors', None, None, ), # 4
+    (4, TType.I64, 'numDVs', None, None, ), # 4
+    (5, TType.STRING, 'bitVectors', None, None, ), # 5
   )
 
-  def __init__(self, maxColLen=None, avgColLen=None, numNulls=None, bitVectors=None,):
-    self.maxColLen = maxColLen
-    self.avgColLen = avgColLen
+  def __init__(self, lowValue=None, highValue=None, numNulls=None, numDVs=None, bitVectors=None,):
+    self.lowValue = lowValue
+    self.highValue = highValue
     self.numNulls = numNulls
+    self.numDVs = numDVs
     self.bitVectors = bitVectors
 
   def read(self, iprot):
@@ -6362,13 +5866,15 @@ class BinaryColumnStatsData:
       if ftype == TType.STOP:
         break
       if fid == 1:
-        if ftype == TType.I64:
-          self.maxColLen = iprot.readI64()
+        if ftype == TType.STRUCT:
+          self.lowValue = Date()
+          self.lowValue.read(iprot)
         else:
           iprot.skip(ftype)
       elif fid == 2:
-        if ftype == TType.DOUBLE:
-          self.avgColLen = iprot.readDouble()
+        if ftype == TType.STRUCT:
+          self.highValue = Date()
+          self.highValue.read(iprot)
         else:
           iprot.skip(ftype)
       elif fid == 3:
@@ -6377,6 +5883,11 @@ class BinaryColumnStatsData:
         else:
           iprot.skip(ftype)
       elif fid == 4:
+        if ftype == TType.I64:
+          self.numDVs = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
         if ftype == TType.STRING:
           self.bitVectors = iprot.readString()
         else:
@@ -6390,41 +5901,44 @@ class BinaryColumnStatsData:
     if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
       oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
       return
-    oprot.writeStructBegin('BinaryColumnStatsData')
-    if self.maxColLen is not None:
-      oprot.writeFieldBegin('maxColLen', TType.I64, 1)
-      oprot.writeI64(self.maxColLen)
+    oprot.writeStructBegin('DateColumnStatsData')
+    if self.lowValue is not None:
+      oprot.writeFieldBegin('lowValue', TType.STRUCT, 1)
+      self.lowValue.write(oprot)
       oprot.writeFieldEnd()
-    if self.avgColLen is not None:
-      oprot.writeFieldBegin('avgColLen', TType.DOUBLE, 2)
-      oprot.writeDouble(self.avgColLen)
+    if self.highValue is not None:
+      oprot.writeFieldBegin('highValue', TType.STRUCT, 2)
+      self.highValue.write(oprot)
       oprot.writeFieldEnd()
     if self.numNulls is not None:
       oprot.writeFieldBegin('numNulls', TType.I64, 3)
       oprot.writeI64(self.numNulls)
       oprot.writeFieldEnd()
+    if self.numDVs is not None:
+      oprot.writeFieldBegin('numDVs', TType.I64, 4)
+      oprot.writeI64(self.numDVs)
+      oprot.writeFieldEnd()
     if self.bitVectors is not None:
-      oprot.writeFieldBegin('bitVectors', TType.STRING, 4)
+      oprot.writeFieldBegin('bitVectors', TType.STRING, 5)
       oprot.writeString(self.bitVectors)
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
 
   def validate(self):
-    if self.maxColLen is None:
-      raise TProtocol.TProtocolException(message='Required field maxColLen is unset!')
-    if self.avgColLen is None:
-      raise TProtocol.TProtocolException(message='Required field avgColLen is unset!')
     if self.numNulls is None:
       raise TProtocol.TProtocolException(message='Required field numNulls is unset!')
+    if self.numDVs is None:
+      raise TProtocol.TProtocolException(message='Required field numDVs is unset!')
     return
 
 
   def __hash__(self):
     value = 17
-    value = (value * 31) ^ hash(self.maxColLen)
-    value = (value * 31) ^ hash(self.avgColLen)
+    value = (value * 31) ^ hash(self.lowValue)
+    value = (value * 31) ^ hash(self.highValue)
     value = (value * 31) ^ hash(self.numNulls)
+    value = (value * 31) ^ hash(self.numDVs)
     value = (value * 31) ^ hash(self.bitVectors)
     return value
 
@@ -6439,23 +5953,19 @@ class BinaryColumnStatsData:
   def __ne__(self, other):
     return not (self == other)
 
-class Decimal:
+class Timestamp:
   """
   Attributes:
-   - scale
-   - unscaled
+   - secondsSinceEpoch
   """
 
   thrift_spec = (
     None, # 0
-    (1, TType.STRING, 'unscaled', None, None, ), # 1
-    None, # 2
-    (3, TType.I16, 'scale', None, None, ), # 3
+    (1, TType.I64, 'secondsSinceEpoch', None, None, ), # 1
   )
 
-  def __init__(self, scale=None, unscaled=None,):
-    self.scale = scale
-    self.unscaled = unscaled
+  def __init__(self, secondsSinceEpoch=None,):
+    self.secondsSinceEpoch = secondsSinceEpoch
 
   def read(self, iprot):
     if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
@@ -6466,14 +5976,9 @@ class Decimal:
       (fname, ftype, fid) = iprot.readFieldBegin()
       if ftype == TType.STOP:
         break
-      if fid == 3:
-        if ftype == TType.I16:
-          self.scale = iprot.readI16()
-        else:
-          iprot.skip(ftype)
-      elif fid == 1:
-        if ftype == TType.STRING:
-          self.unscaled = iprot.readString()
+      if fid == 1:
+        if ftype == TType.I64:
+          self.secondsSinceEpoch = iprot.readI64()
         else:
           iprot.skip(ftype)
       else:
@@ -6485,30 +5990,23 @@ class Decimal:
     if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
       oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
       return
-    oprot.writeStructBegin('Decimal')
-    if self.unscaled is not None:
-      oprot.writeFieldBegin('unscaled', TType.STRING, 1)
-      oprot.writeString(self.unscaled)
-      oprot.writeFieldEnd()
-    if self.scale is not None:
-      oprot.writeFieldBegin('scale', TType.I16, 3)
-      oprot.writeI16(self.scale)
+    oprot.writeStructBegin('Timestamp')
+    if self.secondsSinceEpoch is not None:
+      oprot.writeFieldBegin('secondsSinceEpoch', TType.I64, 1)
+      oprot.writeI64(self.secondsSinceEpoch)
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
 
   def validate(self):
-    if self.scale is None:
-      raise TProtocol.TProtocolException(message='Required field scale is unset!')
-    if self.unscaled is None:
-      raise TProtocol.TProtocolException(message='Required field unscaled is unset!')
+    if self.secondsSinceEpoch is None:
+      raise TProtocol.TProtocolException(message='Required field secondsSinceEpoch is unset!')
     return
 
 
   def __hash__(self):
     value = 17
-    value = (value * 31) ^ hash(self.scale)
-    value = (value * 31) ^ hash(self.unscaled)
+    value = (value * 31) ^ hash(self.secondsSinceEpoch)
     return value
 
   def __repr__(self):
@@ -6522,7 +6020,7 @@ class Decimal:
   def __ne__(self, other):
     return not (self == other)
 
-class DecimalColumnStatsData:
+class TimestampColumnStatsData:
   """
   Attributes:
    - lowValue
@@ -6534,8 +6032,8 @@ class DecimalColumnStatsData:
 
   thrift_spec = (
     None, # 0
-    (1, TType.STRUCT, 'lowValue', (Decimal, Decimal.thrift_spec), None, ), # 1
-    (2, TType.STRUCT, 'highValue', (Decimal, Decimal.thrift_spec), None, ), # 2
+    (1, TType.STRUCT, 'lowValue', (Timestamp, Timestamp.thrift_spec), None, ), # 1
+    (2, TType.STRUCT, 'highValue', (Timestamp, Timestamp.thrift_spec), None, ), # 2
     (3, TType.I64, 'numNulls', None, None, ), # 3
     (4, TType.I64, 'numDVs', None, None, ), # 4
     (5, TType.STRING, 'bitVectors', None, None, ), # 5
@@ -6559,13 +6057,13 @@ class DecimalColumnStatsData:
         break
       if fid == 1:
         if ftype == TType.STRUCT:
-          self.lowValue = Decimal()
+          self.lowValue = Timestamp()
           self.lowValue.read(iprot)
         else:
           iprot.skip(ftype)
       elif fid == 2:
         if ftype == TType.STRUCT:
-          self.highValue = Decimal()
+          self.highValue = Timestamp()
           self.highValue.read(iprot)
         else:
           iprot.skip(ftype)
@@ -6593,7 +6091,7 @@ class DecimalColumnStatsData:
     if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
       oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
       return
-    oprot.writeStructBegin('DecimalColumnStatsData')
+    oprot.writeStructBegin('TimestampColumnStatsData')
     if self.lowValue is not None:
       oprot.writeFieldBegin('lowValue', TType.STRUCT, 1)
       self.lowValue.write(oprot)
@@ -6645,19 +6143,40 @@ class DecimalColumnStatsData:
   def __ne__(self, other):
     return not (self == other)
 
-class Date:
+class ColumnStatisticsData:
   """
   Attributes:
-   - daysSinceEpoch
+   - booleanStats
+   - longStats
+   - doubleStats
+   - stringStats
+   - binaryStats
+   - decimalStats
+   - dateStats
+   - timestampStats
   """
 
   thrift_spec = (
     None, # 0
-    (1, TType.I64, 'daysSinceEpoch', None, None, ), # 1
+    (1, TType.STRUCT, 'booleanStats', (BooleanColumnStatsData, BooleanColumnStatsData.thrift_spec), None, ), # 1
+    (2, TType.STRUCT, 'longStats', (LongColumnStatsData, LongColumnStatsData.thrift_spec), None, ), # 2
+    (3, TType.STRUCT, 'doubleStats', (DoubleColumnStatsData, DoubleColumnStatsData.thrift_spec), None, ), # 3
+    (4, TType.STRUCT, 'stringStats', (StringColumnStatsData, StringColumnStatsData.thrift_spec), None, ), # 4
+    (5, TType.STRUCT, 'binaryStats', (BinaryColumnStatsData, BinaryColumnStatsData.thrift_spec), None, ), # 5
+    (6, TType.STRUCT, 'decimalStats', (DecimalColumnStatsData, DecimalColumnStatsData.thrift_spec), None, ), # 6
+    (7, TType.STRUCT, 'dateStats', (DateColumnStatsData, DateColumnStatsData.thrift_spec), None, ), # 7
+    (8, TType.STRUCT, 'timestampStats', (TimestampColumnStatsData, TimestampColumnStatsData.thrift_spec), None, ), # 8
   )
 
-  def __init__(self, daysSinceEpoch=None,):
-    self.daysSinceEpoch = daysSinceEpoch
+  def __init__(self, booleanStats=None, longStats=None, doubleStats=None, stringStats=None, binaryStats=None, decimalStats=None, dateStats=None, timestampStats=None,):
+    self.booleanStats = booleanStats
+    self.longStats = longStats
+    self.doubleStats = doubleStats
+    self.stringStats = stringStats
+    self.binaryStats = binaryStats
+    self.decimalStats = decimalStats
+    self.dateStats = dateStats
+    self.timestampStats = timestampStats
 
   def read(self, iprot):
     if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
@@ -6669,8 +6188,51 @@ class Date:
       if ftype == TType.STOP:
         break
       if fid == 1:
-        if ftype == TType.I64:
-          self.daysSinceEpoch = iprot.readI64()
+        if ftype == TType.STRUCT:
+          self.booleanStats = BooleanColumnStatsData()
+          self.booleanStats.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRUCT:
+          self.longStats = LongColumnStatsData()
+          self.longStats.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRUCT:
+          self.doubleStats = DoubleColumnStatsData()
+          self.doubleStats.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRUCT:
+          self.stringStats = StringColumnStatsData()
+          self.stringStats.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.STRUCT:
+          self.binaryStats = BinaryColumnStatsData()
+          self.binaryStats.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRUCT:
+          self.decimalStats = DecimalColumnStatsData()
+          self.decimalStats.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.STRUCT:
+          self.dateStats = DateColumnStatsData()
+          self.dateStats.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.STRUCT:
+          self.timestampStats = TimestampColumnStatsData()
+          self.timestampStats.read(iprot)
         else:
           iprot.skip(ftype)
       else:
@@ -6682,23 +6244,56 @@ class Date:
     if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
       oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
       return
-    oprot.writeStructBegin('Date')
-    if self.daysSinceEpoch is not None:
-      oprot.writeFieldBegin('daysSinceEpoch', TType.I64, 1)
-      oprot.writeI64(self.daysSinceEpoch)
+    oprot.writeStructBegin('ColumnStatisticsData')
+    if self.booleanStats is not None:
+      oprot.writeFieldBegin('booleanStats', TType.STRUCT, 1)
+      self.booleanStats.write(oprot)
+      oprot.writeFieldEnd()
+    if self.longStats is not None:
+      oprot.writeFieldBegin('longStats', TType.STRUCT, 2)
+      self.longStats.write(oprot)
+      oprot.writeFieldEnd()
+    if self.doubleStats is not None:
+      oprot.writeFieldBegin('doubleStats', TType.STRUCT, 3)
+      self.doubleStats.write(oprot)
+      oprot.writeFieldEnd()
+    if self.stringStats is not None:
+      oprot.writeFieldBegin('stringStats', TType.STRUCT, 4)
+      self.stringStats.write(oprot)
+      oprot.writeFieldEnd()
+    if self.binaryStats is not None:
+      oprot.writeFieldBegin('binaryStats', TType.STRUCT, 5)
+      self.binaryStats.write(oprot)
+      oprot.writeFieldEnd()
+    if self.decimalStats is not None:
+      oprot.writeFieldBegin('decimalStats', TType.STRUCT, 6)
+      self.decimalStats.write(oprot)
+      oprot.writeFieldEnd()
+    if self.dateStats is not None:
+      oprot.writeFieldBegin('dateStats', TType.STRUCT, 7)
+      self.dateStats.write(oprot)
+      oprot.writeFieldEnd()
+    if self.timestampStats is not None:
+      oprot.writeFieldBegin('timestampStats', TType.STRUCT, 8)
+      self.timestampStats.write(oprot)
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
 
   def validate(self):
-    if self.daysSinceEpoch is None:
-      raise TProtocol.TProtocolException(message='Required field daysSinceEpoch is unset!')
     return
 
 
   def __hash__(self):
     value = 17
-    value = (value * 31) ^ hash(self.daysSinceEpoch)
+    value = (value * 31) ^ hash(self.booleanStats)
+    value = (value * 31) ^ hash(self.longStats)
+    value = (value * 31) ^ hash(self.doubleStats)
+    value = (value * 31) ^ hash(self.stringStats)
+    value = (value * 31) ^ hash(self.binaryStats)
+    value = (value * 31) ^ hash(self.decimalStats)
+    value = (value * 31) ^ hash(self.dateStats)
+    value = (value * 31) ^ hash(self.timestampStats)
     return value
 
   def __repr__(self):
@@ -6712,31 +6307,25 @@ class Date:
   def __ne__(self, other):
     return not (self == other)
 
-class DateColumnStatsData:
+class ColumnStatisticsObj:
   """
   Attributes:
-   - lowValue
-   - highValue
-   - numNulls
-   - numDVs
-   - bitVectors
+   - colName
+   - colType
+   - statsData
   """
 
   thrift_spec = (
     None, # 0
-    (1, TType.STRUCT, 'lowValue', (Date, Date.thrift_spec), None, ), # 1
-    (2, TType.STRUCT, 'highValue', (Date, Date.thrift_spec), None, ), # 2
-    (3, TType.I64, 'numNulls', None, None, ), # 3
-    (4, TType.I64, 'numDVs', None, None, ), # 4
-    (5, TType.STRING, 'bitVectors', None, None, ), # 5
+    (1, TType.STRING, 'colName', None, None, ), # 1
+    (2, TType.STRING, 'colType', None, None, ), # 2
+    (3, TType.STRUCT, 'statsData', (ColumnStatisticsData, ColumnStatisticsData.thrift_spec), None, ), # 3
   )
 
-  def __init__(self, lowValue=None, highValue=None, numNulls=None, numDVs=None, bitVectors=None,):
-    self.lowValue = lowValue
-    self.highValue = highValue
-    self.numNulls = numNulls
-    self.numDVs = numDVs
-    self.bitVectors = bitVectors
+  def __init__(self, colName=None, colType=None, statsData=None,):
+    self.colName = colName
+    self.colType = colType
+    self.statsData = statsData
 
   def read(self, iprot):
     if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
@@ -6748,30 +6337,19 @@ class DateColumnStatsData:
       if ftype == TType.STOP:
         break
       if fid == 1:
-        if ftype == TType.STRUCT:
-          self.lowValue = Date()
-          self.lowValue.read(iprot)
+        if ftype == TType.STRING:
+          self.colName = iprot.readString()
         else:
           iprot.skip(ftype)
       elif fid == 2:
-        if ftype == TType.STRUCT:
-          self.highValue = Date()
-          self.highValue.read(iprot)
+        if ftype == TType.STRING:
+          self.colType = iprot.readString()
         else:
           iprot.skip(ftype)
       elif fid == 3:
-        if ftype == TType.I64:
-          self.numNulls = iprot.readI64()
-        else:
-          iprot.skip(ftype)
-      elif fid == 4:
-        if ftype == TType.I64:
-          self.numDVs = iprot.readI64()
-        else:
-          iprot.skip(ftype)
-      elif fid == 5:
-        if ftype == TType.STRING:
-          self.bitVectors = iprot.readString()
+        if ftype == TType.STRUCT:
+          self.statsData = ColumnStatisticsData()
+          self.statsData.read(iprot)
         else:
           iprot.skip(ftype)
       else:
@@ -6783,45 +6361,37 @@ class DateColumnStatsData:
     if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
       oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
       return
-    oprot.writeStructBegin('DateColumnStatsData')
-    if self.lowValue is not None:
-      oprot.writeFieldBegin('lowValue', TType.STRUCT, 1)
-      self.lowValue.write(oprot)
-      oprot.writeFieldEnd()
-    if self.highValue is not None:
-      oprot.writeFieldBegin('highValue', TType.STRUCT, 2)
-      self.highValue.write(oprot)
-      oprot.writeFieldEnd()
-    if self.numNulls is not None:
-      oprot.writeFieldBegin('numNulls', TType.I64, 3)
-      oprot.writeI64(self.numNulls)
+    oprot.writeStructBegin('ColumnStatisticsObj')
+    if self.colName is not None:
+      oprot.writeFieldBegin('colName', TType.STRING, 1)
+      oprot.writeString(self.colName)
       oprot.writeFieldEnd()
-    if self.numDVs is not None:
-      oprot.writeFieldBegin('numDVs', TType.I64, 4)
-      oprot.writeI64(self.numDVs)
+    if self.colType is not None:
+      oprot.writeFieldBegin('colType', TType.STRING, 2)
+      oprot.writeString(self.colType)
       oprot.writeFieldEnd()
-    if self.bitVectors is not None:
-      oprot.writeFieldBegin('bitVectors', TType.STRING, 5)
-      oprot.writeString(self.bitVectors)
+    if self.statsData is not None:
+      oprot.writeFieldBegin('statsData', TType.STRUCT, 3)
+      self.statsData.write(oprot)
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
 
   def validate(self):
-    if self.numNulls is None:
-      raise TProtocol.TProtocolException(message='Required field numNulls is unset!')
-    if self.numDVs is None:
-      raise TProtocol.TProtocolException(message='Required field numDVs is unset!')
+    if self.colName is None:
+      raise TProtocol.TProtocolException(message='Required field colName is unset!')
+    if self.colType is None:
+      raise TProtocol.TProtocolException(message='Required field colType is unset!')
+    if self.statsData is None:
+      raise TProtocol.TProtocolException(message='Required field statsData is unset!')
     return
 
 
   def __hash__(self):
     value = 17
-    value = (value * 31) ^ hash(self.lowValue)
-    value = (value * 31) ^ hash(self.highValue)
-    value = (value * 31) ^ hash(self.numNulls)
-    value = (value * 31) ^ hash(self.numDVs)
-    value = (value * 31) ^ hash(self.bitVectors)
+    value = (value * 31) ^ hash(self.colName)
+    value = (value * 31) ^ hash(self.colType)
+    value = (value * 31) ^ hash(self.statsData)
     return value
 
   def __repr__(self):
@@ -6835,19 +6405,34 @@ class DateColumnStatsData:
   def __ne__(self, other):
     return not (self == other)
 
-class Timestamp:
+class ColumnStatisticsDesc:
   """
   Attributes:
-   - secondsSinceEpoch
+   - isTblLevel
+   - dbName
+   - tableName
+   - partName
+   - lastAnalyzed
+   - catName
   """
 
   thrift_spec = (
     None, # 0
-    (1, TType.I64, 'secondsSinceEpoch', None, None, ), # 1
+    (1, TType.BOOL, 'isTblLevel', None, None, ), # 1
+    (2, TType.STRING, 'dbName', None, None, ), # 2
+    (3, TType.STRING, 'tableName', None, None, ), # 3
+    (4, TType.STRING, 'partName', None, None, ), # 4
+    (5, TType.I64, 'lastAnalyzed', None, None, ), # 5
+    (6, TType.STRING, 'catName', None, None, ), # 6
   )
 
-  def __init__(self, secondsSinceEpoch=None,):
-    self.secondsSinceEpoch = secondsSinceEpoch
+  def __init__(self, isTblLevel=None, dbName=None, tableName=None, partName=None, lastAnalyzed=None, catName=None,):
+    self.isTblLevel = isTblLevel
+    self.dbName = dbName
+    self.tableName = tableName
+    self.partName = partName
+    self.lastAnalyzed = lastAnalyzed
+    self.catName = catName
 
   def read(self, iprot):
     if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
@@ -6859,8 +6444,33 @@ class Timestamp:
       if ftype == TType.STOP:
         break
       if fid == 1:
+        if ftype == TType.BOOL:
+          self.isTblLevel = iprot.readBool()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.dbName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.tableName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.STRING:
+          self.partName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
         if ftype == TType.I64:
-          self.secondsSinceEpoch = iprot.readI64()
+          self.lastAnalyzed = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.STRING:
+          self.catName = iprot.readString()
         else:
           iprot.skip(ftype)
       else:
@@ -6872,23 +6482,52 @@ class Timestamp:
     if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
       oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
       return
-    oprot.writeStructBegin('Timestamp')
-    if self.secondsSinceEpoch is not None:
-      oprot.writeFieldBegin('secondsSinceEpoch', TType.I64, 1)
-      oprot.writeI64(self.secondsSinceEpoch)
+    oprot.writeStructBegin('ColumnStatisticsDesc')
+    if self.isTblLevel is not None:
+      oprot.writeFieldBegin('isTblLevel', TType.BOOL, 1)
+      oprot.writeBool(self.isTblLevel)
+      oprot.writeFieldEnd()
+    if self.dbName is not None:
+      oprot.writeFieldBegin('dbName', TType.STRING, 2)
+      oprot.writeString(self.dbName)
+      oprot.writeFieldEnd()
+    if self.tableName is not None:
+      oprot.writeFieldBegin('tableName', TType.STRING, 3)
+      oprot.writeString(self.tableName)
+      oprot.writeFieldEnd()
+    if self.partName is not None:
+      oprot.writeFieldBegin('partName', TType.STRING, 4)
+      oprot.writeString(self.partName)
+      oprot.writeFieldEnd()
+    if self.lastAnalyzed is not None:
+      oprot.writeFieldBegin('lastAnalyzed', TType.I64, 5)
+      oprot.writeI64(self.lastAnalyzed)
+      oprot.writeFieldEnd()
+    if self.catName is not None:
+      oprot.writeFieldBegin('catName', TType.STRING, 6)
+      oprot.writeString(self.catName)
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
 
   def validate(self):
-    if self.secondsSinceEpoch is None:
-      raise TProtocol.TProtocolException(message='Required field secondsSinceEpoch is unset!')
+    if self.isTblLevel is None:
+      raise TProtocol.TProtocolException(message='Required field isTblLevel is unset!')
+    if self.dbName is None:
+      raise TProtocol.TProtocolException(message='Required field dbName is unset!')
+    if self.tableName is None:
+      raise TProtocol.TProtocolException(message='Required field tableName is unset!')
     return
 
 
   def __hash__(self):
     value = 17
-    value = (value * 31) ^ hash(self.secondsSinceEpoch)
+    value = (value * 31) ^ hash(self.isTblLevel)
+    value = (value * 31) ^ hash(self.dbName)
+    value = (value * 31) ^ hash(self.tableName)
+    value = (value * 31) ^ hash(self.partName)
+    value = (value * 31) ^ hash(self.lastAnalyzed)
+    value = (value * 31) ^ hash(self.catName)
     return value
 
   def __repr__(self):
@@ -6901,32 +6540,29 @@ class Timestamp:
 
   def __ne__(self, other):
     return not (self == other)
-
-class TimestampColumnStatsData:
-  """
-  Attributes:
-   - lowValue
-   - highValue
-   - numNulls
-   - numDVs
-   - bitVectors
+
+class ColumnStatistics:
+  """
+  Attributes:
+   - statsDesc
+   - statsObj
+   - isStatsCompliant
+   - engine
   """
 
   thrift_spec = (
     None, # 0
-    (1, TType.STRUCT, 'lowValue', (Timestamp, Timestamp.thrift_spec), None, ), # 1
-    (2, TType.STRUCT, 'highValue', (Timestamp, Timestamp.thrift_spec), None, ), # 2
-    (3, TType.I64, 'numNulls', None, None, ), # 3
-    (4, TType.I64, 'numDVs', None, None, ), # 4
-    (5, TType.STRING, 'bitVectors', None, None, ), # 5
+    (1, TType.STRUCT, 'statsDesc', (ColumnStatisticsDesc, ColumnStatisticsDesc.thrift_spec), None, ), # 1
+    (2, TType.LIST, 'statsObj', (TType.STRUCT,(ColumnStatisticsObj, ColumnStatisticsObj.thrift_spec)), None, ), # 2
+    (3, TType.BOOL, 'isStatsCompliant', None, None, ), # 3
+    (4, TType.STRING, 'engine', None, None, ), # 4
   )
 
-  def __init__(self, lowValue=None, highValue=None, numNulls=None, numDVs=None, bitVectors=None,):
-    self.lowValue = lowValue
-    self.highValue = highValue
-    self.numNulls = numNulls
-    self.numDVs = numDVs
-    self.bitVectors = bitVectors
+  def __init__(self, statsDesc=None, statsObj=None, isStatsCompliant=None, engine=None,):
+    self.statsDesc = statsDesc
+    self.statsObj = statsObj
+    self.isStatsCompliant = isStatsCompliant
+    self.engine = engine
 
   def read(self, iprot):
     if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
@@ -6939,29 +6575,29 @@ class TimestampColumnStatsData:
         break
       if fid == 1:
         if ftype == TType.STRUCT:
-          self.lowValue = Timestamp()
-          self.lowValue.read(iprot)
+          self.statsDesc = ColumnStatisticsDesc()
+          self.statsDesc.read(iprot)
         else:
           iprot.skip(ftype)
       elif fid == 2:
-        if ftype == TType.STRUCT:
-          self.highValue = Timestamp()
-          self.highValue.read(iprot)
+        if ftype == TType.LIST:
+          self.statsObj = []
+          (_etype192, _size189) = iprot.readListBegin()
+          for _i193 in xrange(_size189):
+            _elem194 = ColumnStatisticsObj()
+            _elem194.read(iprot)
+            self.statsObj.append(_elem194)
+          iprot.readListEnd()
         else:
           iprot.skip(ftype)
       elif fid == 3:
-        if ftype == TType.I64:
-          self.numNulls = iprot.readI64()
+        if ftype == TType.BOOL:
+          self.isStatsCompliant = iprot.readBool()
         else:
           iprot.skip(ftype)
       elif fid == 4:
-        if ftype == TType.I64:
-          self.numDVs = iprot.readI64()
-        else:
-          iprot.skip(ftype)
-      elif fid == 5:
         if ftype == TType.STRING:
-          self.bitVectors = iprot.readString()
+          self.engine = iprot.readString()
         else:
           iprot.skip(ftype)
       else:
@@ -6973,45 +6609,43 @@ class TimestampColumnStatsData:
     if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
       oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
       return
-    oprot.writeStructBegin('TimestampColumnStatsData')
-    if self.lowValue is not None:
-      oprot.writeFieldBegin('lowValue', TType.STRUCT, 1)
-      self.lowValue.write(oprot)
-      oprot.writeFieldEnd()
-    if self.highValue is not None:
-      oprot.writeFieldBegin('highValue', TType.STRUCT, 2)
-      self.highValue.write(oprot)
+    oprot.writeStructBegin('ColumnStatistics')
+    if self.statsDesc is not None:
+      oprot.writeFieldBegin('statsDesc', TType.STRUCT, 1)
+      self.statsDesc.write(oprot)
       oprot.writeFieldEnd()
-    if self.numNulls is not None:
-      oprot.writeFieldBegin('numNulls', TType.I64, 3)
-      oprot.writeI64(self.numNulls)
+    if self.statsObj is not None:
+      oprot.writeFieldBegin('statsObj', TType.LIST, 2)
+      oprot.writeListBegin(TType.STRUCT, len(self.statsObj))
+      for iter195 in self.statsObj:
+        iter195.write(oprot)
+      oprot.writeListEnd()
       oprot.writeFieldEnd()
-    if self.numDVs is not None:
-      oprot.writeFieldBegin('numDVs', TType.I64, 4)
-      oprot.writeI64(self.numDVs)
+    if self.isStatsCompliant is not None:
+      oprot.writeFieldBegin('isStatsCompliant', TType.BOOL, 3)
+      oprot.writeBool(self.isStatsCompliant)
       oprot.writeFieldEnd()
-    if self.bitVectors is not None:
-      oprot.writeFieldBegin('bitVectors', TType.STRING, 5)
-      oprot.writeString(self.bitVectors)
+    if self.engine is not None:
+      oprot.writeFieldBegin('engine', TType.STRING, 4)
+      oprot.writeString(self.engine)
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
 
   def validate(self):
-    if self.numNulls is None:
-      raise TProtocol.TProtocolException(message='Required field numNulls is unset!')
-    if self.numDVs is None:
-      raise TProtocol.TProtocolException(message='Required field numDVs is unset!')
+    if self.statsDesc is None:
+      raise TProtocol.TProtocolException(message='Required field statsDesc is unset!')
+    if self.statsObj is None:
+      raise TProtocol.TProtocolException(message='Required field statsObj is unset!')
     return
 
 
   def __hash__(self):
     value = 17
-    value = (value * 31) ^ hash(self.lowValue)
-    value = (value * 31) ^ hash(self.highValue)
-    value = (value * 31) ^ hash(self.numNulls)
-    value = (value * 31) ^ hash(self.numDVs)
-    value = (value * 31) ^ hash(self.bitVectors)
+    value = (value * 31) ^ hash(self.statsDesc)
+    value = (value * 31) ^ hash(self.statsObj)
+    value = (value * 31) ^ hash(self.isStatsCompliant)
+    value = (value * 31) ^ hash(self.engine)
     return value
 
   def __repr__(self):
@@ -7025,40 +6659,91 @@ class TimestampColumnStatsData:
   def __ne__(self, other):
     return not (self == other)
 
-class ColumnStatisticsData:
+class Table:
   """
   Attributes:
-   - booleanStats
-   - longStats
-   - doubleStats
-   - stringStats
-   - binaryStats
-   - decimalStats
-   - dateStats
-   - timestampStats
+   - tableName
+   - dbName
+   - owner
+   - createTime
+   - lastAccessTime
+   - retention
+   - sd
+   - partitionKeys
+   - parameters
+   - viewOriginalText
+   - viewExpandedText
+   - tableType
+   - privileges
+   - temporary
+   - rewriteEnabled
+   - creationMetadata
+   - catName
+   - ownerType
+   - writeId
+   - isStatsCompliant
+   - colStats
+   - accessType
+   - requiredReadCapabilities
+   - requiredWriteCapabilities
+   - id
   """
 
   thrift_spec = (
     None, # 0
-    (1, TType.STRUCT, 'booleanStats', (BooleanColumnStatsData, BooleanColumnStatsData.thrift_spec), None, ), # 1
-    (2, TType.STRUCT, 'longStats', (LongColumnStatsData, LongColumnStatsData.thrift_spec), None, ), # 2
-    (3, TType.STRUCT, 'doubleStats', (DoubleColumnStatsData, DoubleColumnStatsData.thrift_spec), None, ), # 3
-    (4, TType.STRUCT, 'stringStats', (StringColumnStatsData, StringColumnStatsData.thrift_spec), None, ), # 4
-    (5, TType.STRUCT, 'binaryStats', (BinaryColumnStatsData, BinaryColumnStatsData.thrift_spec), None, ), # 5
-    (6, TType.STRUCT, 'decimalStats', (DecimalColumnStatsData, DecimalColumnStatsData.thrift_spec), None, ), # 6
-    (7, TType.STRUCT, 'dateStats', (DateColumnStatsData, DateColumnStatsData.thrift_spec), None, ), # 7
-    (8, TType.STRUCT, 'timestampStats', (TimestampColumnStatsData, TimestampColumnStatsData.thrift_spec), None, ), # 8
+    (1, TType.STRING, 'tableName', None, None, ), # 1
+    (2, TType.STRING, 'dbName', None, None, ), # 2
+    (3, TType.STRING, 'owner', None, None, ), # 3
+    (4, TType.I32, 'createTime', None, None, ), # 4
+    (5, TType.I32, 'lastAccessTime', None, None, ), # 5
+    (6, TType.I32, 'retention', None, None, ), # 6
+    (7, TType.STRUCT, 'sd', (StorageDescriptor, StorageDescriptor.thrift_spec), None, ), # 7
+    (8, TType.LIST, 'partitionKeys', (TType.STRUCT,(FieldSchema, FieldSchema.thrift_spec)), None, ), # 8
+    (9, TType.MAP, 'parameters', (TType.STRING,None,TType.STRING,None), None, ), # 9
+    (10, TType.STRING, 'viewOriginalText', None, None, ), # 10
+    (11, TType.STRING, 'viewExpandedText', None, None, ), # 11
+    (12, TType.STRING, 'tableType', None, None, ), # 12
+    (13, TType.STRUCT, 'privileges', (PrincipalPrivilegeSet, PrincipalPrivilegeSet.thrift_spec), None, ), # 13
+    (14, TType.BOOL, 'temporary', None, False, ), # 14
+    (15, TType.BOOL, 'rewriteEnabled', None, None, ), # 15
+    (16, TType.STRUCT, 'creationMetadata', (CreationMetadata, CreationMetadata.thrift_spec), None, ), # 16
+    (17, TType.STRING, 'catName', None, None, ), # 17
+    (18, TType.I32, 'ownerType', None,     1, ), # 18
+    (19, TType.I64, 'writeId', None, -1, ), # 19
+    (20, TType.BOOL, 'isStatsCompliant', None, None, ), # 20
+    (21, TType.STRUCT, 'colStats', (ColumnStatistics, ColumnStatistics.thrift_spec), None, ), # 21
+    (22, TType.BYTE, 'accessType', None, None, ), # 22
+    (23, TType.LIST, 'requiredReadCapabilities', (TType.STRING,None), None, ), # 23
+    (24, TType.LIST, 'requiredWriteCapabilities', (TType.STRING,None), None, ), # 24
+    (25, TType.I64, 'id', None, None, ), # 25
   )
 
-  def __init__(self, booleanStats=None, longStats=None, doubleStats=None, stringStats=None, binaryStats=None, decimalStats=None, dateStats=None, timestampStats=None,):
-    self.booleanStats = booleanStats
-    self.longStats = longStats
-    self.doubleStats = doubleStats
-    self.stringStats = stringStats
-    self.binaryStats = binaryStats
-    self.decimalStats = decimalStats
-    self.dateStats = dateStats
-    self.timestampStats = timestampStats
+  def __init__(self, tableName=None, dbName=None, owner=None, createTime=None, lastAccessTime=None, retention=None, sd=None, partitionKeys=None, parameters=None, viewOriginalText=None, viewExpandedText=None, tableType=None, privileges=None, temporary=thrift_spec[14][4], rewriteEnabled=None, creationMetadata=None, catName=None, ownerType=thrift_spec[18][4], writeId=thrift_spec[19][4], isStatsCompliant=None, colStats=None, accessType=None, requiredReadCapabilities=None, requiredWriteCapabi [...]
+    self.tableName = tableName
+    self.dbName = dbName
+    self.owner = owner
+    self.createTime = createTime
+    self.lastAccessTime = lastAccessTime
+    self.retention = retention
+    self.sd = sd
+    self.partitionKeys = partitionKeys
+    self.parameters = parameters
+    self.viewOriginalText = viewOriginalText
+    self.viewExpandedText = viewExpandedText
+    self.tableType = tableType
+    self.privileges = privileges
+    self.temporary = temporary
+    self.rewriteEnabled = rewriteEnabled
+    self.creationMetadata = creationMetadata
+    self.catName = catName
+    self.ownerType = ownerType
+    self.writeId = writeId
+    self.isStatsCompliant = isStatsCompliant
+    self.colStats = colStats
+    self.accessType = accessType
+    self.requiredReadCapabilities = requiredReadCapabilities
+    self.requiredWriteCapabilities = requiredWriteCapabilities
+    self.id = id
 
   def read(self, iprot):
     if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
@@ -7070,51 +6755,154 @@ class ColumnStatisticsData:
       if ftype == TType.STOP:
         break
       if fid == 1:
+        if ftype == TType.STRING:
+          self.tableName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 2:
+        if ftype == TType.STRING:
+          self.dbName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 3:
+        if ftype == TType.STRING:
+          self.owner = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.I32:
+          self.createTime = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.I32:
+          self.lastAccessTime = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
+        if ftype == TType.I32:
+          self.retention = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
         if ftype == TType.STRUCT:
-          self.booleanStats = BooleanColumnStatsData()
-          self.booleanStats.read(iprot)
+          self.sd = StorageDescriptor()
+          self.sd.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.LIST:
+          self.partitionKeys = []
+          (_etype199, _size196) = iprot.readListBegin()
+          for _i200 in xrange(_size196):
+            _elem201 = FieldSchema()
+            _elem201.read(iprot)
+            self.partitionKeys.append(_elem201)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.MAP:
+          self.parameters = {}
+          (_ktype203, _vtype204, _size202 ) = iprot.readMapBegin()
+          for _i206 in xrange(_size202):
+            _key207 = iprot.readString()
+            _val208 = iprot.readString()
+            self.parameters[_key207] = _val208
+          iprot.readMapEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.STRING:
+          self.viewOriginalText = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 11:
+        if ftype == TType.STRING:
+          self.viewExpandedText = iprot.readString()
         else:
           iprot.skip(ftype)
-      elif fid == 2:
-        if ftype == TType.STRUCT:
-          self.longStats = LongColumnStatsData()
-          self.longStats.read(iprot)
+      elif fid == 12:
+        if ftype == TType.STRING:
+          self.tableType = iprot.readString()
         else:
           iprot.skip(ftype)
-      elif fid == 3:
+      elif fid == 13:
         if ftype == TType.STRUCT:
-          self.doubleStats = DoubleColumnStatsData()
-          self.doubleStats.read(iprot)
+          self.privileges = PrincipalPrivilegeSet()
+          self.privileges.read(iprot)
         else:
           iprot.skip(ftype)
-      elif fid == 4:
-        if ftype == TType.STRUCT:
-          self.stringStats = StringColumnStatsData()
-          self.stringStats.read(iprot)
+      elif fid == 14:
+        if ftype == TType.BOOL:
+          self.temporary = iprot.readBool()
         else:
           iprot.skip(ftype)
-      elif fid == 5:
-        if ftype == TType.STRUCT:
-          self.binaryStats = BinaryColumnStatsData()
-          self.binaryStats.read(iprot)
+      elif fid == 15:
+        if ftype == TType.BOOL:
+          self.rewriteEnabled = iprot.readBool()
         else:
           iprot.skip(ftype)
-      elif fid == 6:
+      elif fid == 16:
         if ftype == TType.STRUCT:
-          self.decimalStats = DecimalColumnStatsData()
-          self.decimalStats.read(iprot)
+          self.creationMetadata = CreationMetadata()
+          self.creationMetadata.read(iprot)
         else:
           iprot.skip(ftype)
-      elif fid == 7:
-        if ftype == TType.STRUCT:
-          self.dateStats = DateColumnStatsData()
-          self.dateStats.read(iprot)
+      elif fid == 17:
+        if ftype == TType.STRING:
+          self.catName = iprot.readString()
         else:
           iprot.skip(ftype)
-      elif fid == 8:
+      elif fid == 18:
+        if ftype == TType.I32:
+          self.ownerType = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 19:
+        if ftype == TType.I64:
+          self.writeId = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 20:
+        if ftype == TType.BOOL:
+          self.isStatsCompliant = iprot.readBool()
+        else:
+          iprot.skip(ftype)
+      elif fid == 21:
         if ftype == TType.STRUCT:
-          self.timestampStats = TimestampColumnStatsData()
-          self.timestampStats.read(iprot)
+          self.colStats = ColumnStatistics()
+          self.colStats.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 22:
+        if ftype == TType.BYTE:
+          self.accessType = iprot.readByte()
+        else:
+          iprot.skip(ftype)
+      elif fid == 23:
+        if ftype == TType.LIST:
+          self.requiredReadCapabilities = []
+          (_etype212, _size209) = iprot.readListBegin()
+          for _i213 in xrange(_size209):
+            _elem214 = iprot.readString()
+            self.requiredReadCapabilities.append(_elem214)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 24:
+        if ftype == TType.LIST:
+          self.requiredWriteCapabilities = []
+          (_etype218, _size215) = iprot.readListBegin()
+          for _i219 in xrange(_size215):
+            _elem220 = iprot.readString()
+            self.requiredWriteCapabilities.append(_elem220)
+          iprot.readListEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 25:
+        if ftype == TType.I64:
+          self.id = iprot.readI64()
         else:
           iprot.skip(ftype)
       else:
@@ -7126,38 +6914,119 @@ class ColumnStatisticsData:
     if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
       oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
       return
-    oprot.writeStructBegin('ColumnStatisticsData')
-    if self.booleanStats is not None:
-      oprot.writeFieldBegin('booleanStats', TType.STRUCT, 1)
-      self.booleanStats.write(oprot)
+    oprot.writeStructBegin('Table')
+    if self.tableName is not None:
+      oprot.writeFieldBegin('tableName', TType.STRING, 1)
+      oprot.writeString(self.tableName)
       oprot.writeFieldEnd()
-    if self.longStats is not None:
-      oprot.writeFieldBegin('longStats', TType.STRUCT, 2)
-      self.longStats.write(oprot)
+    if self.dbName is not None:
+      oprot.writeFieldBegin('dbName', TType.STRING, 2)
+      oprot.writeString(self.dbName)
       oprot.writeFieldEnd()
-    if self.doubleStats is not None:
-      oprot.writeFieldBegin('doubleStats', TType.STRUCT, 3)
-      self.doubleStats.write(oprot)
+    if self.owner is not None:
+      oprot.writeFieldBegin('owner', TType.STRING, 3)
+      oprot.writeString(self.owner)
       oprot.writeFieldEnd()
-    if self.stringStats is not None:
-      oprot.writeFieldBegin('stringStats', TType.STRUCT, 4)
-      self.stringStats.write(oprot)
+    if self.createTime is not None:
+      oprot.writeFieldBegin('createTime', TType.I32, 4)
+      oprot.writeI32(self.createTime)
       oprot.writeFieldEnd()
-    if self.binaryStats is not None:
-      oprot.writeFieldBegin('binaryStats', TType.STRUCT, 5)
-      self.binaryStats.write(oprot)
+    if self.lastAccessTime is not None:
+      oprot.writeFieldBegin('lastAccessTime', TType.I32, 5)
+      oprot.writeI32(self.lastAccessTime)
       oprot.writeFieldEnd()
-    if self.decimalStats is not None:
-      oprot.writeFieldBegin('decimalStats', TType.STRUCT, 6)
-      self.decimalStats.write(oprot)
+    if self.retention is not None:
+      oprot.writeFieldBegin('retention', TType.I32, 6)
+      oprot.writeI32(self.retention)
       oprot.writeFieldEnd()
-    if self.dateStats is not None:
-      oprot.writeFieldBegin('dateStats', TType.STRUCT, 7)
-      self.dateStats.write(oprot)
+    if self.sd is not None:
+      oprot.writeFieldBegin('sd', TType.STRUCT, 7)
+      self.sd.write(oprot)
       oprot.writeFieldEnd()
-    if self.timestampStats is not None:
-      oprot.writeFieldBegin('timestampStats', TType.STRUCT, 8)
-      self.timestampStats.write(oprot)
+    if self.partitionKeys is not None:
+      oprot.writeFieldBegin('partitionKeys', TType.LIST, 8)
+      oprot.writeListBegin(TType.STRUCT, len(self.partitionKeys))
+      for iter221 in self.partitionKeys:
+        iter221.write(oprot)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.parameters is not None:
+      oprot.writeFieldBegin('parameters', TType.MAP, 9)
+      oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.parameters))
+      for kiter222,viter223 in self.parameters.items():
+        oprot.writeString(kiter222)
+        oprot.writeString(viter223)
+      oprot.writeMapEnd()
+      oprot.writeFieldEnd()
+    if self.viewOriginalText is not None:
+      oprot.writeFieldBegin('viewOriginalText', TType.STRING, 10)
+      oprot.writeString(self.viewOriginalText)
+      oprot.writeFieldEnd()
+    if self.viewExpandedText is not None:
+      oprot.writeFieldBegin('viewExpandedText', TType.STRING, 11)
+      oprot.writeString(self.viewExpandedText)
+      oprot.writeFieldEnd()
+    if self.tableType is not None:
+      oprot.writeFieldBegin('tableType', TType.STRING, 12)
+      oprot.writeString(self.tableType)
+      oprot.writeFieldEnd()
+    if self.privileges is not None:
+      oprot.writeFieldBegin('privileges', TType.STRUCT, 13)
+      self.privileges.write(oprot)
+      oprot.writeFieldEnd()
+    if self.temporary is not None:
+      oprot.writeFieldBegin('temporary', TType.BOOL, 14)
+      oprot.writeBool(self.temporary)
+      oprot.writeFieldEnd()
+    if self.rewriteEnabled is not None:
+      oprot.writeFieldBegin('rewriteEnabled', TType.BOOL, 15)
+      oprot.writeBool(self.rewriteEnabled)
+      oprot.writeFieldEnd()
+    if self.creationMetadata is not None:
+      oprot.writeFieldBegin('creationMetadata', TType.STRUCT, 16)
+      self.creationMetadata.write(oprot)
+      oprot.writeFieldEnd()
+    if self.catName is not None:
+      oprot.writeFieldBegin('catName', TType.STRING, 17)
+      oprot.writeString(self.catName)
+      oprot.writeFieldEnd()
+    if self.ownerType is not None:
+      oprot.writeFieldBegin('ownerType', TType.I32, 18)
+      oprot.writeI32(self.ownerType)
+      oprot.writeFieldEnd()
+    if self.writeId is not None:
+      oprot.writeFieldBegin('writeId', TType.I64, 19)
+      oprot.writeI64(self.writeId)
+      oprot.writeFieldEnd()
+    if self.isStatsCompliant is not None:
+      oprot.writeFieldBegin('isStatsCompliant', TType.BOOL, 20)
+      oprot.writeBool(self.isStatsCompliant)
+      oprot.writeFieldEnd()
+    if self.colStats is not None:
+      oprot.writeFieldBegin('colStats', TType.STRUCT, 21)
+      self.colStats.write(oprot)
+      oprot.writeFieldEnd()
+    if self.accessType is not None:
+      oprot.writeFieldBegin('accessType', TType.BYTE, 22)
+      oprot.writeByte(self.accessType)
+      oprot.writeFieldEnd()
+    if self.requiredReadCapabilities is not None:
+      oprot.writeFieldBegin('requiredReadCapabilities', TType.LIST, 23)
+      oprot.writeListBegin(TType.STRING, len(self.requiredReadCapabilities))
+      for iter224 in self.requiredReadCapabilities:
+        oprot.writeString(iter224)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.requiredWriteCapabilities is not None:
+      oprot.writeFieldBegin('requiredWriteCapabilities', TType.LIST, 24)
+      oprot.writeListBegin(TType.STRING, len(self.requiredWriteCapabilities))
+      for iter225 in self.requiredWriteCapabilities:
+        oprot.writeString(iter225)
+      oprot.writeListEnd()
+      oprot.writeFieldEnd()
+    if self.id is not None:
+      oprot.writeFieldBegin('id', TType.I64, 25)
+      oprot.writeI64(self.id)
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
@@ -7168,14 +7037,31 @@ class ColumnStatisticsData:
 
   def __hash__(self):
     value = 17
-    value = (value * 31) ^ hash(self.booleanStats)
-    value = (value * 31) ^ hash(self.longStats)
-    value = (value * 31) ^ hash(self.doubleStats)
-    value = (value * 31) ^ hash(self.stringStats)
-    value = (value * 31) ^ hash(self.binaryStats)
-    value = (value * 31) ^ hash(self.decimalStats)
-    value = (value * 31) ^ hash(self.dateStats)
-    value = (value * 31) ^ hash(self.timestampStats)
+    value = (value * 31) ^ hash(self.tableName)
+    value = (value * 31) ^ hash(self.dbName)
+    value = (value * 31) ^ hash(self.owner)
+    value = (value * 31) ^ hash(self.createTime)
+    value = (value * 31) ^ hash(self.lastAccessTime)
+    value = (value * 31) ^ hash(self.retention)
+    value = (value * 31) ^ hash(self.sd)
+    value = (value * 31) ^ hash(self.partitionKeys)
+    value = (value * 31) ^ hash(self.parameters)
+    value = (value * 31) ^ hash(self.viewOriginalText)
+    value = (value * 31) ^ hash(self.viewExpandedText)
+    value = (value * 31) ^ hash(self.tableType)
+    value = (value * 31) ^ hash(self.privileges)
+    value = (value * 31) ^ hash(self.temporary)
+    value = (value * 31) ^ hash(self.rewriteEnabled)
+    value = (value * 31) ^ hash(self.creationMetadata)
+    value = (value * 31) ^ hash(self.catName)
+    value = (value * 31) ^ hash(self.ownerType)
+    value = (value * 31) ^ hash(self.writeId)
+    value = (value * 31) ^ hash(self.isStatsCompliant)
+    value = (value * 31) ^ hash(self.colStats)
+    value = (value * 31) ^ hash(self.accessType)
+    value = (value * 31) ^ hash(self.requiredReadCapabilities)
+    value = (value * 31) ^ hash(self.requiredWriteCapabilities)
+    value = (value * 31) ^ hash(self.id)
     return value
 
   def __repr__(self):
@@ -7189,25 +7075,52 @@ class ColumnStatisticsData:
   def __ne__(self, other):
     return not (self == other)
 
-class ColumnStatisticsObj:
+class Partition:
   """
   Attributes:
-   - colName
-   - colType
-   - statsData
+   - values
+   - dbName
+   - tableName
+   - createTime
+   - lastAccessTime
+   - sd
+   - parameters
+   - privileges
+   - catName
+   - writeId
+   - isStatsCompliant
+   - colStats
   """
 
   thrift_spec = (
     None, # 0
-    (1, TType.STRING, 'colName', None, None, ), # 1
-    (2, TType.STRING, 'colType', None, None, ), # 2
-    (3, TType.STRUCT, 'statsData', (ColumnStatisticsData, ColumnStatisticsData.thrift_spec), None, ), # 3
+    (1, TType.LIST, 'values', (TType.STRING,None), None, ), # 1
+    (2, TType.STRING, 'dbName', None, None, ), # 2
+    (3, TType.STRING, 'tableName', None, None, ), # 3
+    (4, TType.I32, 'createTime', None, None, ), # 4
+    (5, TType.I32, 'lastAccessTime', None, None, ), # 5
+    (6, TType.STRUCT, 'sd', (StorageDescriptor, StorageDescriptor.thrift_spec), None, ), # 6
+    (7, TType.MAP, 'parameters', (TType.STRING,None,TType.STRING,None), None, ), # 7
+    (8, TType.STRUCT, 'privileges', (PrincipalPrivilegeSet, PrincipalPrivilegeSet.thrift_spec), None, ), # 8
+    (9, TType.STRING, 'catName', None, None, ), # 9
+    (10, TType.I64, 'writeId', None, -1, ), # 10
+    (11, TType.BOOL, 'isStatsCompliant', None, None, ), # 11
+    (12, TType.STRUCT, 'colStats', (ColumnStatistics, ColumnStatistics.thrift_spec), None, ), # 12
   )
 
-  def __init__(self, colName=None, colType=None, statsData=None,):
-    self.colName = colName
-    self.colType = colType
-    self.statsData = statsData
+  def __init__(self, values=None, dbName=None, tableName=None, createTime=None, lastAccessTime=None, sd=None, parameters=None, privileges=None, catName=None, writeId=thrift_spec[10][4], isStatsCompliant=None, colStats=None,):
+    self.values = values
+    self.dbName = dbName
+    self.tableName = tableName
+    self.createTime = createTime
+    self.lastAccessTime = lastAccessTime
+    self.sd = sd
+    self.parameters = parameters
+    self.privileges = privileges
+    self.catName = catName
+    self.writeId = writeId
+    self.isStatsCompliant = isStatsCompliant
+    self.colStats = colStats
 
   def read(self, iprot):
     if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
@@ -7219,19 +7132,77 @@ class ColumnStatisticsObj:
       if ftype == TType.STOP:
         break
       if fid == 1:
-        if ftype == TType.STRING:
-          self.colName = iprot.readString()
+        if ftype == TType.LIST:
+          self.values = []
+          (_etype229, _size226) = iprot.readListBegin()
+          for _i230 in xrange(_size226):
+            _elem231 = iprot.readString()
+            self.values.append(_elem231)
+          iprot.readListEnd()
         else:
           iprot.skip(ftype)
       elif fid == 2:
         if ftype == TType.STRING:
-          self.colType = iprot.readString()
+          self.dbName = iprot.readString()
         else:
           iprot.skip(ftype)
       elif fid == 3:
+        if ftype == TType.STRING:
+          self.tableName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 4:
+        if ftype == TType.I32:
+          self.createTime = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 5:
+        if ftype == TType.I32:
+          self.lastAccessTime = iprot.readI32()
+        else:
+          iprot.skip(ftype)
+      elif fid == 6:
         if ftype == TType.STRUCT:
-          self.statsData = ColumnStatisticsData()
-          self.statsData.read(iprot)
+          self.sd = StorageDescriptor()
+          self.sd.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 7:
+        if ftype == TType.MAP:
+          self.parameters = {}
+          (_ktype233, _vtype234, _size232 ) = iprot.readMapBegin()
+          for _i236 in xrange(_size232):
+            _key237 = iprot.readString()
+            _val238 = iprot.readString()
+            self.parameters[_key237] = _val238
+          iprot.readMapEnd()
+        else:
+          iprot.skip(ftype)
+      elif fid == 8:
+        if ftype == TType.STRUCT:
+          self.privileges = PrincipalPrivilegeSet()
+          self.privileges.read(iprot)
+        else:
+          iprot.skip(ftype)
+      elif fid == 9:
+        if ftype == TType.STRING:
+          self.catName = iprot.readString()
+        else:
+          iprot.skip(ftype)
+      elif fid == 10:
+        if ftype == TType.I64:
+          self.writeId = iprot.readI64()
+        else:
+          iprot.skip(ftype)
+      elif fid == 11:
+        if ftype == TType.BOOL:
+          self.isStatsCompliant = iprot.readBool()
+        else:
+          iprot.skip(ftype)
+      elif fid == 12:
+        if ftype == TType.STRUCT:
+          self.colStats = ColumnStatistics()
+          self.colStats.read(iprot)
         else:
           iprot.skip(ftype)
       else:
@@ -7243,37 +7214,83 @@ class ColumnStatisticsObj:
     if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
       oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
       return
-    oprot.writeStructBegin('ColumnStatisticsObj')
-    if self.colName is not None:
-      oprot.writeFieldBegin('colName', TType.STRING, 1)
-      oprot.writeString(self.colName)
+    oprot.writeStructBegin('Partition')
+    if self.values is not None:
+      oprot.writeFieldBegin('values', TType.LIST, 1)
+      oprot.writeListBegin(TType.STRING, len(self.values))
+      for iter239 in self.values:
+        oprot.writeString(iter239)
+      oprot.writeListEnd()
       oprot.writeFieldEnd()
-    if self.colType is not None:
-      oprot.writeFieldBegin('colType', TType.STRING, 2)
-      oprot.writeString(self.colType)
+    if self.dbName is not None:
+      oprot.writeFieldBegin('dbName', TType.STRING, 2)
+      oprot.writeString(self.dbName)
       oprot.writeFieldEnd()
-    if self.statsData is not None:
-      oprot.writeFieldBegin('statsData', TType.STRUCT, 3)
-      self.statsData.write(oprot)
+    if self.tableName is not None:
+      oprot.writeFieldBegin('tableName', TType.STRING, 3)
+      oprot.writeString(self.tableName)
+      oprot.writeFieldEnd()
+    if self.createTime is not None:
+      oprot.writeFieldBegin('createTime', TType.I32, 4)
+      oprot.writeI32(self.createTime)
+      oprot.writeFieldEnd()
+    if self.lastAccessTime is not None:
+      oprot.writeFieldBegin('lastAccessTime', TType.I32, 5)
+      oprot.writeI32(self.lastAccessTime)
+      oprot.writeFieldEnd()
+    if self.sd is not None:
+      oprot.writeFieldBegin('sd', TType.STRUCT, 6)
+      self.sd.write(oprot)
+      oprot.writeFieldEnd()
+    if self.parameters is not None:
+      oprot.writeFieldBegin('parameters', TType.MAP, 7)
+      oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.parameters))
+      for kiter240,viter241 in self.parameters.items():
+        oprot.writeString(kiter240)
+        oprot.writeString(viter241)
+      oprot.writeMapEnd()
+      oprot.writeFieldEnd()
+    if self.privileges is not None:
+      oprot.writeFieldBegin('privileges', TType.STRUCT, 8)
+      self.privileges.write(oprot)
+      oprot.writeFieldEnd()
+    if self.catName is not None:
+      oprot.writeFieldBegin('catName', TType.STRING, 9)
+      oprot.writeString(self.catName)
+      oprot.writeFieldEnd()
+    if self.writeId is not None:
+      oprot.writeFieldBegin('writeId', TType.I64, 10)
+      oprot.writeI64(self.writeId)
+      oprot.writeFieldEnd()
+    if self.isStatsCompliant is not None:
+      oprot.writeFieldBegin('isStatsCompliant', TType.BOOL, 11)
+      oprot.writeBool(self.isStatsCompliant)
+      oprot.writeFieldEnd()
+    if self.colStats is not None:
+      oprot.writeFieldBegin('colStats', TType.STRUCT, 12)
+      self.colStats.write(oprot)
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
 
   def validate(self):
-    if self.colName is None:
-      raise TProtocol.TProtocolException(message='Required field colName is unset!')
-    if self.colType is None:
-      raise TProtocol.TProtocolException(message='Required field colType is unset!')
-    if self.statsData is None:
-      raise TProtocol.TProtocolException(message='Required field statsData is unset!')
     return
 
 
   def __hash__(self):
     value = 17
-    value = (value * 31) ^ hash(self.colName)
-    value = (value * 31) ^ hash(self.colType)
-    value = (value * 31) ^ hash(self.statsData)
+    value = (value * 31) ^ hash(self.values)
+    value = (value * 31) ^ hash(self.dbName)
+    value = (value * 31) ^ hash(self.tableName)
+    value = (value * 31) ^ hash(self.createTime)
+    value = (value * 31) ^ hash(self.lastAccessTime)
+    value = (value * 31) ^ hash(self.sd)
+    value = (value * 31) ^ hash(self.parameters)
+    value = (value * 31) ^ hash(self.privileges)
+    value = (value * 31) ^ hash(self.catName)
+    value = (value * 31) ^ hash(self.writeId)
+    value = (value * 31) ^ hash(self.isStatsCompliant)
+    value = (value * 31) ^ hash(self.colStats)
     return value
 
   def __repr__(self):
@@ -7287,34 +7304,34 @@ class ColumnStatisticsObj:
   def __ne__(self, other):
     return not (self == other)
 
-class ColumnStatisticsDesc:
+class PartitionWithoutSD:
   """
   Attributes:
-   - isTblLevel
-   - dbName
-   - tableName
-   - partName
-   - lastAnalyzed
-   - catName
+   - values
+   - createTime
+   - lastAccessTime
+   - relativePath
+   - parameters
+   - privileges
   """
 
   thrift_spec = (
     None, # 0
-    (1, TType.BOOL, 'isTblLevel', None, None, ), # 1
-    (2, TType.STRING, 'dbName', None, None, ), # 2
-    (3, TType.STRING, 'tableName', None, None, ), # 3
-    (4, TType.STRING, 'partName', None, None, ), # 4
-    (5, TType.I64, 'lastAnalyzed', None, None, ), # 5
-    (6, TType.STRING, 'catName', None, None, ), # 6
+    (1, TType.LIST, 'values', (TType.STRING,None), None, ), # 1
+    (2, TType.I32, 'createTime', None, None, ), # 2
+    (3, TType.I32, 'lastAccessTime', None, None, ), # 3
+    (4, TType.STRING, 'relativePath', None, None, ), # 4
+    (5, TType.MAP, 'parameters', (TType.STRING,None,TType.STRING,None), None, ), # 5
+    (6, TType.STRUCT, 'privileges', (PrincipalPrivilegeSet, PrincipalPrivilegeSet.thrift_spec), None, ), # 6
   )
 
-  def __init__(self, isTblLevel=None, dbName=None, tableName=None, partName=None, lastAnalyzed=None, catName=None,):
-    self.isTblLevel = isTblLevel
-    self.dbName = dbName
-    self.tableName = tableName
-    self.partName = partName
-    self.lastAnalyzed = lastAnalyzed
-    self.catName = catName
+  def __init__(self, values=None, createTime=None, lastAccessTime=None, relativePath=None, parameters=None, privileges=None,):
+    self.values = values
+    self.createTime = createTime
+    self.lastAccessTime = lastAccessTime
+    self.relativePath = relativePath
+    self.parameters = parameters
+    self.privileges = privileges
 
   def read(self, iprot):
     if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
@@ -7326,33 +7343,45 @@ class ColumnStatisticsDesc:
       if ftype == TType.STOP:
         break
       if fid == 1:
-        if ftype == TType.BOOL:
-          self.isTblLevel = iprot.readBool()
+        if ftype == TType.LIST:
+          self.values = []
+          (_etype245, _size242) = iprot.readListBegin()
+          for _i246 in xrange(_size242):
+            _elem247 = iprot.readString()
+            self.values.append(_elem247)
+          iprot.readListEnd()
         else:
           iprot.skip(ftype)
       elif fid == 2:
-        if ftype == TType.STRING:
-          self.dbName = iprot.readString()
+        if ftype == TType.I32:
+          self.createTime = iprot.readI32()
         else:
           iprot.skip(ftype)
       elif fid == 3:
-        if ftype == TType.STRING:
-          self.tableName = iprot.readString()
+        if ftype == TType.I32:
+          self.lastAccessTime = iprot.readI32()
         else:
           iprot.skip(ftype)
       elif fid == 4:
         if ftype == TType.STRING:
-          self.partName = iprot.readString()
+          self.relativePath = iprot.readString()
         else:
           iprot.skip(ftype)
       elif fid == 5:
-        if ftype == TType.I64:
-          self.lastAnalyzed = iprot.readI64()
+        if ftype == TType.MAP:
+          self.parameters = {}
+          (_ktype249, _vtype250, _size248 ) = iprot.readMapBegin()
+          for _i252 in xrange(_size248):
+            _key253 = iprot.readString()
+            _val254 = iprot.readString()
+            self.parameters[_key253] = _val254
+          iprot.readMapEnd()
         else:
           iprot.skip(ftype)
       elif fid == 6:
-        if ftype == TType.STRING:
-          self.catName = iprot.readString()
+        if ftype == TType.STRUCT:
+          self.privileges = PrincipalPrivilegeSet()
+          self.privileges.read(iprot)
         else:
           iprot.skip(ftype)
       else:
@@ -7364,52 +7393,53 @@ class ColumnStatisticsDesc:
     if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None:
       oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec)))
       return
-    oprot.writeStructBegin('ColumnStatisticsDesc')
-    if self.isTblLevel is not None:
-      oprot.writeFieldBegin('isTblLevel', TType.BOOL, 1)
-      oprot.writeBool(self.isTblLevel)
+    oprot.writeStructBegin('PartitionWithoutSD')
+    if self.values is not None:
+      oprot.writeFieldBegin('values', TType.LIST, 1)
+      oprot.writeListBegin(TType.STRING, len(self.values))
+      for iter255 in self.values:
+        oprot.writeString(iter255)
+      oprot.writeListEnd()
       oprot.writeFieldEnd()
-    if self.dbName is not None:
-      oprot.writeFieldBegin('dbName', TType.STRING, 2)
-      oprot.writeString(self.dbName)
+    if self.createTime is not None:
+      oprot.writeFieldBegin('createTime', TType.I32, 2)
+      oprot.writeI32(self.createTime)
       oprot.writeFieldEnd()
-    if self.tableName is not None:
-      oprot.writeFieldBegin('tableName', TType.STRING, 3)
-      oprot.writeString(self.tableName)
+    if self.lastAccessTime is not None:
+      oprot.writeFieldBegin('lastAccessTime', TType.I32, 3)
+      oprot.writeI32(self.lastAccessTime)
       oprot.writeFieldEnd()
-    if self.partName is not None:
-      oprot.writeFieldBegin('partName', TType.STRING, 4)
-      oprot.writeString(self.partName)
+    if self.relativePath is not None:
+      oprot.writeFieldBegin('relativePath', TType.STRING, 4)
+      oprot.writeString(self.relativePath)
       oprot.writeFieldEnd()
-    if self.lastAnalyzed is not None:
-      oprot.writeFieldBegin('lastAnalyzed', TType.I64, 5)
-      oprot.writeI64(self.lastAnalyzed)
+    if self.parameters is not None:
+      oprot.writeFieldBegin('parameters', TType.MAP, 5)
+      oprot.writeMapBegin(TType.STRING, TType.STRING, len(self.parameters))
+      for kiter256,viter257 in self.parameters.items():
+        oprot.writeString(kiter256)
+        oprot.writeString(viter257)
+      oprot.writeMapEnd()
       oprot.writeFieldEnd()
-    if self.catName is not None:
-      oprot.writeFieldBegin('catName', TType.STRING, 6)
-      oprot.writeString(self.catName)
+    if self.privileges is not None:
+      oprot.writeFieldBegin('privileges', TType.STRUCT, 6)
+      self.privileges.write(oprot)
       oprot.writeFieldEnd()
     oprot.writeFieldStop()
     oprot.writeStructEnd()
 
   def validate(self):
-    if self.isTblLevel is None:
-      raise TProtocol.TProtocolException(message='Required field isTblLevel is unset!')
-    if self.dbName is None:
-      raise TProtocol.TProtocolException(message='Required field dbName is unset!')
-    if self.tableName is None:
-      raise TProtocol.TProtocolException(message='Required field tableName is unset!')
     return
 
 
   def __hash__(self):
     value = 17
-    value = (value * 31) ^ hash(self.isTblLevel)
-    value = (value * 31) ^ hash(self.dbName)
-    value = (value * 31) ^ hash(self.tableName)
-    value = (value * 31) ^ hash(self.partName)
-    value = (value * 31) ^ hash(self.lastAnalyzed)
-    value = (value * 31) ^ hash(self.catName)
+    value = (value * 31) ^ hash(self.values)
+    value = (value * 31) ^ hash(self.createTime)
+    value = (value * 31) ^ hash(self.lastAccessTime)
+    value = (value * 31) ^ hash(self.relativePath)
+    value = (value * 31) ^ hash(self.parameters)
+    value = (value * 31) ^ hash(self.privileges)
     return value
 
   def __repr__(self):
@@ -7423,28 +7453,22 @@ class ColumnStatisticsDesc:
   def __ne__(self, other):
     return not (self == other)
 
-class ColumnStatistics:
+class PartitionSpecWithSharedSD:
   """
   Attributes:
-   - statsDesc
-   - statsObj
-   - isStatsCompliant
-   - engine
+   - partitions
+   - sd
   """
 
   thrift_spec = (
     None, # 0
-    (1, TType.STRUCT, 'statsDesc', (ColumnStatisticsDesc, ColumnStatisticsDesc.thrift_spec), None, ), # 1
-    (2, TType.LIST, 'statsObj', (TType.STRUCT,(ColumnStatisticsObj, ColumnStatisticsObj.thrift_spec)), None, ), # 2
-    (3, TType.BOOL, 'isStatsCompliant', None, None, ), # 3
-    (4, TType.STRING, 'engine', None, None, ), # 4
+    (1, TType.LIST, 'partitions', (TType.STRUCT,(PartitionWithoutSD, PartitionWithoutSD.thrift_spec)), None, ), # 1
+    (2, TType.STRUCT, 'sd', (StorageDescriptor, StorageDescriptor.thrift_spec), None, ), # 2
   )
 
-  def __init__(self, statsDesc=None, statsObj=None, isStatsCompliant=None, engine=None,):
-    self.statsDesc = statsDesc
-    self.statsObj = statsObj
-    self.isStatsCompliant = isStatsCompliant
-    self.engine = engine
+  def __init__(self, partitions=None, sd=None,):
+    self.partitions = partitions
+    self.sd = sd
 
   def read(self, iprot):
     if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None:
@@ -7456,30 +7480,20 @@ class ColumnStatistics:
       if ftype == TType.STOP:
         break
... 857 lines suppressed ...