commit 0273a5ea71ba2eccbb1990366475e5d730db108b Author: Vihang Karajgaonkar Date: Fri May 11 11:55:48 2018 -0700 HIVE-19041 : Thrift deserialization of Partition objects should intern fields (Vihang Karajgaonkar reviewed by Sahil Takiar and Misha Dmitriev) diff --git a/metastore/pom.xml b/metastore/pom.xml index 80eb532200591e56cf544ed50e6c700cec646230..fddc5ca6784db2eea0a3cb05ae86e6c6c9ec1e22 100644 --- a/metastore/pom.xml +++ b/metastore/pom.xml @@ -288,6 +288,8 @@ Partition.java SerDeInfo.java StorageDescriptor.java + ColumnStatisticsDesc.java + ColumnStatisticsObj.java ${basedir}/src/main/resources/thrift-replacements.txt true diff --git a/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/ColumnStatisticsDesc.java b/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/ColumnStatisticsDesc.java index daf3d102188a42efff6dbe1ee24d9957e1c3faae..e98793941d528b6844cc84494b10eefc06db215c 100644 --- a/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/ColumnStatisticsDesc.java +++ b/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/ColumnStatisticsDesc.java @@ -159,8 +159,8 @@ public ColumnStatisticsDesc( this(); this.isTblLevel = isTblLevel; setIsTblLevelIsSet(true); - this.dbName = dbName; - this.tableName = tableName; + this.dbName = org.apache.hive.common.util.HiveStringUtils.intern(dbName); + this.tableName = org.apache.hive.common.util.HiveStringUtils.intern(tableName); } /** @@ -170,10 +170,10 @@ public ColumnStatisticsDesc(ColumnStatisticsDesc other) { __isset_bitfield = other.__isset_bitfield; this.isTblLevel = other.isTblLevel; if (other.isSetDbName()) { - this.dbName = other.dbName; + this.dbName = org.apache.hive.common.util.HiveStringUtils.intern(other.dbName); } if (other.isSetTableName()) { - this.tableName = other.tableName; + this.tableName = org.apache.hive.common.util.HiveStringUtils.intern(other.tableName); } if (other.isSetPartName()) { this.partName = other.partName; @@ -223,7 +223,7 @@ public String getDbName() { } public void setDbName(String dbName) { - this.dbName = dbName; + this.dbName = org.apache.hive.common.util.HiveStringUtils.intern(dbName); } public void unsetDbName() { @@ -246,7 +246,7 @@ public String getTableName() { } public void setTableName(String tableName) { - this.tableName = tableName; + this.tableName = org.apache.hive.common.util.HiveStringUtils.intern(tableName); } public void unsetTableName() { @@ -669,7 +669,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, ColumnStatisticsDes break; case 2: // DB_NAME if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { - struct.dbName = iprot.readString(); + struct.dbName = org.apache.hive.common.util.HiveStringUtils.intern(iprot.readString()); struct.setDbNameIsSet(true); } else { org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); @@ -677,7 +677,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, ColumnStatisticsDes break; case 3: // TABLE_NAME if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { - struct.tableName = iprot.readString(); + struct.tableName = org.apache.hive.common.util.HiveStringUtils.intern(iprot.readString()); struct.setTableNameIsSet(true); } else { org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); @@ -778,9 +778,9 @@ public void read(org.apache.thrift.protocol.TProtocol prot, ColumnStatisticsDesc TTupleProtocol iprot = (TTupleProtocol) prot; struct.isTblLevel = iprot.readBool(); struct.setIsTblLevelIsSet(true); - struct.dbName = iprot.readString(); + struct.dbName = org.apache.hive.common.util.HiveStringUtils.intern(iprot.readString()); struct.setDbNameIsSet(true); - struct.tableName = iprot.readString(); + struct.tableName = org.apache.hive.common.util.HiveStringUtils.intern(iprot.readString()); struct.setTableNameIsSet(true); BitSet incoming = iprot.readBitSet(2); if (incoming.get(0)) { diff --git a/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/ColumnStatisticsObj.java b/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/ColumnStatisticsObj.java index 4191beb12803ce14b5e8bb90eecc894d94a889ab..faefd705046b8022f1387093e0e846683ac7b0e4 100644 --- a/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/ColumnStatisticsObj.java +++ b/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/ColumnStatisticsObj.java @@ -139,8 +139,8 @@ public ColumnStatisticsObj( ColumnStatisticsData statsData) { this(); - this.colName = colName; - this.colType = colType; + this.colName = org.apache.hive.common.util.HiveStringUtils.intern(colName); + this.colType = org.apache.hive.common.util.HiveStringUtils.intern(colType); this.statsData = statsData; } @@ -149,10 +149,10 @@ public ColumnStatisticsObj( */ public ColumnStatisticsObj(ColumnStatisticsObj other) { if (other.isSetColName()) { - this.colName = other.colName; + this.colName = org.apache.hive.common.util.HiveStringUtils.intern(other.colName); } if (other.isSetColType()) { - this.colType = other.colType; + this.colType = org.apache.hive.common.util.HiveStringUtils.intern(other.colType); } if (other.isSetStatsData()) { this.statsData = new ColumnStatisticsData(other.statsData); @@ -175,7 +175,7 @@ public String getColName() { } public void setColName(String colName) { - this.colName = colName; + this.colName = org.apache.hive.common.util.HiveStringUtils.intern(colName); } public void unsetColName() { @@ -198,7 +198,7 @@ public String getColType() { } public void setColType(String colType) { - this.colType = colType; + this.colType = org.apache.hive.common.util.HiveStringUtils.intern(colType); } public void unsetColType() { @@ -503,7 +503,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, ColumnStatisticsObj switch (schemeField.id) { case 1: // COL_NAME if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { - struct.colName = iprot.readString(); + struct.colName = org.apache.hive.common.util.HiveStringUtils.intern(iprot.readString()); struct.setColNameIsSet(true); } else { org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); @@ -511,7 +511,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, ColumnStatisticsObj break; case 2: // COL_TYPE if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { - struct.colType = iprot.readString(); + struct.colType = org.apache.hive.common.util.HiveStringUtils.intern(iprot.readString()); struct.setColTypeIsSet(true); } else { org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); @@ -579,9 +579,9 @@ public void write(org.apache.thrift.protocol.TProtocol prot, ColumnStatisticsObj @Override public void read(org.apache.thrift.protocol.TProtocol prot, ColumnStatisticsObj struct) throws org.apache.thrift.TException { TTupleProtocol iprot = (TTupleProtocol) prot; - struct.colName = iprot.readString(); + struct.colName = org.apache.hive.common.util.HiveStringUtils.intern(iprot.readString()); struct.setColNameIsSet(true); - struct.colType = iprot.readString(); + struct.colType = org.apache.hive.common.util.HiveStringUtils.intern(iprot.readString()); struct.setColTypeIsSet(true); struct.statsData = new ColumnStatisticsData(); struct.statsData.read(iprot); diff --git a/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/FieldSchema.java b/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/FieldSchema.java index 06a7b4d83e04d128abfa8b17df4a0375d4380572..9442678fff24764278c0065a1a82fc62f887a832 100644 --- a/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/FieldSchema.java +++ b/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/FieldSchema.java @@ -491,7 +491,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, FieldSchema struct) switch (schemeField.id) { case 1: // NAME if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { - struct.name = iprot.readString(); + struct.name = org.apache.hive.common.util.HiveStringUtils.intern(iprot.readString()); struct.setNameIsSet(true); } else { org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); @@ -499,7 +499,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, FieldSchema struct) break; case 2: // TYPE if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { - struct.type = iprot.readString(); + struct.type = org.apache.hive.common.util.HiveStringUtils.intern(iprot.readString()); struct.setTypeIsSet(true); } else { org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); @@ -507,7 +507,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, FieldSchema struct) break; case 3: // COMMENT if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { - struct.comment = iprot.readString(); + struct.comment = org.apache.hive.common.util.HiveStringUtils.intern(iprot.readString()); struct.setCommentIsSet(true); } else { org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); @@ -585,15 +585,15 @@ public void read(org.apache.thrift.protocol.TProtocol prot, FieldSchema struct) TTupleProtocol iprot = (TTupleProtocol) prot; BitSet incoming = iprot.readBitSet(3); if (incoming.get(0)) { - struct.name = iprot.readString(); + struct.name = org.apache.hive.common.util.HiveStringUtils.intern(iprot.readString()); struct.setNameIsSet(true); } if (incoming.get(1)) { - struct.type = iprot.readString(); + struct.type = org.apache.hive.common.util.HiveStringUtils.intern(iprot.readString()); struct.setTypeIsSet(true); } if (incoming.get(2)) { - struct.comment = iprot.readString(); + struct.comment = org.apache.hive.common.util.HiveStringUtils.intern(iprot.readString()); struct.setCommentIsSet(true); } } diff --git a/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Partition.java b/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Partition.java index a24722151a0a88e0609ac305c71890defd1f29ce..90b1977ac15b2ab9e398d069bc840bc3844cbaeb 100644 --- a/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Partition.java +++ b/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/Partition.java @@ -948,7 +948,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, Partition struct) t break; case 2: // DB_NAME if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { - struct.dbName = iprot.readString(); + struct.dbName = org.apache.hive.common.util.HiveStringUtils.intern(iprot.readString()); struct.setDbNameIsSet(true); } else { org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); @@ -956,7 +956,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, Partition struct) t break; case 3: // TABLE_NAME if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { - struct.tableName = iprot.readString(); + struct.tableName = org.apache.hive.common.util.HiveStringUtils.intern(iprot.readString()); struct.setTableNameIsSet(true); } else { org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); @@ -1182,11 +1182,11 @@ public void read(org.apache.thrift.protocol.TProtocol prot, Partition struct) th struct.setValuesIsSet(true); } if (incoming.get(1)) { - struct.dbName = iprot.readString(); + struct.dbName = org.apache.hive.common.util.HiveStringUtils.intern(iprot.readString()); struct.setDbNameIsSet(true); } if (incoming.get(2)) { - struct.tableName = iprot.readString(); + struct.tableName = org.apache.hive.common.util.HiveStringUtils.intern(iprot.readString()); struct.setTableNameIsSet(true); } if (incoming.get(3)) { diff --git a/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/SerDeInfo.java b/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/SerDeInfo.java index d5a8d999c3227ad35e4a163a3bbccd1a6a34e17c..81c7f13377fef0db1b5db258f9d0cf5ef3ff0379 100644 --- a/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/SerDeInfo.java +++ b/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/SerDeInfo.java @@ -505,7 +505,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, SerDeInfo struct) t switch (schemeField.id) { case 1: // NAME if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { - struct.name = iprot.readString(); + struct.name = org.apache.hive.common.util.HiveStringUtils.intern(iprot.readString()); struct.setNameIsSet(true); } else { org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); @@ -513,7 +513,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, SerDeInfo struct) t break; case 2: // SERIALIZATION_LIB if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { - struct.serializationLib = iprot.readString(); + struct.serializationLib = org.apache.hive.common.util.HiveStringUtils.intern(iprot.readString()); struct.setSerializationLibIsSet(true); } else { org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); @@ -626,11 +626,11 @@ public void read(org.apache.thrift.protocol.TProtocol prot, SerDeInfo struct) th TTupleProtocol iprot = (TTupleProtocol) prot; BitSet incoming = iprot.readBitSet(3); if (incoming.get(0)) { - struct.name = iprot.readString(); + struct.name = org.apache.hive.common.util.HiveStringUtils.intern(iprot.readString()); struct.setNameIsSet(true); } if (incoming.get(1)) { - struct.serializationLib = iprot.readString(); + struct.serializationLib = org.apache.hive.common.util.HiveStringUtils.intern(iprot.readString()); struct.setSerializationLibIsSet(true); } if (incoming.get(2)) { diff --git a/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/StorageDescriptor.java b/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/StorageDescriptor.java index 938f06bbce7a2b213e901f153e1da4606339c0cf..fc8b3cda280c599ac1b1a3a67d0d219130602051 100644 --- a/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/StorageDescriptor.java +++ b/metastore/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/StorageDescriptor.java @@ -1308,7 +1308,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, StorageDescriptor s break; case 2: // LOCATION if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { - struct.location = iprot.readString(); + struct.location = org.apache.hive.common.util.HiveStringUtils.intern(iprot.readString()); struct.setLocationIsSet(true); } else { org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); @@ -1316,7 +1316,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, StorageDescriptor s break; case 3: // INPUT_FORMAT if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { - struct.inputFormat = iprot.readString(); + struct.inputFormat = org.apache.hive.common.util.HiveStringUtils.intern(iprot.readString()); struct.setInputFormatIsSet(true); } else { org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); @@ -1324,7 +1324,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, StorageDescriptor s break; case 4: // OUTPUT_FORMAT if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { - struct.outputFormat = iprot.readString(); + struct.outputFormat = org.apache.hive.common.util.HiveStringUtils.intern(iprot.readString()); struct.setOutputFormatIsSet(true); } else { org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); @@ -1368,7 +1368,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, StorageDescriptor s } iprot.readListEnd(); } - struct.setBucketColsIsSet(true); + struct.bucketCols = org.apache.hive.common.util.HiveStringUtils.intern(struct.bucketCols); struct.setBucketColsIsSet(true); } else { org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); } @@ -1666,15 +1666,15 @@ public void read(org.apache.thrift.protocol.TProtocol prot, StorageDescriptor st struct.setColsIsSet(true); } if (incoming.get(1)) { - struct.location = iprot.readString(); + struct.location = org.apache.hive.common.util.HiveStringUtils.intern(iprot.readString()); struct.setLocationIsSet(true); } if (incoming.get(2)) { - struct.inputFormat = iprot.readString(); + struct.inputFormat = org.apache.hive.common.util.HiveStringUtils.intern(iprot.readString()); struct.setInputFormatIsSet(true); } if (incoming.get(3)) { - struct.outputFormat = iprot.readString(); + struct.outputFormat = org.apache.hive.common.util.HiveStringUtils.intern(iprot.readString()); struct.setOutputFormatIsSet(true); } if (incoming.get(4)) { @@ -1701,7 +1701,7 @@ public void read(org.apache.thrift.protocol.TProtocol prot, StorageDescriptor st struct.bucketCols.add(_elem181); } } - struct.setBucketColsIsSet(true); + struct.bucketCols = org.apache.hive.common.util.HiveStringUtils.intern(struct.bucketCols); struct.setBucketColsIsSet(true); } if (incoming.get(8)) { { diff --git a/metastore/src/main/resources/thrift-replacements.txt b/metastore/src/main/resources/thrift-replacements.txt index 528ed08cc074cea22feb918d3d774114bcbb0705..3f72cabd361135f54cd38e05ede760e8a157e718 100644 --- a/metastore/src/main/resources/thrift-replacements.txt +++ b/metastore/src/main/resources/thrift-replacements.txt @@ -34,10 +34,18 @@ this\.inputFormat\ \=\ inputFormat;=this.inputFormat\ \=\ org.apache.hive.common this\.outputFormat\ \=\ outputFormat;=this.outputFormat\ \=\ org.apache.hive.common.util.HiveStringUtils.intern(outputFormat); this\.dbName\ \=\ dbName;=this.dbName\ \=\ org.apache.hive.common.util.HiveStringUtils.intern(dbName); this\.tableName\ \=\ tableName;=this.tableName\ \=\ org.apache.hive.common.util.HiveStringUtils.intern(tableName); +this\.serializerClass\ \=\ serializerClass;=this\.serializerClass\ \=\ org.apache.hive.common.util.HiveStringUtils.intern(serializerClass); +this\.deserializerClass\ \=\ deserializerClass;=this\.deserializerClass\ \=\ org.apache.hive.common.util.HiveStringUtils.intern(deserializerClass); +this\.colName\ \=\ colName;=this\.colName\ \=\ org.apache.hive.common.util.HiveStringUtils.intern(colName); +this\.colType\ \=\ colType;=this\.colType\ \=\ org.apache.hive.common.util.HiveStringUtils.intern(colType); # Fix constructors and setters of List instance fields this\.bucketCols\ \=\ bucketCols;=this.bucketCols\ \=\ org.apache.hive.common.util.HiveStringUtils.intern(bucketCols); +this\.serializerClass\ \=\ other\.serializerClass;=this\.serializerClass\ \=\ org.apache.hive.common.util.HiveStringUtils.intern(other.serializerClass); +this\.deserializerClass\ \=\ other\.deserializerClass;=this\.deserializerClass\ \=\ org.apache.hive.common.util.HiveStringUtils.intern(other.deserializerClass); +this\.colName\ \=\ other\.colName;=this\.colName\ \=\ org.apache.hive.common.util.HiveStringUtils.intern(other.colName); +this\.colType\ \=\ other\.colType;=this\.colType\ \=\ org.apache.hive.common.util.HiveStringUtils.intern(other.colType); # Fix constructors and setters of Map instance fields @@ -58,3 +66,30 @@ this\.tableName\ \=\ other\.tableName;=this.tableName\ \=\ org.apache.hive.commo __this__parameters_copy_key\ \=\ other_element_key;=__this__parameters_copy_key\ \=\ org.apache.hive.common.util.HiveStringUtils.intern(other_element_key); __this__parameters_copy_value\ \=\ other_element_value;=__this__parameters_copy_value\ \=\ org.apache.hive.common.util.HiveStringUtils.intern(other_element_value); __this_values\.add(other_element);=__this_values.add(org.apache.hive.common.util.HiveStringUtils.intern(other_element)); + + +# Fix the StandardScheme read method which deserializes the fields into the thrift objects + +# PartitionStandardScheme - parameters are already interned above +struct\.dbName\ \=\ iprot\.readString\(\);=struct\.dbName\ \=\ org.apache.hive.common.util.HiveStringUtils.intern(iprot\.readString\(\)); +struct\.tableName\ \=\ iprot\.readString\(\);=struct\.tableName\ \=\ org.apache.hive.common.util.HiveStringUtils.intern(iprot\.readString\(\)); + +# StorageDescriptorStandardScheme - parameters are already interned above +struct\.location\ \=\ iprot\.readString\(\);=struct\.location\ \=\ org.apache.hive.common.util.HiveStringUtils.intern(iprot\.readString\(\)); +struct\.inputFormat\ \=\ iprot\.readString\(\);=struct\.inputFormat\ \=\ org.apache.hive.common.util.HiveStringUtils.intern(iprot\.readString\(\)); +struct\.outputFormat\ \=\ iprot\.readString\(\);=struct\.outputFormat\ \=\ org.apache.hive.common.util.HiveStringUtils.intern(iprot\.readString\(\)); +struct\.setBucketColsIsSet\(true\);=struct\.bucketCols\ \=\ org.apache.hive.common.util.HiveStringUtils.intern(struct.bucketCols);\ struct.setBucketColsIsSet(true); + +# SerDeInfoStandardScheme - parameters are already interned above +struct\.name\ \=\ iprot\.readString\(\);=struct\.name\ \=\ org.apache.hive.common.util.HiveStringUtils.intern(iprot\.readString\(\)); +struct\.serializationLib\ \=\ iprot\.readString\(\);=struct\.serializationLib\ \=\ org.apache.hive.common.util.HiveStringUtils.intern(iprot\.readString\(\)); +struct\.serializerClass\ \=\ iprot\.readString\(\);=struct\.serializerClass\ \=\ org.apache.hive.common.util.HiveStringUtils.intern(iprot\.readString\(\)); +struct\.deserializerClass\ \=\ iprot\.readString\(\);=struct\.deserializerClass\ \=\ org.apache.hive.common.util.HiveStringUtils.intern(iprot\.readString\(\)); + +# FieldSchemaStandardScheme - name field gets automatically handled above +struct\.type\ \=\ iprot\.readString\(\);=struct\.type\ \=\ org.apache.hive.common.util.HiveStringUtils.intern(iprot\.readString\(\)); +struct\.comment\ \=\ iprot\.readString\(\);=struct\.comment\ \=\ org.apache.hive.common.util.HiveStringUtils.intern(iprot\.readString\(\)); + +# ColumnStatisticsObjStandardScheme +struct\.colName\ \=\ iprot\.readString\(\);=struct\.colName\ \=\ org.apache.hive.common.util.HiveStringUtils.intern(iprot\.readString\(\)); +struct\.colType\ \=\ iprot\.readString\(\);=struct\.colType\ \=\ org.apache.hive.common.util.HiveStringUtils.intern(iprot\.readString\(\)); \ No newline at end of file