All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.snappydata.thrift.CatalogTableObject Maven / Gradle / Ivy

There is a newer version: 1.6.7
Show newest version
/**
 * Autogenerated by Thrift Compiler (0.9.3)
 *
 * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
 *  @generated
 */
package io.snappydata.thrift;

import org.apache.thrift.scheme.IScheme;
import org.apache.thrift.scheme.SchemeFactory;
import org.apache.thrift.scheme.StandardScheme;

import org.apache.thrift.scheme.TupleScheme;
import org.apache.thrift.protocol.TTupleProtocol;
import org.apache.thrift.protocol.TProtocolException;
import org.apache.thrift.EncodingUtils;
import org.apache.thrift.TException;
import org.apache.thrift.async.AsyncMethodCallback;
import org.apache.thrift.server.AbstractNonblockingServer.*;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
import java.util.EnumMap;
import java.util.Set;
import java.util.HashSet;
import java.util.EnumSet;
import java.util.Collections;
import java.util.BitSet;
import java.nio.ByteBuffer;
import java.util.Arrays;
import javax.annotation.Generated;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
@Generated(value = "Autogenerated by Thrift Compiler (0.9.3)", date = "2019-08-09")
public class CatalogTableObject implements org.apache.thrift.TBase, java.io.Serializable, Cloneable, Comparable {
  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("CatalogTableObject");

  private static final org.apache.thrift.protocol.TField TABLE_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("tableName", org.apache.thrift.protocol.TType.STRING, (short)1);
  private static final org.apache.thrift.protocol.TField SCHEMA_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("schemaName", org.apache.thrift.protocol.TType.STRING, (short)2);
  private static final org.apache.thrift.protocol.TField TABLE_TYPE_FIELD_DESC = new org.apache.thrift.protocol.TField("tableType", org.apache.thrift.protocol.TType.STRING, (short)3);
  private static final org.apache.thrift.protocol.TField STORAGE_FIELD_DESC = new org.apache.thrift.protocol.TField("storage", org.apache.thrift.protocol.TType.STRUCT, (short)4);
  private static final org.apache.thrift.protocol.TField TABLE_SCHEMA_FIELD_DESC = new org.apache.thrift.protocol.TField("tableSchema", org.apache.thrift.protocol.TType.STRING, (short)5);
  private static final org.apache.thrift.protocol.TField PROVIDER_FIELD_DESC = new org.apache.thrift.protocol.TField("provider", org.apache.thrift.protocol.TType.STRING, (short)6);
  private static final org.apache.thrift.protocol.TField PARTITION_COLUMNS_FIELD_DESC = new org.apache.thrift.protocol.TField("partitionColumns", org.apache.thrift.protocol.TType.LIST, (short)7);
  private static final org.apache.thrift.protocol.TField INDEX_COLUMNS_FIELD_DESC = new org.apache.thrift.protocol.TField("indexColumns", org.apache.thrift.protocol.TType.LIST, (short)8);
  private static final org.apache.thrift.protocol.TField PRIMARY_KEY_COLUMNS_FIELD_DESC = new org.apache.thrift.protocol.TField("primaryKeyColumns", org.apache.thrift.protocol.TType.LIST, (short)9);
  private static final org.apache.thrift.protocol.TField NUM_BUCKETS_FIELD_DESC = new org.apache.thrift.protocol.TField("numBuckets", org.apache.thrift.protocol.TType.I32, (short)10);
  private static final org.apache.thrift.protocol.TField REDUNDANCY_FIELD_DESC = new org.apache.thrift.protocol.TField("redundancy", org.apache.thrift.protocol.TType.I32, (short)11);
  private static final org.apache.thrift.protocol.TField BUCKET_OWNERS_FIELD_DESC = new org.apache.thrift.protocol.TField("bucketOwners", org.apache.thrift.protocol.TType.LIST, (short)12);
  private static final org.apache.thrift.protocol.TField BUCKET_COLUMNS_FIELD_DESC = new org.apache.thrift.protocol.TField("bucketColumns", org.apache.thrift.protocol.TType.LIST, (short)13);
  private static final org.apache.thrift.protocol.TField SORT_COLUMNS_FIELD_DESC = new org.apache.thrift.protocol.TField("sortColumns", org.apache.thrift.protocol.TType.LIST, (short)14);
  private static final org.apache.thrift.protocol.TField OWNER_FIELD_DESC = new org.apache.thrift.protocol.TField("owner", org.apache.thrift.protocol.TType.STRING, (short)15);
  private static final org.apache.thrift.protocol.TField CREATE_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("createTime", org.apache.thrift.protocol.TType.I64, (short)16);
  private static final org.apache.thrift.protocol.TField LAST_ACCESS_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("lastAccessTime", org.apache.thrift.protocol.TType.I64, (short)17);
  private static final org.apache.thrift.protocol.TField PROPERTIES_FIELD_DESC = new org.apache.thrift.protocol.TField("properties", org.apache.thrift.protocol.TType.MAP, (short)18);
  private static final org.apache.thrift.protocol.TField SIZE_IN_BYTES_FIELD_DESC = new org.apache.thrift.protocol.TField("sizeInBytes", org.apache.thrift.protocol.TType.I64, (short)19);
  private static final org.apache.thrift.protocol.TField ROW_COUNT_FIELD_DESC = new org.apache.thrift.protocol.TField("rowCount", org.apache.thrift.protocol.TType.I64, (short)20);
  private static final org.apache.thrift.protocol.TField COL_STATS_FIELD_DESC = new org.apache.thrift.protocol.TField("colStats", org.apache.thrift.protocol.TType.LIST, (short)21);
  private static final org.apache.thrift.protocol.TField IS_BROADCASTABLE_FIELD_DESC = new org.apache.thrift.protocol.TField("isBroadcastable", org.apache.thrift.protocol.TType.BOOL, (short)22);
  private static final org.apache.thrift.protocol.TField VIEW_ORIGINAL_TEXT_FIELD_DESC = new org.apache.thrift.protocol.TField("viewOriginalText", org.apache.thrift.protocol.TType.STRING, (short)23);
  private static final org.apache.thrift.protocol.TField VIEW_TEXT_FIELD_DESC = new org.apache.thrift.protocol.TField("viewText", org.apache.thrift.protocol.TType.STRING, (short)24);
  private static final org.apache.thrift.protocol.TField COMMENT_FIELD_DESC = new org.apache.thrift.protocol.TField("comment", org.apache.thrift.protocol.TType.STRING, (short)25);
  private static final org.apache.thrift.protocol.TField UNSUPPORTED_FEATURES_FIELD_DESC = new org.apache.thrift.protocol.TField("unsupportedFeatures", org.apache.thrift.protocol.TType.LIST, (short)26);
  private static final org.apache.thrift.protocol.TField TRACKS_PARTITIONS_IN_CATALOG_FIELD_DESC = new org.apache.thrift.protocol.TField("tracksPartitionsInCatalog", org.apache.thrift.protocol.TType.BOOL, (short)27);
  private static final org.apache.thrift.protocol.TField SCHEMA_PRESERVES_CASE_FIELD_DESC = new org.apache.thrift.protocol.TField("schemaPreservesCase", org.apache.thrift.protocol.TType.BOOL, (short)28);

  private static final Map, SchemeFactory> schemes = new HashMap, SchemeFactory>();
  static {
    schemes.put(StandardScheme.class, new CatalogTableObjectStandardSchemeFactory());
    schemes.put(TupleScheme.class, new CatalogTableObjectTupleSchemeFactory());
  }

  public String tableName; // required
  public String schemaName; // optional
  public String tableType; // required
  public CatalogStorage storage; // required
  public String tableSchema; // required
  public String provider; // optional
  public List partitionColumns; // required
  public List indexColumns; // required
  public List primaryKeyColumns; // required
  public int numBuckets; // optional
  public int redundancy; // optional
  public List bucketOwners; // required
  public List bucketColumns; // required
  public List sortColumns; // required
  public String owner; // required
  public long createTime; // required
  public long lastAccessTime; // required
  public Map properties; // required
  public long sizeInBytes; // optional
  public long rowCount; // optional
  public List> colStats; // required
  public boolean isBroadcastable; // required
  public String viewOriginalText; // optional
  public String viewText; // optional
  public String comment; // optional
  public List unsupportedFeatures; // required
  public boolean tracksPartitionsInCatalog; // required
  public boolean schemaPreservesCase; // required

  /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
    TABLE_NAME((short)1, "tableName"),
    SCHEMA_NAME((short)2, "schemaName"),
    TABLE_TYPE((short)3, "tableType"),
    STORAGE((short)4, "storage"),
    TABLE_SCHEMA((short)5, "tableSchema"),
    PROVIDER((short)6, "provider"),
    PARTITION_COLUMNS((short)7, "partitionColumns"),
    INDEX_COLUMNS((short)8, "indexColumns"),
    PRIMARY_KEY_COLUMNS((short)9, "primaryKeyColumns"),
    NUM_BUCKETS((short)10, "numBuckets"),
    REDUNDANCY((short)11, "redundancy"),
    BUCKET_OWNERS((short)12, "bucketOwners"),
    BUCKET_COLUMNS((short)13, "bucketColumns"),
    SORT_COLUMNS((short)14, "sortColumns"),
    OWNER((short)15, "owner"),
    CREATE_TIME((short)16, "createTime"),
    LAST_ACCESS_TIME((short)17, "lastAccessTime"),
    PROPERTIES((short)18, "properties"),
    SIZE_IN_BYTES((short)19, "sizeInBytes"),
    ROW_COUNT((short)20, "rowCount"),
    COL_STATS((short)21, "colStats"),
    IS_BROADCASTABLE((short)22, "isBroadcastable"),
    VIEW_ORIGINAL_TEXT((short)23, "viewOriginalText"),
    VIEW_TEXT((short)24, "viewText"),
    COMMENT((short)25, "comment"),
    UNSUPPORTED_FEATURES((short)26, "unsupportedFeatures"),
    TRACKS_PARTITIONS_IN_CATALOG((short)27, "tracksPartitionsInCatalog"),
    SCHEMA_PRESERVES_CASE((short)28, "schemaPreservesCase");

    private static final Map byName = new HashMap();

    static {
      for (_Fields field : EnumSet.allOf(_Fields.class)) {
        byName.put(field.getFieldName(), field);
      }
    }

    /**
     * Find the _Fields constant that matches fieldId, or null if its not found.
     */
    public static _Fields findByThriftId(int fieldId) {
      switch(fieldId) {
        case 1: // TABLE_NAME
          return TABLE_NAME;
        case 2: // SCHEMA_NAME
          return SCHEMA_NAME;
        case 3: // TABLE_TYPE
          return TABLE_TYPE;
        case 4: // STORAGE
          return STORAGE;
        case 5: // TABLE_SCHEMA
          return TABLE_SCHEMA;
        case 6: // PROVIDER
          return PROVIDER;
        case 7: // PARTITION_COLUMNS
          return PARTITION_COLUMNS;
        case 8: // INDEX_COLUMNS
          return INDEX_COLUMNS;
        case 9: // PRIMARY_KEY_COLUMNS
          return PRIMARY_KEY_COLUMNS;
        case 10: // NUM_BUCKETS
          return NUM_BUCKETS;
        case 11: // REDUNDANCY
          return REDUNDANCY;
        case 12: // BUCKET_OWNERS
          return BUCKET_OWNERS;
        case 13: // BUCKET_COLUMNS
          return BUCKET_COLUMNS;
        case 14: // SORT_COLUMNS
          return SORT_COLUMNS;
        case 15: // OWNER
          return OWNER;
        case 16: // CREATE_TIME
          return CREATE_TIME;
        case 17: // LAST_ACCESS_TIME
          return LAST_ACCESS_TIME;
        case 18: // PROPERTIES
          return PROPERTIES;
        case 19: // SIZE_IN_BYTES
          return SIZE_IN_BYTES;
        case 20: // ROW_COUNT
          return ROW_COUNT;
        case 21: // COL_STATS
          return COL_STATS;
        case 22: // IS_BROADCASTABLE
          return IS_BROADCASTABLE;
        case 23: // VIEW_ORIGINAL_TEXT
          return VIEW_ORIGINAL_TEXT;
        case 24: // VIEW_TEXT
          return VIEW_TEXT;
        case 25: // COMMENT
          return COMMENT;
        case 26: // UNSUPPORTED_FEATURES
          return UNSUPPORTED_FEATURES;
        case 27: // TRACKS_PARTITIONS_IN_CATALOG
          return TRACKS_PARTITIONS_IN_CATALOG;
        case 28: // SCHEMA_PRESERVES_CASE
          return SCHEMA_PRESERVES_CASE;
        default:
          return null;
      }
    }

    /**
     * Find the _Fields constant that matches fieldId, throwing an exception
     * if it is not found.
     */
    public static _Fields findByThriftIdOrThrow(int fieldId) {
      _Fields fields = findByThriftId(fieldId);
      if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
      return fields;
    }

    /**
     * Find the _Fields constant that matches name, or null if its not found.
     */
    public static _Fields findByName(String name) {
      return byName.get(name);
    }

    private final short _thriftId;
    private final String _fieldName;

    _Fields(short thriftId, String fieldName) {
      _thriftId = thriftId;
      _fieldName = fieldName;
    }

    public short getThriftFieldId() {
      return _thriftId;
    }

    public String getFieldName() {
      return _fieldName;
    }
  }

  // isset id assignments
  private static final int __NUMBUCKETS_ISSET_ID = 0;
  private static final int __REDUNDANCY_ISSET_ID = 1;
  private static final int __CREATETIME_ISSET_ID = 2;
  private static final int __LASTACCESSTIME_ISSET_ID = 3;
  private static final int __SIZEINBYTES_ISSET_ID = 4;
  private static final int __ROWCOUNT_ISSET_ID = 5;
  private static final int __ISBROADCASTABLE_ISSET_ID = 6;
  private static final int __TRACKSPARTITIONSINCATALOG_ISSET_ID = 7;
  private static final int __SCHEMAPRESERVESCASE_ISSET_ID = 8;
  private short __isset_bitfield = 0;
  private static final _Fields optionals[] = {_Fields.SCHEMA_NAME,_Fields.PROVIDER,_Fields.NUM_BUCKETS,_Fields.REDUNDANCY,_Fields.SIZE_IN_BYTES,_Fields.ROW_COUNT,_Fields.VIEW_ORIGINAL_TEXT,_Fields.VIEW_TEXT,_Fields.COMMENT};
  public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
  static {
    Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
    tmpMap.put(_Fields.TABLE_NAME, new org.apache.thrift.meta_data.FieldMetaData("tableName", org.apache.thrift.TFieldRequirementType.REQUIRED, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.SCHEMA_NAME, new org.apache.thrift.meta_data.FieldMetaData("schemaName", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.TABLE_TYPE, new org.apache.thrift.meta_data.FieldMetaData("tableType", org.apache.thrift.TFieldRequirementType.REQUIRED, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.STORAGE, new org.apache.thrift.meta_data.FieldMetaData("storage", org.apache.thrift.TFieldRequirementType.REQUIRED, 
        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, CatalogStorage.class)));
    tmpMap.put(_Fields.TABLE_SCHEMA, new org.apache.thrift.meta_data.FieldMetaData("tableSchema", org.apache.thrift.TFieldRequirementType.REQUIRED, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.PROVIDER, new org.apache.thrift.meta_data.FieldMetaData("provider", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.PARTITION_COLUMNS, new org.apache.thrift.meta_data.FieldMetaData("partitionColumns", org.apache.thrift.TFieldRequirementType.REQUIRED, 
        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING))));
    tmpMap.put(_Fields.INDEX_COLUMNS, new org.apache.thrift.meta_data.FieldMetaData("indexColumns", org.apache.thrift.TFieldRequirementType.REQUIRED, 
        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING))));
    tmpMap.put(_Fields.PRIMARY_KEY_COLUMNS, new org.apache.thrift.meta_data.FieldMetaData("primaryKeyColumns", org.apache.thrift.TFieldRequirementType.REQUIRED, 
        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING))));
    tmpMap.put(_Fields.NUM_BUCKETS, new org.apache.thrift.meta_data.FieldMetaData("numBuckets", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
    tmpMap.put(_Fields.REDUNDANCY, new org.apache.thrift.meta_data.FieldMetaData("redundancy", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32)));
    tmpMap.put(_Fields.BUCKET_OWNERS, new org.apache.thrift.meta_data.FieldMetaData("bucketOwners", org.apache.thrift.TFieldRequirementType.REQUIRED, 
        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, BucketOwners.class))));
    tmpMap.put(_Fields.BUCKET_COLUMNS, new org.apache.thrift.meta_data.FieldMetaData("bucketColumns", org.apache.thrift.TFieldRequirementType.REQUIRED, 
        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING))));
    tmpMap.put(_Fields.SORT_COLUMNS, new org.apache.thrift.meta_data.FieldMetaData("sortColumns", org.apache.thrift.TFieldRequirementType.REQUIRED, 
        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING))));
    tmpMap.put(_Fields.OWNER, new org.apache.thrift.meta_data.FieldMetaData("owner", org.apache.thrift.TFieldRequirementType.REQUIRED, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.CREATE_TIME, new org.apache.thrift.meta_data.FieldMetaData("createTime", org.apache.thrift.TFieldRequirementType.REQUIRED, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
    tmpMap.put(_Fields.LAST_ACCESS_TIME, new org.apache.thrift.meta_data.FieldMetaData("lastAccessTime", org.apache.thrift.TFieldRequirementType.REQUIRED, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
    tmpMap.put(_Fields.PROPERTIES, new org.apache.thrift.meta_data.FieldMetaData("properties", org.apache.thrift.TFieldRequirementType.REQUIRED, 
        new org.apache.thrift.meta_data.MapMetaData(org.apache.thrift.protocol.TType.MAP, 
            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING), 
            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING))));
    tmpMap.put(_Fields.SIZE_IN_BYTES, new org.apache.thrift.meta_data.FieldMetaData("sizeInBytes", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
    tmpMap.put(_Fields.ROW_COUNT, new org.apache.thrift.meta_data.FieldMetaData("rowCount", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
    tmpMap.put(_Fields.COL_STATS, new org.apache.thrift.meta_data.FieldMetaData("colStats", org.apache.thrift.TFieldRequirementType.REQUIRED, 
        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
            new org.apache.thrift.meta_data.MapMetaData(org.apache.thrift.protocol.TType.MAP, 
                new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING), 
                new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)))));
    tmpMap.put(_Fields.IS_BROADCASTABLE, new org.apache.thrift.meta_data.FieldMetaData("isBroadcastable", org.apache.thrift.TFieldRequirementType.REQUIRED, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
    tmpMap.put(_Fields.VIEW_ORIGINAL_TEXT, new org.apache.thrift.meta_data.FieldMetaData("viewOriginalText", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.VIEW_TEXT, new org.apache.thrift.meta_data.FieldMetaData("viewText", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.COMMENT, new org.apache.thrift.meta_data.FieldMetaData("comment", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
    tmpMap.put(_Fields.UNSUPPORTED_FEATURES, new org.apache.thrift.meta_data.FieldMetaData("unsupportedFeatures", org.apache.thrift.TFieldRequirementType.REQUIRED, 
        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
            new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING))));
    tmpMap.put(_Fields.TRACKS_PARTITIONS_IN_CATALOG, new org.apache.thrift.meta_data.FieldMetaData("tracksPartitionsInCatalog", org.apache.thrift.TFieldRequirementType.REQUIRED, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
    tmpMap.put(_Fields.SCHEMA_PRESERVES_CASE, new org.apache.thrift.meta_data.FieldMetaData("schemaPreservesCase", org.apache.thrift.TFieldRequirementType.REQUIRED, 
        new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL)));
    metaDataMap = Collections.unmodifiableMap(tmpMap);
    org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(CatalogTableObject.class, metaDataMap);
  }

  public CatalogTableObject() {
  }

  public CatalogTableObject(
    String tableName,
    String tableType,
    CatalogStorage storage,
    String tableSchema,
    List partitionColumns,
    List indexColumns,
    List primaryKeyColumns,
    List bucketOwners,
    List bucketColumns,
    List sortColumns,
    String owner,
    long createTime,
    long lastAccessTime,
    Map properties,
    List> colStats,
    boolean isBroadcastable,
    List unsupportedFeatures,
    boolean tracksPartitionsInCatalog,
    boolean schemaPreservesCase)
  {
    this();
    this.tableName = tableName;
    this.tableType = tableType;
    this.storage = storage;
    this.tableSchema = tableSchema;
    this.partitionColumns = partitionColumns;
    this.indexColumns = indexColumns;
    this.primaryKeyColumns = primaryKeyColumns;
    this.bucketOwners = bucketOwners;
    this.bucketColumns = bucketColumns;
    this.sortColumns = sortColumns;
    this.owner = owner;
    this.createTime = createTime;
    setCreateTimeIsSet(true);
    this.lastAccessTime = lastAccessTime;
    setLastAccessTimeIsSet(true);
    this.properties = properties;
    this.colStats = colStats;
    this.isBroadcastable = isBroadcastable;
    setIsBroadcastableIsSet(true);
    this.unsupportedFeatures = unsupportedFeatures;
    this.tracksPartitionsInCatalog = tracksPartitionsInCatalog;
    setTracksPartitionsInCatalogIsSet(true);
    this.schemaPreservesCase = schemaPreservesCase;
    setSchemaPreservesCaseIsSet(true);
  }

  /**
   * Performs a deep copy on other.
   */
  public CatalogTableObject(CatalogTableObject other) {
    __isset_bitfield = other.__isset_bitfield;
    if (other.isSetTableName()) {
      this.tableName = other.tableName;
    }
    if (other.isSetSchemaName()) {
      this.schemaName = other.schemaName;
    }
    if (other.isSetTableType()) {
      this.tableType = other.tableType;
    }
    if (other.isSetStorage()) {
      this.storage = new CatalogStorage(other.storage);
    }
    if (other.isSetTableSchema()) {
      this.tableSchema = other.tableSchema;
    }
    if (other.isSetProvider()) {
      this.provider = other.provider;
    }
    if (other.isSetPartitionColumns()) {
      List __this__partitionColumns = new ArrayList(other.partitionColumns);
      this.partitionColumns = __this__partitionColumns;
    }
    if (other.isSetIndexColumns()) {
      List __this__indexColumns = new ArrayList(other.indexColumns);
      this.indexColumns = __this__indexColumns;
    }
    if (other.isSetPrimaryKeyColumns()) {
      List __this__primaryKeyColumns = new ArrayList(other.primaryKeyColumns);
      this.primaryKeyColumns = __this__primaryKeyColumns;
    }
    this.numBuckets = other.numBuckets;
    this.redundancy = other.redundancy;
    if (other.isSetBucketOwners()) {
      List __this__bucketOwners = new ArrayList(other.bucketOwners.size());
      for (BucketOwners other_element : other.bucketOwners) {
        __this__bucketOwners.add(new BucketOwners(other_element));
      }
      this.bucketOwners = __this__bucketOwners;
    }
    if (other.isSetBucketColumns()) {
      List __this__bucketColumns = new ArrayList(other.bucketColumns);
      this.bucketColumns = __this__bucketColumns;
    }
    if (other.isSetSortColumns()) {
      List __this__sortColumns = new ArrayList(other.sortColumns);
      this.sortColumns = __this__sortColumns;
    }
    if (other.isSetOwner()) {
      this.owner = other.owner;
    }
    this.createTime = other.createTime;
    this.lastAccessTime = other.lastAccessTime;
    if (other.isSetProperties()) {
      Map __this__properties = new HashMap(other.properties);
      this.properties = __this__properties;
    }
    this.sizeInBytes = other.sizeInBytes;
    this.rowCount = other.rowCount;
    if (other.isSetColStats()) {
      List> __this__colStats = new ArrayList>(other.colStats.size());
      for (Map other_element : other.colStats) {
        Map __this__colStats_copy = new HashMap(other_element);
        __this__colStats.add(__this__colStats_copy);
      }
      this.colStats = __this__colStats;
    }
    this.isBroadcastable = other.isBroadcastable;
    if (other.isSetViewOriginalText()) {
      this.viewOriginalText = other.viewOriginalText;
    }
    if (other.isSetViewText()) {
      this.viewText = other.viewText;
    }
    if (other.isSetComment()) {
      this.comment = other.comment;
    }
    if (other.isSetUnsupportedFeatures()) {
      List __this__unsupportedFeatures = new ArrayList(other.unsupportedFeatures);
      this.unsupportedFeatures = __this__unsupportedFeatures;
    }
    this.tracksPartitionsInCatalog = other.tracksPartitionsInCatalog;
    this.schemaPreservesCase = other.schemaPreservesCase;
  }

  public CatalogTableObject deepCopy() {
    return new CatalogTableObject(this);
  }

  @Override
  public void clear() {
    this.tableName = null;
    this.schemaName = null;
    this.tableType = null;
    this.storage = null;
    this.tableSchema = null;
    this.provider = null;
    this.partitionColumns = null;
    this.indexColumns = null;
    this.primaryKeyColumns = null;
    setNumBucketsIsSet(false);
    this.numBuckets = 0;
    setRedundancyIsSet(false);
    this.redundancy = 0;
    this.bucketOwners = null;
    this.bucketColumns = null;
    this.sortColumns = null;
    this.owner = null;
    setCreateTimeIsSet(false);
    this.createTime = 0;
    setLastAccessTimeIsSet(false);
    this.lastAccessTime = 0;
    this.properties = null;
    setSizeInBytesIsSet(false);
    this.sizeInBytes = 0;
    setRowCountIsSet(false);
    this.rowCount = 0;
    this.colStats = null;
    setIsBroadcastableIsSet(false);
    this.isBroadcastable = false;
    this.viewOriginalText = null;
    this.viewText = null;
    this.comment = null;
    this.unsupportedFeatures = null;
    setTracksPartitionsInCatalogIsSet(false);
    this.tracksPartitionsInCatalog = false;
    setSchemaPreservesCaseIsSet(false);
    this.schemaPreservesCase = false;
  }

  public String getTableName() {
    return this.tableName;
  }

  public CatalogTableObject setTableName(String tableName) {
    this.tableName = tableName;
    return this;
  }

  public void unsetTableName() {
    this.tableName = null;
  }

  /** Returns true if field tableName is set (has been assigned a value) and false otherwise */
  public boolean isSetTableName() {
    return this.tableName != null;
  }

  public void setTableNameIsSet(boolean value) {
    if (!value) {
      this.tableName = null;
    }
  }

  public String getSchemaName() {
    return this.schemaName;
  }

  public CatalogTableObject setSchemaName(String schemaName) {
    this.schemaName = schemaName;
    return this;
  }

  public void unsetSchemaName() {
    this.schemaName = null;
  }

  /** Returns true if field schemaName is set (has been assigned a value) and false otherwise */
  public boolean isSetSchemaName() {
    return this.schemaName != null;
  }

  public void setSchemaNameIsSet(boolean value) {
    if (!value) {
      this.schemaName = null;
    }
  }

  public String getTableType() {
    return this.tableType;
  }

  public CatalogTableObject setTableType(String tableType) {
    this.tableType = tableType;
    return this;
  }

  public void unsetTableType() {
    this.tableType = null;
  }

  /** Returns true if field tableType is set (has been assigned a value) and false otherwise */
  public boolean isSetTableType() {
    return this.tableType != null;
  }

  public void setTableTypeIsSet(boolean value) {
    if (!value) {
      this.tableType = null;
    }
  }

  public CatalogStorage getStorage() {
    return this.storage;
  }

  public CatalogTableObject setStorage(CatalogStorage storage) {
    this.storage = storage;
    return this;
  }

  public void unsetStorage() {
    this.storage = null;
  }

  /** Returns true if field storage is set (has been assigned a value) and false otherwise */
  public boolean isSetStorage() {
    return this.storage != null;
  }

  public void setStorageIsSet(boolean value) {
    if (!value) {
      this.storage = null;
    }
  }

  public String getTableSchema() {
    return this.tableSchema;
  }

  public CatalogTableObject setTableSchema(String tableSchema) {
    this.tableSchema = tableSchema;
    return this;
  }

  public void unsetTableSchema() {
    this.tableSchema = null;
  }

  /** Returns true if field tableSchema is set (has been assigned a value) and false otherwise */
  public boolean isSetTableSchema() {
    return this.tableSchema != null;
  }

  public void setTableSchemaIsSet(boolean value) {
    if (!value) {
      this.tableSchema = null;
    }
  }

  public String getProvider() {
    return this.provider;
  }

  public CatalogTableObject setProvider(String provider) {
    this.provider = provider;
    return this;
  }

  public void unsetProvider() {
    this.provider = null;
  }

  /** Returns true if field provider is set (has been assigned a value) and false otherwise */
  public boolean isSetProvider() {
    return this.provider != null;
  }

  public void setProviderIsSet(boolean value) {
    if (!value) {
      this.provider = null;
    }
  }

  public int getPartitionColumnsSize() {
    return (this.partitionColumns == null) ? 0 : this.partitionColumns.size();
  }

  public java.util.Iterator getPartitionColumnsIterator() {
    return (this.partitionColumns == null) ? null : this.partitionColumns.iterator();
  }

  public void addToPartitionColumns(String elem) {
    if (this.partitionColumns == null) {
      this.partitionColumns = new ArrayList();
    }
    this.partitionColumns.add(elem);
  }

  public List getPartitionColumns() {
    return this.partitionColumns;
  }

  public CatalogTableObject setPartitionColumns(List partitionColumns) {
    this.partitionColumns = partitionColumns;
    return this;
  }

  public void unsetPartitionColumns() {
    this.partitionColumns = null;
  }

  /** Returns true if field partitionColumns is set (has been assigned a value) and false otherwise */
  public boolean isSetPartitionColumns() {
    return this.partitionColumns != null;
  }

  public void setPartitionColumnsIsSet(boolean value) {
    if (!value) {
      this.partitionColumns = null;
    }
  }

  public int getIndexColumnsSize() {
    return (this.indexColumns == null) ? 0 : this.indexColumns.size();
  }

  public java.util.Iterator getIndexColumnsIterator() {
    return (this.indexColumns == null) ? null : this.indexColumns.iterator();
  }

  public void addToIndexColumns(String elem) {
    if (this.indexColumns == null) {
      this.indexColumns = new ArrayList();
    }
    this.indexColumns.add(elem);
  }

  public List getIndexColumns() {
    return this.indexColumns;
  }

  public CatalogTableObject setIndexColumns(List indexColumns) {
    this.indexColumns = indexColumns;
    return this;
  }

  public void unsetIndexColumns() {
    this.indexColumns = null;
  }

  /** Returns true if field indexColumns is set (has been assigned a value) and false otherwise */
  public boolean isSetIndexColumns() {
    return this.indexColumns != null;
  }

  public void setIndexColumnsIsSet(boolean value) {
    if (!value) {
      this.indexColumns = null;
    }
  }

  public int getPrimaryKeyColumnsSize() {
    return (this.primaryKeyColumns == null) ? 0 : this.primaryKeyColumns.size();
  }

  public java.util.Iterator getPrimaryKeyColumnsIterator() {
    return (this.primaryKeyColumns == null) ? null : this.primaryKeyColumns.iterator();
  }

  public void addToPrimaryKeyColumns(String elem) {
    if (this.primaryKeyColumns == null) {
      this.primaryKeyColumns = new ArrayList();
    }
    this.primaryKeyColumns.add(elem);
  }

  public List getPrimaryKeyColumns() {
    return this.primaryKeyColumns;
  }

  public CatalogTableObject setPrimaryKeyColumns(List primaryKeyColumns) {
    this.primaryKeyColumns = primaryKeyColumns;
    return this;
  }

  public void unsetPrimaryKeyColumns() {
    this.primaryKeyColumns = null;
  }

  /** Returns true if field primaryKeyColumns is set (has been assigned a value) and false otherwise */
  public boolean isSetPrimaryKeyColumns() {
    return this.primaryKeyColumns != null;
  }

  public void setPrimaryKeyColumnsIsSet(boolean value) {
    if (!value) {
      this.primaryKeyColumns = null;
    }
  }

  public int getNumBuckets() {
    return this.numBuckets;
  }

  public CatalogTableObject setNumBuckets(int numBuckets) {
    this.numBuckets = numBuckets;
    setNumBucketsIsSet(true);
    return this;
  }

  public void unsetNumBuckets() {
    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __NUMBUCKETS_ISSET_ID);
  }

  /** Returns true if field numBuckets is set (has been assigned a value) and false otherwise */
  public boolean isSetNumBuckets() {
    return EncodingUtils.testBit(__isset_bitfield, __NUMBUCKETS_ISSET_ID);
  }

  public void setNumBucketsIsSet(boolean value) {
    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __NUMBUCKETS_ISSET_ID, value);
  }

  public int getRedundancy() {
    return this.redundancy;
  }

  public CatalogTableObject setRedundancy(int redundancy) {
    this.redundancy = redundancy;
    setRedundancyIsSet(true);
    return this;
  }

  public void unsetRedundancy() {
    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __REDUNDANCY_ISSET_ID);
  }

  /** Returns true if field redundancy is set (has been assigned a value) and false otherwise */
  public boolean isSetRedundancy() {
    return EncodingUtils.testBit(__isset_bitfield, __REDUNDANCY_ISSET_ID);
  }

  public void setRedundancyIsSet(boolean value) {
    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __REDUNDANCY_ISSET_ID, value);
  }

  public int getBucketOwnersSize() {
    return (this.bucketOwners == null) ? 0 : this.bucketOwners.size();
  }

  public java.util.Iterator getBucketOwnersIterator() {
    return (this.bucketOwners == null) ? null : this.bucketOwners.iterator();
  }

  public void addToBucketOwners(BucketOwners elem) {
    if (this.bucketOwners == null) {
      this.bucketOwners = new ArrayList();
    }
    this.bucketOwners.add(elem);
  }

  public List getBucketOwners() {
    return this.bucketOwners;
  }

  public CatalogTableObject setBucketOwners(List bucketOwners) {
    this.bucketOwners = bucketOwners;
    return this;
  }

  public void unsetBucketOwners() {
    this.bucketOwners = null;
  }

  /** Returns true if field bucketOwners is set (has been assigned a value) and false otherwise */
  public boolean isSetBucketOwners() {
    return this.bucketOwners != null;
  }

  public void setBucketOwnersIsSet(boolean value) {
    if (!value) {
      this.bucketOwners = null;
    }
  }

  public int getBucketColumnsSize() {
    return (this.bucketColumns == null) ? 0 : this.bucketColumns.size();
  }

  public java.util.Iterator getBucketColumnsIterator() {
    return (this.bucketColumns == null) ? null : this.bucketColumns.iterator();
  }

  public void addToBucketColumns(String elem) {
    if (this.bucketColumns == null) {
      this.bucketColumns = new ArrayList();
    }
    this.bucketColumns.add(elem);
  }

  public List getBucketColumns() {
    return this.bucketColumns;
  }

  public CatalogTableObject setBucketColumns(List bucketColumns) {
    this.bucketColumns = bucketColumns;
    return this;
  }

  public void unsetBucketColumns() {
    this.bucketColumns = null;
  }

  /** Returns true if field bucketColumns is set (has been assigned a value) and false otherwise */
  public boolean isSetBucketColumns() {
    return this.bucketColumns != null;
  }

  public void setBucketColumnsIsSet(boolean value) {
    if (!value) {
      this.bucketColumns = null;
    }
  }

  public int getSortColumnsSize() {
    return (this.sortColumns == null) ? 0 : this.sortColumns.size();
  }

  public java.util.Iterator getSortColumnsIterator() {
    return (this.sortColumns == null) ? null : this.sortColumns.iterator();
  }

  public void addToSortColumns(String elem) {
    if (this.sortColumns == null) {
      this.sortColumns = new ArrayList();
    }
    this.sortColumns.add(elem);
  }

  public List getSortColumns() {
    return this.sortColumns;
  }

  public CatalogTableObject setSortColumns(List sortColumns) {
    this.sortColumns = sortColumns;
    return this;
  }

  public void unsetSortColumns() {
    this.sortColumns = null;
  }

  /** Returns true if field sortColumns is set (has been assigned a value) and false otherwise */
  public boolean isSetSortColumns() {
    return this.sortColumns != null;
  }

  public void setSortColumnsIsSet(boolean value) {
    if (!value) {
      this.sortColumns = null;
    }
  }

  public String getOwner() {
    return this.owner;
  }

  public CatalogTableObject setOwner(String owner) {
    this.owner = owner;
    return this;
  }

  public void unsetOwner() {
    this.owner = null;
  }

  /** Returns true if field owner is set (has been assigned a value) and false otherwise */
  public boolean isSetOwner() {
    return this.owner != null;
  }

  public void setOwnerIsSet(boolean value) {
    if (!value) {
      this.owner = null;
    }
  }

  public long getCreateTime() {
    return this.createTime;
  }

  public CatalogTableObject setCreateTime(long createTime) {
    this.createTime = createTime;
    setCreateTimeIsSet(true);
    return this;
  }

  public void unsetCreateTime() {
    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __CREATETIME_ISSET_ID);
  }

  /** Returns true if field createTime is set (has been assigned a value) and false otherwise */
  public boolean isSetCreateTime() {
    return EncodingUtils.testBit(__isset_bitfield, __CREATETIME_ISSET_ID);
  }

  public void setCreateTimeIsSet(boolean value) {
    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __CREATETIME_ISSET_ID, value);
  }

  public long getLastAccessTime() {
    return this.lastAccessTime;
  }

  public CatalogTableObject setLastAccessTime(long lastAccessTime) {
    this.lastAccessTime = lastAccessTime;
    setLastAccessTimeIsSet(true);
    return this;
  }

  public void unsetLastAccessTime() {
    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __LASTACCESSTIME_ISSET_ID);
  }

  /** Returns true if field lastAccessTime is set (has been assigned a value) and false otherwise */
  public boolean isSetLastAccessTime() {
    return EncodingUtils.testBit(__isset_bitfield, __LASTACCESSTIME_ISSET_ID);
  }

  public void setLastAccessTimeIsSet(boolean value) {
    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __LASTACCESSTIME_ISSET_ID, value);
  }

  public int getPropertiesSize() {
    return (this.properties == null) ? 0 : this.properties.size();
  }

  public void putToProperties(String key, String val) {
    if (this.properties == null) {
      this.properties = new HashMap();
    }
    this.properties.put(key, val);
  }

  public Map getProperties() {
    return this.properties;
  }

  public CatalogTableObject setProperties(Map properties) {
    this.properties = properties;
    return this;
  }

  public void unsetProperties() {
    this.properties = null;
  }

  /** Returns true if field properties is set (has been assigned a value) and false otherwise */
  public boolean isSetProperties() {
    return this.properties != null;
  }

  public void setPropertiesIsSet(boolean value) {
    if (!value) {
      this.properties = null;
    }
  }

  public long getSizeInBytes() {
    return this.sizeInBytes;
  }

  public CatalogTableObject setSizeInBytes(long sizeInBytes) {
    this.sizeInBytes = sizeInBytes;
    setSizeInBytesIsSet(true);
    return this;
  }

  public void unsetSizeInBytes() {
    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __SIZEINBYTES_ISSET_ID);
  }

  /** Returns true if field sizeInBytes is set (has been assigned a value) and false otherwise */
  public boolean isSetSizeInBytes() {
    return EncodingUtils.testBit(__isset_bitfield, __SIZEINBYTES_ISSET_ID);
  }

  public void setSizeInBytesIsSet(boolean value) {
    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __SIZEINBYTES_ISSET_ID, value);
  }

  public long getRowCount() {
    return this.rowCount;
  }

  public CatalogTableObject setRowCount(long rowCount) {
    this.rowCount = rowCount;
    setRowCountIsSet(true);
    return this;
  }

  public void unsetRowCount() {
    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __ROWCOUNT_ISSET_ID);
  }

  /** Returns true if field rowCount is set (has been assigned a value) and false otherwise */
  public boolean isSetRowCount() {
    return EncodingUtils.testBit(__isset_bitfield, __ROWCOUNT_ISSET_ID);
  }

  public void setRowCountIsSet(boolean value) {
    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __ROWCOUNT_ISSET_ID, value);
  }

  public int getColStatsSize() {
    return (this.colStats == null) ? 0 : this.colStats.size();
  }

  public java.util.Iterator> getColStatsIterator() {
    return (this.colStats == null) ? null : this.colStats.iterator();
  }

  public void addToColStats(Map elem) {
    if (this.colStats == null) {
      this.colStats = new ArrayList>();
    }
    this.colStats.add(elem);
  }

  public List> getColStats() {
    return this.colStats;
  }

  public CatalogTableObject setColStats(List> colStats) {
    this.colStats = colStats;
    return this;
  }

  public void unsetColStats() {
    this.colStats = null;
  }

  /** Returns true if field colStats is set (has been assigned a value) and false otherwise */
  public boolean isSetColStats() {
    return this.colStats != null;
  }

  public void setColStatsIsSet(boolean value) {
    if (!value) {
      this.colStats = null;
    }
  }

  public boolean isIsBroadcastable() {
    return this.isBroadcastable;
  }

  public CatalogTableObject setIsBroadcastable(boolean isBroadcastable) {
    this.isBroadcastable = isBroadcastable;
    setIsBroadcastableIsSet(true);
    return this;
  }

  public void unsetIsBroadcastable() {
    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __ISBROADCASTABLE_ISSET_ID);
  }

  /** Returns true if field isBroadcastable is set (has been assigned a value) and false otherwise */
  public boolean isSetIsBroadcastable() {
    return EncodingUtils.testBit(__isset_bitfield, __ISBROADCASTABLE_ISSET_ID);
  }

  public void setIsBroadcastableIsSet(boolean value) {
    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __ISBROADCASTABLE_ISSET_ID, value);
  }

  public String getViewOriginalText() {
    return this.viewOriginalText;
  }

  public CatalogTableObject setViewOriginalText(String viewOriginalText) {
    this.viewOriginalText = viewOriginalText;
    return this;
  }

  public void unsetViewOriginalText() {
    this.viewOriginalText = null;
  }

  /** Returns true if field viewOriginalText is set (has been assigned a value) and false otherwise */
  public boolean isSetViewOriginalText() {
    return this.viewOriginalText != null;
  }

  public void setViewOriginalTextIsSet(boolean value) {
    if (!value) {
      this.viewOriginalText = null;
    }
  }

  public String getViewText() {
    return this.viewText;
  }

  public CatalogTableObject setViewText(String viewText) {
    this.viewText = viewText;
    return this;
  }

  public void unsetViewText() {
    this.viewText = null;
  }

  /** Returns true if field viewText is set (has been assigned a value) and false otherwise */
  public boolean isSetViewText() {
    return this.viewText != null;
  }

  public void setViewTextIsSet(boolean value) {
    if (!value) {
      this.viewText = null;
    }
  }

  public String getComment() {
    return this.comment;
  }

  public CatalogTableObject setComment(String comment) {
    this.comment = comment;
    return this;
  }

  public void unsetComment() {
    this.comment = null;
  }

  /** Returns true if field comment is set (has been assigned a value) and false otherwise */
  public boolean isSetComment() {
    return this.comment != null;
  }

  public void setCommentIsSet(boolean value) {
    if (!value) {
      this.comment = null;
    }
  }

  public int getUnsupportedFeaturesSize() {
    return (this.unsupportedFeatures == null) ? 0 : this.unsupportedFeatures.size();
  }

  public java.util.Iterator getUnsupportedFeaturesIterator() {
    return (this.unsupportedFeatures == null) ? null : this.unsupportedFeatures.iterator();
  }

  public void addToUnsupportedFeatures(String elem) {
    if (this.unsupportedFeatures == null) {
      this.unsupportedFeatures = new ArrayList();
    }
    this.unsupportedFeatures.add(elem);
  }

  public List getUnsupportedFeatures() {
    return this.unsupportedFeatures;
  }

  public CatalogTableObject setUnsupportedFeatures(List unsupportedFeatures) {
    this.unsupportedFeatures = unsupportedFeatures;
    return this;
  }

  public void unsetUnsupportedFeatures() {
    this.unsupportedFeatures = null;
  }

  /** Returns true if field unsupportedFeatures is set (has been assigned a value) and false otherwise */
  public boolean isSetUnsupportedFeatures() {
    return this.unsupportedFeatures != null;
  }

  public void setUnsupportedFeaturesIsSet(boolean value) {
    if (!value) {
      this.unsupportedFeatures = null;
    }
  }

  public boolean isTracksPartitionsInCatalog() {
    return this.tracksPartitionsInCatalog;
  }

  public CatalogTableObject setTracksPartitionsInCatalog(boolean tracksPartitionsInCatalog) {
    this.tracksPartitionsInCatalog = tracksPartitionsInCatalog;
    setTracksPartitionsInCatalogIsSet(true);
    return this;
  }

  public void unsetTracksPartitionsInCatalog() {
    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __TRACKSPARTITIONSINCATALOG_ISSET_ID);
  }

  /** Returns true if field tracksPartitionsInCatalog is set (has been assigned a value) and false otherwise */
  public boolean isSetTracksPartitionsInCatalog() {
    return EncodingUtils.testBit(__isset_bitfield, __TRACKSPARTITIONSINCATALOG_ISSET_ID);
  }

  public void setTracksPartitionsInCatalogIsSet(boolean value) {
    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __TRACKSPARTITIONSINCATALOG_ISSET_ID, value);
  }

  public boolean isSchemaPreservesCase() {
    return this.schemaPreservesCase;
  }

  public CatalogTableObject setSchemaPreservesCase(boolean schemaPreservesCase) {
    this.schemaPreservesCase = schemaPreservesCase;
    setSchemaPreservesCaseIsSet(true);
    return this;
  }

  public void unsetSchemaPreservesCase() {
    __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __SCHEMAPRESERVESCASE_ISSET_ID);
  }

  /** Returns true if field schemaPreservesCase is set (has been assigned a value) and false otherwise */
  public boolean isSetSchemaPreservesCase() {
    return EncodingUtils.testBit(__isset_bitfield, __SCHEMAPRESERVESCASE_ISSET_ID);
  }

  public void setSchemaPreservesCaseIsSet(boolean value) {
    __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __SCHEMAPRESERVESCASE_ISSET_ID, value);
  }

  public void setFieldValue(_Fields field, Object value) {
    switch (field) {
    case TABLE_NAME:
      if (value == null) {
        unsetTableName();
      } else {
        setTableName((String)value);
      }
      break;

    case SCHEMA_NAME:
      if (value == null) {
        unsetSchemaName();
      } else {
        setSchemaName((String)value);
      }
      break;

    case TABLE_TYPE:
      if (value == null) {
        unsetTableType();
      } else {
        setTableType((String)value);
      }
      break;

    case STORAGE:
      if (value == null) {
        unsetStorage();
      } else {
        setStorage((CatalogStorage)value);
      }
      break;

    case TABLE_SCHEMA:
      if (value == null) {
        unsetTableSchema();
      } else {
        setTableSchema((String)value);
      }
      break;

    case PROVIDER:
      if (value == null) {
        unsetProvider();
      } else {
        setProvider((String)value);
      }
      break;

    case PARTITION_COLUMNS:
      if (value == null) {
        unsetPartitionColumns();
      } else {
        setPartitionColumns((List)value);
      }
      break;

    case INDEX_COLUMNS:
      if (value == null) {
        unsetIndexColumns();
      } else {
        setIndexColumns((List)value);
      }
      break;

    case PRIMARY_KEY_COLUMNS:
      if (value == null) {
        unsetPrimaryKeyColumns();
      } else {
        setPrimaryKeyColumns((List)value);
      }
      break;

    case NUM_BUCKETS:
      if (value == null) {
        unsetNumBuckets();
      } else {
        setNumBuckets((Integer)value);
      }
      break;

    case REDUNDANCY:
      if (value == null) {
        unsetRedundancy();
      } else {
        setRedundancy((Integer)value);
      }
      break;

    case BUCKET_OWNERS:
      if (value == null) {
        unsetBucketOwners();
      } else {
        setBucketOwners((List)value);
      }
      break;

    case BUCKET_COLUMNS:
      if (value == null) {
        unsetBucketColumns();
      } else {
        setBucketColumns((List)value);
      }
      break;

    case SORT_COLUMNS:
      if (value == null) {
        unsetSortColumns();
      } else {
        setSortColumns((List)value);
      }
      break;

    case OWNER:
      if (value == null) {
        unsetOwner();
      } else {
        setOwner((String)value);
      }
      break;

    case CREATE_TIME:
      if (value == null) {
        unsetCreateTime();
      } else {
        setCreateTime((Long)value);
      }
      break;

    case LAST_ACCESS_TIME:
      if (value == null) {
        unsetLastAccessTime();
      } else {
        setLastAccessTime((Long)value);
      }
      break;

    case PROPERTIES:
      if (value == null) {
        unsetProperties();
      } else {
        setProperties((Map)value);
      }
      break;

    case SIZE_IN_BYTES:
      if (value == null) {
        unsetSizeInBytes();
      } else {
        setSizeInBytes((Long)value);
      }
      break;

    case ROW_COUNT:
      if (value == null) {
        unsetRowCount();
      } else {
        setRowCount((Long)value);
      }
      break;

    case COL_STATS:
      if (value == null) {
        unsetColStats();
      } else {
        setColStats((List>)value);
      }
      break;

    case IS_BROADCASTABLE:
      if (value == null) {
        unsetIsBroadcastable();
      } else {
        setIsBroadcastable((Boolean)value);
      }
      break;

    case VIEW_ORIGINAL_TEXT:
      if (value == null) {
        unsetViewOriginalText();
      } else {
        setViewOriginalText((String)value);
      }
      break;

    case VIEW_TEXT:
      if (value == null) {
        unsetViewText();
      } else {
        setViewText((String)value);
      }
      break;

    case COMMENT:
      if (value == null) {
        unsetComment();
      } else {
        setComment((String)value);
      }
      break;

    case UNSUPPORTED_FEATURES:
      if (value == null) {
        unsetUnsupportedFeatures();
      } else {
        setUnsupportedFeatures((List)value);
      }
      break;

    case TRACKS_PARTITIONS_IN_CATALOG:
      if (value == null) {
        unsetTracksPartitionsInCatalog();
      } else {
        setTracksPartitionsInCatalog((Boolean)value);
      }
      break;

    case SCHEMA_PRESERVES_CASE:
      if (value == null) {
        unsetSchemaPreservesCase();
      } else {
        setSchemaPreservesCase((Boolean)value);
      }
      break;

    }
  }

  public Object getFieldValue(_Fields field) {
    switch (field) {
    case TABLE_NAME:
      return getTableName();

    case SCHEMA_NAME:
      return getSchemaName();

    case TABLE_TYPE:
      return getTableType();

    case STORAGE:
      return getStorage();

    case TABLE_SCHEMA:
      return getTableSchema();

    case PROVIDER:
      return getProvider();

    case PARTITION_COLUMNS:
      return getPartitionColumns();

    case INDEX_COLUMNS:
      return getIndexColumns();

    case PRIMARY_KEY_COLUMNS:
      return getPrimaryKeyColumns();

    case NUM_BUCKETS:
      return getNumBuckets();

    case REDUNDANCY:
      return getRedundancy();

    case BUCKET_OWNERS:
      return getBucketOwners();

    case BUCKET_COLUMNS:
      return getBucketColumns();

    case SORT_COLUMNS:
      return getSortColumns();

    case OWNER:
      return getOwner();

    case CREATE_TIME:
      return getCreateTime();

    case LAST_ACCESS_TIME:
      return getLastAccessTime();

    case PROPERTIES:
      return getProperties();

    case SIZE_IN_BYTES:
      return getSizeInBytes();

    case ROW_COUNT:
      return getRowCount();

    case COL_STATS:
      return getColStats();

    case IS_BROADCASTABLE:
      return isIsBroadcastable();

    case VIEW_ORIGINAL_TEXT:
      return getViewOriginalText();

    case VIEW_TEXT:
      return getViewText();

    case COMMENT:
      return getComment();

    case UNSUPPORTED_FEATURES:
      return getUnsupportedFeatures();

    case TRACKS_PARTITIONS_IN_CATALOG:
      return isTracksPartitionsInCatalog();

    case SCHEMA_PRESERVES_CASE:
      return isSchemaPreservesCase();

    }
    throw new IllegalStateException();
  }

  /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */
  public boolean isSet(_Fields field) {
    if (field == null) {
      throw new IllegalArgumentException();
    }

    switch (field) {
    case TABLE_NAME:
      return isSetTableName();
    case SCHEMA_NAME:
      return isSetSchemaName();
    case TABLE_TYPE:
      return isSetTableType();
    case STORAGE:
      return isSetStorage();
    case TABLE_SCHEMA:
      return isSetTableSchema();
    case PROVIDER:
      return isSetProvider();
    case PARTITION_COLUMNS:
      return isSetPartitionColumns();
    case INDEX_COLUMNS:
      return isSetIndexColumns();
    case PRIMARY_KEY_COLUMNS:
      return isSetPrimaryKeyColumns();
    case NUM_BUCKETS:
      return isSetNumBuckets();
    case REDUNDANCY:
      return isSetRedundancy();
    case BUCKET_OWNERS:
      return isSetBucketOwners();
    case BUCKET_COLUMNS:
      return isSetBucketColumns();
    case SORT_COLUMNS:
      return isSetSortColumns();
    case OWNER:
      return isSetOwner();
    case CREATE_TIME:
      return isSetCreateTime();
    case LAST_ACCESS_TIME:
      return isSetLastAccessTime();
    case PROPERTIES:
      return isSetProperties();
    case SIZE_IN_BYTES:
      return isSetSizeInBytes();
    case ROW_COUNT:
      return isSetRowCount();
    case COL_STATS:
      return isSetColStats();
    case IS_BROADCASTABLE:
      return isSetIsBroadcastable();
    case VIEW_ORIGINAL_TEXT:
      return isSetViewOriginalText();
    case VIEW_TEXT:
      return isSetViewText();
    case COMMENT:
      return isSetComment();
    case UNSUPPORTED_FEATURES:
      return isSetUnsupportedFeatures();
    case TRACKS_PARTITIONS_IN_CATALOG:
      return isSetTracksPartitionsInCatalog();
    case SCHEMA_PRESERVES_CASE:
      return isSetSchemaPreservesCase();
    }
    throw new IllegalStateException();
  }

  @Override
  public boolean equals(Object that) {
    if (that == null)
      return false;
    if (that instanceof CatalogTableObject)
      return this.equals((CatalogTableObject)that);
    return false;
  }

  public boolean equals(CatalogTableObject that) {
    if (that == null)
      return false;

    boolean this_present_tableName = true && this.isSetTableName();
    boolean that_present_tableName = true && that.isSetTableName();
    if (this_present_tableName || that_present_tableName) {
      if (!(this_present_tableName && that_present_tableName))
        return false;
      if (!this.tableName.equals(that.tableName))
        return false;
    }

    boolean this_present_schemaName = true && this.isSetSchemaName();
    boolean that_present_schemaName = true && that.isSetSchemaName();
    if (this_present_schemaName || that_present_schemaName) {
      if (!(this_present_schemaName && that_present_schemaName))
        return false;
      if (!this.schemaName.equals(that.schemaName))
        return false;
    }

    boolean this_present_tableType = true && this.isSetTableType();
    boolean that_present_tableType = true && that.isSetTableType();
    if (this_present_tableType || that_present_tableType) {
      if (!(this_present_tableType && that_present_tableType))
        return false;
      if (!this.tableType.equals(that.tableType))
        return false;
    }

    boolean this_present_storage = true && this.isSetStorage();
    boolean that_present_storage = true && that.isSetStorage();
    if (this_present_storage || that_present_storage) {
      if (!(this_present_storage && that_present_storage))
        return false;
      if (!this.storage.equals(that.storage))
        return false;
    }

    boolean this_present_tableSchema = true && this.isSetTableSchema();
    boolean that_present_tableSchema = true && that.isSetTableSchema();
    if (this_present_tableSchema || that_present_tableSchema) {
      if (!(this_present_tableSchema && that_present_tableSchema))
        return false;
      if (!this.tableSchema.equals(that.tableSchema))
        return false;
    }

    boolean this_present_provider = true && this.isSetProvider();
    boolean that_present_provider = true && that.isSetProvider();
    if (this_present_provider || that_present_provider) {
      if (!(this_present_provider && that_present_provider))
        return false;
      if (!this.provider.equals(that.provider))
        return false;
    }

    boolean this_present_partitionColumns = true && this.isSetPartitionColumns();
    boolean that_present_partitionColumns = true && that.isSetPartitionColumns();
    if (this_present_partitionColumns || that_present_partitionColumns) {
      if (!(this_present_partitionColumns && that_present_partitionColumns))
        return false;
      if (!this.partitionColumns.equals(that.partitionColumns))
        return false;
    }

    boolean this_present_indexColumns = true && this.isSetIndexColumns();
    boolean that_present_indexColumns = true && that.isSetIndexColumns();
    if (this_present_indexColumns || that_present_indexColumns) {
      if (!(this_present_indexColumns && that_present_indexColumns))
        return false;
      if (!this.indexColumns.equals(that.indexColumns))
        return false;
    }

    boolean this_present_primaryKeyColumns = true && this.isSetPrimaryKeyColumns();
    boolean that_present_primaryKeyColumns = true && that.isSetPrimaryKeyColumns();
    if (this_present_primaryKeyColumns || that_present_primaryKeyColumns) {
      if (!(this_present_primaryKeyColumns && that_present_primaryKeyColumns))
        return false;
      if (!this.primaryKeyColumns.equals(that.primaryKeyColumns))
        return false;
    }

    boolean this_present_numBuckets = true && this.isSetNumBuckets();
    boolean that_present_numBuckets = true && that.isSetNumBuckets();
    if (this_present_numBuckets || that_present_numBuckets) {
      if (!(this_present_numBuckets && that_present_numBuckets))
        return false;
      if (this.numBuckets != that.numBuckets)
        return false;
    }

    boolean this_present_redundancy = true && this.isSetRedundancy();
    boolean that_present_redundancy = true && that.isSetRedundancy();
    if (this_present_redundancy || that_present_redundancy) {
      if (!(this_present_redundancy && that_present_redundancy))
        return false;
      if (this.redundancy != that.redundancy)
        return false;
    }

    boolean this_present_bucketOwners = true && this.isSetBucketOwners();
    boolean that_present_bucketOwners = true && that.isSetBucketOwners();
    if (this_present_bucketOwners || that_present_bucketOwners) {
      if (!(this_present_bucketOwners && that_present_bucketOwners))
        return false;
      if (!this.bucketOwners.equals(that.bucketOwners))
        return false;
    }

    boolean this_present_bucketColumns = true && this.isSetBucketColumns();
    boolean that_present_bucketColumns = true && that.isSetBucketColumns();
    if (this_present_bucketColumns || that_present_bucketColumns) {
      if (!(this_present_bucketColumns && that_present_bucketColumns))
        return false;
      if (!this.bucketColumns.equals(that.bucketColumns))
        return false;
    }

    boolean this_present_sortColumns = true && this.isSetSortColumns();
    boolean that_present_sortColumns = true && that.isSetSortColumns();
    if (this_present_sortColumns || that_present_sortColumns) {
      if (!(this_present_sortColumns && that_present_sortColumns))
        return false;
      if (!this.sortColumns.equals(that.sortColumns))
        return false;
    }

    boolean this_present_owner = true && this.isSetOwner();
    boolean that_present_owner = true && that.isSetOwner();
    if (this_present_owner || that_present_owner) {
      if (!(this_present_owner && that_present_owner))
        return false;
      if (!this.owner.equals(that.owner))
        return false;
    }

    boolean this_present_createTime = true;
    boolean that_present_createTime = true;
    if (this_present_createTime || that_present_createTime) {
      if (!(this_present_createTime && that_present_createTime))
        return false;
      if (this.createTime != that.createTime)
        return false;
    }

    boolean this_present_lastAccessTime = true;
    boolean that_present_lastAccessTime = true;
    if (this_present_lastAccessTime || that_present_lastAccessTime) {
      if (!(this_present_lastAccessTime && that_present_lastAccessTime))
        return false;
      if (this.lastAccessTime != that.lastAccessTime)
        return false;
    }

    boolean this_present_properties = true && this.isSetProperties();
    boolean that_present_properties = true && that.isSetProperties();
    if (this_present_properties || that_present_properties) {
      if (!(this_present_properties && that_present_properties))
        return false;
      if (!this.properties.equals(that.properties))
        return false;
    }

    boolean this_present_sizeInBytes = true && this.isSetSizeInBytes();
    boolean that_present_sizeInBytes = true && that.isSetSizeInBytes();
    if (this_present_sizeInBytes || that_present_sizeInBytes) {
      if (!(this_present_sizeInBytes && that_present_sizeInBytes))
        return false;
      if (this.sizeInBytes != that.sizeInBytes)
        return false;
    }

    boolean this_present_rowCount = true && this.isSetRowCount();
    boolean that_present_rowCount = true && that.isSetRowCount();
    if (this_present_rowCount || that_present_rowCount) {
      if (!(this_present_rowCount && that_present_rowCount))
        return false;
      if (this.rowCount != that.rowCount)
        return false;
    }

    boolean this_present_colStats = true && this.isSetColStats();
    boolean that_present_colStats = true && that.isSetColStats();
    if (this_present_colStats || that_present_colStats) {
      if (!(this_present_colStats && that_present_colStats))
        return false;
      if (!this.colStats.equals(that.colStats))
        return false;
    }

    boolean this_present_isBroadcastable = true;
    boolean that_present_isBroadcastable = true;
    if (this_present_isBroadcastable || that_present_isBroadcastable) {
      if (!(this_present_isBroadcastable && that_present_isBroadcastable))
        return false;
      if (this.isBroadcastable != that.isBroadcastable)
        return false;
    }

    boolean this_present_viewOriginalText = true && this.isSetViewOriginalText();
    boolean that_present_viewOriginalText = true && that.isSetViewOriginalText();
    if (this_present_viewOriginalText || that_present_viewOriginalText) {
      if (!(this_present_viewOriginalText && that_present_viewOriginalText))
        return false;
      if (!this.viewOriginalText.equals(that.viewOriginalText))
        return false;
    }

    boolean this_present_viewText = true && this.isSetViewText();
    boolean that_present_viewText = true && that.isSetViewText();
    if (this_present_viewText || that_present_viewText) {
      if (!(this_present_viewText && that_present_viewText))
        return false;
      if (!this.viewText.equals(that.viewText))
        return false;
    }

    boolean this_present_comment = true && this.isSetComment();
    boolean that_present_comment = true && that.isSetComment();
    if (this_present_comment || that_present_comment) {
      if (!(this_present_comment && that_present_comment))
        return false;
      if (!this.comment.equals(that.comment))
        return false;
    }

    boolean this_present_unsupportedFeatures = true && this.isSetUnsupportedFeatures();
    boolean that_present_unsupportedFeatures = true && that.isSetUnsupportedFeatures();
    if (this_present_unsupportedFeatures || that_present_unsupportedFeatures) {
      if (!(this_present_unsupportedFeatures && that_present_unsupportedFeatures))
        return false;
      if (!this.unsupportedFeatures.equals(that.unsupportedFeatures))
        return false;
    }

    boolean this_present_tracksPartitionsInCatalog = true;
    boolean that_present_tracksPartitionsInCatalog = true;
    if (this_present_tracksPartitionsInCatalog || that_present_tracksPartitionsInCatalog) {
      if (!(this_present_tracksPartitionsInCatalog && that_present_tracksPartitionsInCatalog))
        return false;
      if (this.tracksPartitionsInCatalog != that.tracksPartitionsInCatalog)
        return false;
    }

    boolean this_present_schemaPreservesCase = true;
    boolean that_present_schemaPreservesCase = true;
    if (this_present_schemaPreservesCase || that_present_schemaPreservesCase) {
      if (!(this_present_schemaPreservesCase && that_present_schemaPreservesCase))
        return false;
      if (this.schemaPreservesCase != that.schemaPreservesCase)
        return false;
    }

    return true;
  }

  @Override
  public int hashCode() {
    List list = new ArrayList();

    boolean present_tableName = true && (isSetTableName());
    list.add(present_tableName);
    if (present_tableName)
      list.add(tableName);

    boolean present_schemaName = true && (isSetSchemaName());
    list.add(present_schemaName);
    if (present_schemaName)
      list.add(schemaName);

    boolean present_tableType = true && (isSetTableType());
    list.add(present_tableType);
    if (present_tableType)
      list.add(tableType);

    boolean present_storage = true && (isSetStorage());
    list.add(present_storage);
    if (present_storage)
      list.add(storage);

    boolean present_tableSchema = true && (isSetTableSchema());
    list.add(present_tableSchema);
    if (present_tableSchema)
      list.add(tableSchema);

    boolean present_provider = true && (isSetProvider());
    list.add(present_provider);
    if (present_provider)
      list.add(provider);

    boolean present_partitionColumns = true && (isSetPartitionColumns());
    list.add(present_partitionColumns);
    if (present_partitionColumns)
      list.add(partitionColumns);

    boolean present_indexColumns = true && (isSetIndexColumns());
    list.add(present_indexColumns);
    if (present_indexColumns)
      list.add(indexColumns);

    boolean present_primaryKeyColumns = true && (isSetPrimaryKeyColumns());
    list.add(present_primaryKeyColumns);
    if (present_primaryKeyColumns)
      list.add(primaryKeyColumns);

    boolean present_numBuckets = true && (isSetNumBuckets());
    list.add(present_numBuckets);
    if (present_numBuckets)
      list.add(numBuckets);

    boolean present_redundancy = true && (isSetRedundancy());
    list.add(present_redundancy);
    if (present_redundancy)
      list.add(redundancy);

    boolean present_bucketOwners = true && (isSetBucketOwners());
    list.add(present_bucketOwners);
    if (present_bucketOwners)
      list.add(bucketOwners);

    boolean present_bucketColumns = true && (isSetBucketColumns());
    list.add(present_bucketColumns);
    if (present_bucketColumns)
      list.add(bucketColumns);

    boolean present_sortColumns = true && (isSetSortColumns());
    list.add(present_sortColumns);
    if (present_sortColumns)
      list.add(sortColumns);

    boolean present_owner = true && (isSetOwner());
    list.add(present_owner);
    if (present_owner)
      list.add(owner);

    boolean present_createTime = true;
    list.add(present_createTime);
    if (present_createTime)
      list.add(createTime);

    boolean present_lastAccessTime = true;
    list.add(present_lastAccessTime);
    if (present_lastAccessTime)
      list.add(lastAccessTime);

    boolean present_properties = true && (isSetProperties());
    list.add(present_properties);
    if (present_properties)
      list.add(properties);

    boolean present_sizeInBytes = true && (isSetSizeInBytes());
    list.add(present_sizeInBytes);
    if (present_sizeInBytes)
      list.add(sizeInBytes);

    boolean present_rowCount = true && (isSetRowCount());
    list.add(present_rowCount);
    if (present_rowCount)
      list.add(rowCount);

    boolean present_colStats = true && (isSetColStats());
    list.add(present_colStats);
    if (present_colStats)
      list.add(colStats);

    boolean present_isBroadcastable = true;
    list.add(present_isBroadcastable);
    if (present_isBroadcastable)
      list.add(isBroadcastable);

    boolean present_viewOriginalText = true && (isSetViewOriginalText());
    list.add(present_viewOriginalText);
    if (present_viewOriginalText)
      list.add(viewOriginalText);

    boolean present_viewText = true && (isSetViewText());
    list.add(present_viewText);
    if (present_viewText)
      list.add(viewText);

    boolean present_comment = true && (isSetComment());
    list.add(present_comment);
    if (present_comment)
      list.add(comment);

    boolean present_unsupportedFeatures = true && (isSetUnsupportedFeatures());
    list.add(present_unsupportedFeatures);
    if (present_unsupportedFeatures)
      list.add(unsupportedFeatures);

    boolean present_tracksPartitionsInCatalog = true;
    list.add(present_tracksPartitionsInCatalog);
    if (present_tracksPartitionsInCatalog)
      list.add(tracksPartitionsInCatalog);

    boolean present_schemaPreservesCase = true;
    list.add(present_schemaPreservesCase);
    if (present_schemaPreservesCase)
      list.add(schemaPreservesCase);

    return list.hashCode();
  }

  @Override
  public int compareTo(CatalogTableObject other) {
    if (!getClass().equals(other.getClass())) {
      return getClass().getName().compareTo(other.getClass().getName());
    }

    int lastComparison = 0;

    lastComparison = Boolean.valueOf(isSetTableName()).compareTo(other.isSetTableName());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetTableName()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.tableName, other.tableName);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetSchemaName()).compareTo(other.isSetSchemaName());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetSchemaName()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.schemaName, other.schemaName);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetTableType()).compareTo(other.isSetTableType());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetTableType()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.tableType, other.tableType);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetStorage()).compareTo(other.isSetStorage());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetStorage()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.storage, other.storage);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetTableSchema()).compareTo(other.isSetTableSchema());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetTableSchema()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.tableSchema, other.tableSchema);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetProvider()).compareTo(other.isSetProvider());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetProvider()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.provider, other.provider);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetPartitionColumns()).compareTo(other.isSetPartitionColumns());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetPartitionColumns()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.partitionColumns, other.partitionColumns);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetIndexColumns()).compareTo(other.isSetIndexColumns());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetIndexColumns()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.indexColumns, other.indexColumns);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetPrimaryKeyColumns()).compareTo(other.isSetPrimaryKeyColumns());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetPrimaryKeyColumns()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.primaryKeyColumns, other.primaryKeyColumns);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetNumBuckets()).compareTo(other.isSetNumBuckets());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetNumBuckets()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.numBuckets, other.numBuckets);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetRedundancy()).compareTo(other.isSetRedundancy());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetRedundancy()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.redundancy, other.redundancy);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetBucketOwners()).compareTo(other.isSetBucketOwners());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetBucketOwners()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.bucketOwners, other.bucketOwners);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetBucketColumns()).compareTo(other.isSetBucketColumns());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetBucketColumns()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.bucketColumns, other.bucketColumns);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetSortColumns()).compareTo(other.isSetSortColumns());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetSortColumns()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.sortColumns, other.sortColumns);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetOwner()).compareTo(other.isSetOwner());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetOwner()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.owner, other.owner);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetCreateTime()).compareTo(other.isSetCreateTime());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetCreateTime()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.createTime, other.createTime);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetLastAccessTime()).compareTo(other.isSetLastAccessTime());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetLastAccessTime()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.lastAccessTime, other.lastAccessTime);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetProperties()).compareTo(other.isSetProperties());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetProperties()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.properties, other.properties);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetSizeInBytes()).compareTo(other.isSetSizeInBytes());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetSizeInBytes()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.sizeInBytes, other.sizeInBytes);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetRowCount()).compareTo(other.isSetRowCount());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetRowCount()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.rowCount, other.rowCount);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetColStats()).compareTo(other.isSetColStats());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetColStats()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.colStats, other.colStats);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetIsBroadcastable()).compareTo(other.isSetIsBroadcastable());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetIsBroadcastable()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.isBroadcastable, other.isBroadcastable);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetViewOriginalText()).compareTo(other.isSetViewOriginalText());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetViewOriginalText()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.viewOriginalText, other.viewOriginalText);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetViewText()).compareTo(other.isSetViewText());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetViewText()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.viewText, other.viewText);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetComment()).compareTo(other.isSetComment());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetComment()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.comment, other.comment);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetUnsupportedFeatures()).compareTo(other.isSetUnsupportedFeatures());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetUnsupportedFeatures()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.unsupportedFeatures, other.unsupportedFeatures);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetTracksPartitionsInCatalog()).compareTo(other.isSetTracksPartitionsInCatalog());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetTracksPartitionsInCatalog()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.tracksPartitionsInCatalog, other.tracksPartitionsInCatalog);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    lastComparison = Boolean.valueOf(isSetSchemaPreservesCase()).compareTo(other.isSetSchemaPreservesCase());
    if (lastComparison != 0) {
      return lastComparison;
    }
    if (isSetSchemaPreservesCase()) {
      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.schemaPreservesCase, other.schemaPreservesCase);
      if (lastComparison != 0) {
        return lastComparison;
      }
    }
    return 0;
  }

  public _Fields fieldForId(int fieldId) {
    return _Fields.findByThriftId(fieldId);
  }

  public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException {
    schemes.get(iprot.getScheme()).getScheme().read(iprot, this);
  }

  public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException {
    schemes.get(oprot.getScheme()).getScheme().write(oprot, this);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder("CatalogTableObject(");
    boolean first = true;

    sb.append("tableName:");
    if (this.tableName == null) {
      sb.append("null");
    } else {
      sb.append(this.tableName);
    }
    first = false;
    if (isSetSchemaName()) {
      if (!first) sb.append(", ");
      sb.append("schemaName:");
      if (this.schemaName == null) {
        sb.append("null");
      } else {
        sb.append(this.schemaName);
      }
      first = false;
    }
    if (!first) sb.append(", ");
    sb.append("tableType:");
    if (this.tableType == null) {
      sb.append("null");
    } else {
      sb.append(this.tableType);
    }
    first = false;
    if (!first) sb.append(", ");
    sb.append("storage:");
    if (this.storage == null) {
      sb.append("null");
    } else {
      sb.append(this.storage);
    }
    first = false;
    if (!first) sb.append(", ");
    sb.append("tableSchema:");
    if (this.tableSchema == null) {
      sb.append("null");
    } else {
      sb.append(this.tableSchema);
    }
    first = false;
    if (isSetProvider()) {
      if (!first) sb.append(", ");
      sb.append("provider:");
      if (this.provider == null) {
        sb.append("null");
      } else {
        sb.append(this.provider);
      }
      first = false;
    }
    if (!first) sb.append(", ");
    sb.append("partitionColumns:");
    if (this.partitionColumns == null) {
      sb.append("null");
    } else {
      sb.append(this.partitionColumns);
    }
    first = false;
    if (!first) sb.append(", ");
    sb.append("indexColumns:");
    if (this.indexColumns == null) {
      sb.append("null");
    } else {
      sb.append(this.indexColumns);
    }
    first = false;
    if (!first) sb.append(", ");
    sb.append("primaryKeyColumns:");
    if (this.primaryKeyColumns == null) {
      sb.append("null");
    } else {
      sb.append(this.primaryKeyColumns);
    }
    first = false;
    if (isSetNumBuckets()) {
      if (!first) sb.append(", ");
      sb.append("numBuckets:");
      sb.append(this.numBuckets);
      first = false;
    }
    if (isSetRedundancy()) {
      if (!first) sb.append(", ");
      sb.append("redundancy:");
      sb.append(this.redundancy);
      first = false;
    }
    if (!first) sb.append(", ");
    sb.append("bucketOwners:");
    if (this.bucketOwners == null) {
      sb.append("null");
    } else {
      sb.append(this.bucketOwners);
    }
    first = false;
    if (!first) sb.append(", ");
    sb.append("bucketColumns:");
    if (this.bucketColumns == null) {
      sb.append("null");
    } else {
      sb.append(this.bucketColumns);
    }
    first = false;
    if (!first) sb.append(", ");
    sb.append("sortColumns:");
    if (this.sortColumns == null) {
      sb.append("null");
    } else {
      sb.append(this.sortColumns);
    }
    first = false;
    if (!first) sb.append(", ");
    sb.append("owner:");
    if (this.owner == null) {
      sb.append("null");
    } else {
      sb.append(this.owner);
    }
    first = false;
    if (!first) sb.append(", ");
    sb.append("createTime:");
    sb.append(this.createTime);
    first = false;
    if (!first) sb.append(", ");
    sb.append("lastAccessTime:");
    sb.append(this.lastAccessTime);
    first = false;
    if (!first) sb.append(", ");
    sb.append("properties:");
    if (this.properties == null) {
      sb.append("null");
    } else {
      sb.append(this.properties);
    }
    first = false;
    if (isSetSizeInBytes()) {
      if (!first) sb.append(", ");
      sb.append("sizeInBytes:");
      sb.append(this.sizeInBytes);
      first = false;
    }
    if (isSetRowCount()) {
      if (!first) sb.append(", ");
      sb.append("rowCount:");
      sb.append(this.rowCount);
      first = false;
    }
    if (!first) sb.append(", ");
    sb.append("colStats:");
    if (this.colStats == null) {
      sb.append("null");
    } else {
      sb.append(this.colStats);
    }
    first = false;
    if (!first) sb.append(", ");
    sb.append("isBroadcastable:");
    sb.append(this.isBroadcastable);
    first = false;
    if (isSetViewOriginalText()) {
      if (!first) sb.append(", ");
      sb.append("viewOriginalText:");
      if (this.viewOriginalText == null) {
        sb.append("null");
      } else {
        sb.append(this.viewOriginalText);
      }
      first = false;
    }
    if (isSetViewText()) {
      if (!first) sb.append(", ");
      sb.append("viewText:");
      if (this.viewText == null) {
        sb.append("null");
      } else {
        sb.append(this.viewText);
      }
      first = false;
    }
    if (isSetComment()) {
      if (!first) sb.append(", ");
      sb.append("comment:");
      if (this.comment == null) {
        sb.append("null");
      } else {
        sb.append(this.comment);
      }
      first = false;
    }
    if (!first) sb.append(", ");
    sb.append("unsupportedFeatures:");
    if (this.unsupportedFeatures == null) {
      sb.append("null");
    } else {
      sb.append(this.unsupportedFeatures);
    }
    first = false;
    if (!first) sb.append(", ");
    sb.append("tracksPartitionsInCatalog:");
    sb.append(this.tracksPartitionsInCatalog);
    first = false;
    if (!first) sb.append(", ");
    sb.append("schemaPreservesCase:");
    sb.append(this.schemaPreservesCase);
    first = false;
    sb.append(")");
    return sb.toString();
  }

  public void validate() throws org.apache.thrift.TException {
    // check for required fields
    if (tableName == null) {
      throw new org.apache.thrift.protocol.TProtocolException("Required field 'tableName' was not present! Struct: " + toString());
    }
    if (tableType == null) {
      throw new org.apache.thrift.protocol.TProtocolException("Required field 'tableType' was not present! Struct: " + toString());
    }
    if (storage == null) {
      throw new org.apache.thrift.protocol.TProtocolException("Required field 'storage' was not present! Struct: " + toString());
    }
    if (tableSchema == null) {
      throw new org.apache.thrift.protocol.TProtocolException("Required field 'tableSchema' was not present! Struct: " + toString());
    }
    if (partitionColumns == null) {
      throw new org.apache.thrift.protocol.TProtocolException("Required field 'partitionColumns' was not present! Struct: " + toString());
    }
    if (indexColumns == null) {
      throw new org.apache.thrift.protocol.TProtocolException("Required field 'indexColumns' was not present! Struct: " + toString());
    }
    if (primaryKeyColumns == null) {
      throw new org.apache.thrift.protocol.TProtocolException("Required field 'primaryKeyColumns' was not present! Struct: " + toString());
    }
    if (bucketOwners == null) {
      throw new org.apache.thrift.protocol.TProtocolException("Required field 'bucketOwners' was not present! Struct: " + toString());
    }
    if (bucketColumns == null) {
      throw new org.apache.thrift.protocol.TProtocolException("Required field 'bucketColumns' was not present! Struct: " + toString());
    }
    if (sortColumns == null) {
      throw new org.apache.thrift.protocol.TProtocolException("Required field 'sortColumns' was not present! Struct: " + toString());
    }
    if (owner == null) {
      throw new org.apache.thrift.protocol.TProtocolException("Required field 'owner' was not present! Struct: " + toString());
    }
    // alas, we cannot check 'createTime' because it's a primitive and you chose the non-beans generator.
    // alas, we cannot check 'lastAccessTime' because it's a primitive and you chose the non-beans generator.
    if (properties == null) {
      throw new org.apache.thrift.protocol.TProtocolException("Required field 'properties' was not present! Struct: " + toString());
    }
    if (colStats == null) {
      throw new org.apache.thrift.protocol.TProtocolException("Required field 'colStats' was not present! Struct: " + toString());
    }
    // alas, we cannot check 'isBroadcastable' because it's a primitive and you chose the non-beans generator.
    if (unsupportedFeatures == null) {
      throw new org.apache.thrift.protocol.TProtocolException("Required field 'unsupportedFeatures' was not present! Struct: " + toString());
    }
    // alas, we cannot check 'tracksPartitionsInCatalog' because it's a primitive and you chose the non-beans generator.
    // alas, we cannot check 'schemaPreservesCase' because it's a primitive and you chose the non-beans generator.
    // check for sub-struct validity
    if (storage != null) {
      storage.validate();
    }
  }

  private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException {
    try {
      write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out)));
    } catch (org.apache.thrift.TException te) {
      throw new java.io.IOException(te);
    }
  }

  private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException {
    try {
      // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor.
      __isset_bitfield = 0;
      read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in)));
    } catch (org.apache.thrift.TException te) {
      throw new java.io.IOException(te);
    }
  }

  private static class CatalogTableObjectStandardSchemeFactory implements SchemeFactory {
    public CatalogTableObjectStandardScheme getScheme() {
      return new CatalogTableObjectStandardScheme();
    }
  }

  private static class CatalogTableObjectStandardScheme extends StandardScheme {

    public void read(org.apache.thrift.protocol.TProtocol iprot, CatalogTableObject struct) throws org.apache.thrift.TException {
      org.apache.thrift.protocol.TField schemeField;
      iprot.readStructBegin();
      while (true)
      {
        schemeField = iprot.readFieldBegin();
        if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { 
          break;
        }
        switch (schemeField.id) {
          case 1: // TABLE_NAME
            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
              struct.tableName = iprot.readString();
              struct.setTableNameIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 2: // SCHEMA_NAME
            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
              struct.schemaName = iprot.readString();
              struct.setSchemaNameIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 3: // TABLE_TYPE
            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
              struct.tableType = iprot.readString();
              struct.setTableTypeIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 4: // STORAGE
            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
              struct.storage = new CatalogStorage();
              struct.storage.read(iprot);
              struct.setStorageIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 5: // TABLE_SCHEMA
            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
              struct.tableSchema = iprot.readString();
              struct.setTableSchemaIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 6: // PROVIDER
            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
              struct.provider = iprot.readString();
              struct.setProviderIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 7: // PARTITION_COLUMNS
            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
              {
                org.apache.thrift.protocol.TList _list298 = iprot.readListBegin();
                struct.partitionColumns = new ArrayList(_list298.size);
                String _elem299;
                for (int _i300 = 0; _i300 < _list298.size; ++_i300)
                {
                  _elem299 = iprot.readString();
                  struct.partitionColumns.add(_elem299);
                }
                iprot.readListEnd();
              }
              struct.setPartitionColumnsIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 8: // INDEX_COLUMNS
            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
              {
                org.apache.thrift.protocol.TList _list301 = iprot.readListBegin();
                struct.indexColumns = new ArrayList(_list301.size);
                String _elem302;
                for (int _i303 = 0; _i303 < _list301.size; ++_i303)
                {
                  _elem302 = iprot.readString();
                  struct.indexColumns.add(_elem302);
                }
                iprot.readListEnd();
              }
              struct.setIndexColumnsIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 9: // PRIMARY_KEY_COLUMNS
            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
              {
                org.apache.thrift.protocol.TList _list304 = iprot.readListBegin();
                struct.primaryKeyColumns = new ArrayList(_list304.size);
                String _elem305;
                for (int _i306 = 0; _i306 < _list304.size; ++_i306)
                {
                  _elem305 = iprot.readString();
                  struct.primaryKeyColumns.add(_elem305);
                }
                iprot.readListEnd();
              }
              struct.setPrimaryKeyColumnsIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 10: // NUM_BUCKETS
            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
              struct.numBuckets = iprot.readI32();
              struct.setNumBucketsIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 11: // REDUNDANCY
            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
              struct.redundancy = iprot.readI32();
              struct.setRedundancyIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 12: // BUCKET_OWNERS
            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
              {
                org.apache.thrift.protocol.TList _list307 = iprot.readListBegin();
                struct.bucketOwners = new ArrayList(_list307.size);
                BucketOwners _elem308;
                for (int _i309 = 0; _i309 < _list307.size; ++_i309)
                {
                  _elem308 = new BucketOwners();
                  _elem308.read(iprot);
                  struct.bucketOwners.add(_elem308);
                }
                iprot.readListEnd();
              }
              struct.setBucketOwnersIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 13: // BUCKET_COLUMNS
            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
              {
                org.apache.thrift.protocol.TList _list310 = iprot.readListBegin();
                struct.bucketColumns = new ArrayList(_list310.size);
                String _elem311;
                for (int _i312 = 0; _i312 < _list310.size; ++_i312)
                {
                  _elem311 = iprot.readString();
                  struct.bucketColumns.add(_elem311);
                }
                iprot.readListEnd();
              }
              struct.setBucketColumnsIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 14: // SORT_COLUMNS
            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
              {
                org.apache.thrift.protocol.TList _list313 = iprot.readListBegin();
                struct.sortColumns = new ArrayList(_list313.size);
                String _elem314;
                for (int _i315 = 0; _i315 < _list313.size; ++_i315)
                {
                  _elem314 = iprot.readString();
                  struct.sortColumns.add(_elem314);
                }
                iprot.readListEnd();
              }
              struct.setSortColumnsIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 15: // OWNER
            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
              struct.owner = iprot.readString();
              struct.setOwnerIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 16: // CREATE_TIME
            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
              struct.createTime = iprot.readI64();
              struct.setCreateTimeIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 17: // LAST_ACCESS_TIME
            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
              struct.lastAccessTime = iprot.readI64();
              struct.setLastAccessTimeIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 18: // PROPERTIES
            if (schemeField.type == org.apache.thrift.protocol.TType.MAP) {
              {
                org.apache.thrift.protocol.TMap _map316 = iprot.readMapBegin();
                struct.properties = new HashMap(2*_map316.size);
                String _key317;
                String _val318;
                for (int _i319 = 0; _i319 < _map316.size; ++_i319)
                {
                  _key317 = iprot.readString();
                  _val318 = iprot.readString();
                  struct.properties.put(_key317, _val318);
                }
                iprot.readMapEnd();
              }
              struct.setPropertiesIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 19: // SIZE_IN_BYTES
            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
              struct.sizeInBytes = iprot.readI64();
              struct.setSizeInBytesIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 20: // ROW_COUNT
            if (schemeField.type == org.apache.thrift.protocol.TType.I64) {
              struct.rowCount = iprot.readI64();
              struct.setRowCountIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 21: // COL_STATS
            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
              {
                org.apache.thrift.protocol.TList _list320 = iprot.readListBegin();
                struct.colStats = new ArrayList>(_list320.size);
                Map _elem321;
                for (int _i322 = 0; _i322 < _list320.size; ++_i322)
                {
                  {
                    org.apache.thrift.protocol.TMap _map323 = iprot.readMapBegin();
                    _elem321 = new HashMap(2*_map323.size);
                    String _key324;
                    String _val325;
                    for (int _i326 = 0; _i326 < _map323.size; ++_i326)
                    {
                      _key324 = iprot.readString();
                      _val325 = iprot.readString();
                      _elem321.put(_key324, _val325);
                    }
                    iprot.readMapEnd();
                  }
                  struct.colStats.add(_elem321);
                }
                iprot.readListEnd();
              }
              struct.setColStatsIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 22: // IS_BROADCASTABLE
            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
              struct.isBroadcastable = iprot.readBool();
              struct.setIsBroadcastableIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 23: // VIEW_ORIGINAL_TEXT
            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
              struct.viewOriginalText = iprot.readString();
              struct.setViewOriginalTextIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 24: // VIEW_TEXT
            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
              struct.viewText = iprot.readString();
              struct.setViewTextIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 25: // COMMENT
            if (schemeField.type == org.apache.thrift.protocol.TType.STRING) {
              struct.comment = iprot.readString();
              struct.setCommentIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 26: // UNSUPPORTED_FEATURES
            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
              {
                org.apache.thrift.protocol.TList _list327 = iprot.readListBegin();
                struct.unsupportedFeatures = new ArrayList(_list327.size);
                String _elem328;
                for (int _i329 = 0; _i329 < _list327.size; ++_i329)
                {
                  _elem328 = iprot.readString();
                  struct.unsupportedFeatures.add(_elem328);
                }
                iprot.readListEnd();
              }
              struct.setUnsupportedFeaturesIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 27: // TRACKS_PARTITIONS_IN_CATALOG
            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
              struct.tracksPartitionsInCatalog = iprot.readBool();
              struct.setTracksPartitionsInCatalogIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          case 28: // SCHEMA_PRESERVES_CASE
            if (schemeField.type == org.apache.thrift.protocol.TType.BOOL) {
              struct.schemaPreservesCase = iprot.readBool();
              struct.setSchemaPreservesCaseIsSet(true);
            } else { 
              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
            }
            break;
          default:
            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
        }
        iprot.readFieldEnd();
      }
      iprot.readStructEnd();

      // check for required fields of primitive type, which can't be checked in the validate method
      if (!struct.isSetCreateTime()) {
        throw new org.apache.thrift.protocol.TProtocolException("Required field 'createTime' was not found in serialized data! Struct: " + toString());
      }
      if (!struct.isSetLastAccessTime()) {
        throw new org.apache.thrift.protocol.TProtocolException("Required field 'lastAccessTime' was not found in serialized data! Struct: " + toString());
      }
      if (!struct.isSetIsBroadcastable()) {
        throw new org.apache.thrift.protocol.TProtocolException("Required field 'isBroadcastable' was not found in serialized data! Struct: " + toString());
      }
      if (!struct.isSetTracksPartitionsInCatalog()) {
        throw new org.apache.thrift.protocol.TProtocolException("Required field 'tracksPartitionsInCatalog' was not found in serialized data! Struct: " + toString());
      }
      if (!struct.isSetSchemaPreservesCase()) {
        throw new org.apache.thrift.protocol.TProtocolException("Required field 'schemaPreservesCase' was not found in serialized data! Struct: " + toString());
      }
      struct.validate();
    }

    public void write(org.apache.thrift.protocol.TProtocol oprot, CatalogTableObject struct) throws org.apache.thrift.TException {
      struct.validate();

      oprot.writeStructBegin(STRUCT_DESC);
      if (struct.tableName != null) {
        oprot.writeFieldBegin(TABLE_NAME_FIELD_DESC);
        oprot.writeString(struct.tableName);
        oprot.writeFieldEnd();
      }
      if (struct.schemaName != null) {
        if (struct.isSetSchemaName()) {
          oprot.writeFieldBegin(SCHEMA_NAME_FIELD_DESC);
          oprot.writeString(struct.schemaName);
          oprot.writeFieldEnd();
        }
      }
      if (struct.tableType != null) {
        oprot.writeFieldBegin(TABLE_TYPE_FIELD_DESC);
        oprot.writeString(struct.tableType);
        oprot.writeFieldEnd();
      }
      if (struct.storage != null) {
        oprot.writeFieldBegin(STORAGE_FIELD_DESC);
        struct.storage.write(oprot);
        oprot.writeFieldEnd();
      }
      if (struct.tableSchema != null) {
        oprot.writeFieldBegin(TABLE_SCHEMA_FIELD_DESC);
        oprot.writeString(struct.tableSchema);
        oprot.writeFieldEnd();
      }
      if (struct.provider != null) {
        if (struct.isSetProvider()) {
          oprot.writeFieldBegin(PROVIDER_FIELD_DESC);
          oprot.writeString(struct.provider);
          oprot.writeFieldEnd();
        }
      }
      if (struct.partitionColumns != null) {
        oprot.writeFieldBegin(PARTITION_COLUMNS_FIELD_DESC);
        {
          oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.partitionColumns.size()));
          for (String _iter330 : struct.partitionColumns)
          {
            oprot.writeString(_iter330);
          }
          oprot.writeListEnd();
        }
        oprot.writeFieldEnd();
      }
      if (struct.indexColumns != null) {
        oprot.writeFieldBegin(INDEX_COLUMNS_FIELD_DESC);
        {
          oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.indexColumns.size()));
          for (String _iter331 : struct.indexColumns)
          {
            oprot.writeString(_iter331);
          }
          oprot.writeListEnd();
        }
        oprot.writeFieldEnd();
      }
      if (struct.primaryKeyColumns != null) {
        oprot.writeFieldBegin(PRIMARY_KEY_COLUMNS_FIELD_DESC);
        {
          oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.primaryKeyColumns.size()));
          for (String _iter332 : struct.primaryKeyColumns)
          {
            oprot.writeString(_iter332);
          }
          oprot.writeListEnd();
        }
        oprot.writeFieldEnd();
      }
      if (struct.isSetNumBuckets()) {
        oprot.writeFieldBegin(NUM_BUCKETS_FIELD_DESC);
        oprot.writeI32(struct.numBuckets);
        oprot.writeFieldEnd();
      }
      if (struct.isSetRedundancy()) {
        oprot.writeFieldBegin(REDUNDANCY_FIELD_DESC);
        oprot.writeI32(struct.redundancy);
        oprot.writeFieldEnd();
      }
      if (struct.bucketOwners != null) {
        oprot.writeFieldBegin(BUCKET_OWNERS_FIELD_DESC);
        {
          oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.bucketOwners.size()));
          for (BucketOwners _iter333 : struct.bucketOwners)
          {
            _iter333.write(oprot);
          }
          oprot.writeListEnd();
        }
        oprot.writeFieldEnd();
      }
      if (struct.bucketColumns != null) {
        oprot.writeFieldBegin(BUCKET_COLUMNS_FIELD_DESC);
        {
          oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.bucketColumns.size()));
          for (String _iter334 : struct.bucketColumns)
          {
            oprot.writeString(_iter334);
          }
          oprot.writeListEnd();
        }
        oprot.writeFieldEnd();
      }
      if (struct.sortColumns != null) {
        oprot.writeFieldBegin(SORT_COLUMNS_FIELD_DESC);
        {
          oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.sortColumns.size()));
          for (String _iter335 : struct.sortColumns)
          {
            oprot.writeString(_iter335);
          }
          oprot.writeListEnd();
        }
        oprot.writeFieldEnd();
      }
      if (struct.owner != null) {
        oprot.writeFieldBegin(OWNER_FIELD_DESC);
        oprot.writeString(struct.owner);
        oprot.writeFieldEnd();
      }
      oprot.writeFieldBegin(CREATE_TIME_FIELD_DESC);
      oprot.writeI64(struct.createTime);
      oprot.writeFieldEnd();
      oprot.writeFieldBegin(LAST_ACCESS_TIME_FIELD_DESC);
      oprot.writeI64(struct.lastAccessTime);
      oprot.writeFieldEnd();
      if (struct.properties != null) {
        oprot.writeFieldBegin(PROPERTIES_FIELD_DESC);
        {
          oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, struct.properties.size()));
          for (Map.Entry _iter336 : struct.properties.entrySet())
          {
            oprot.writeString(_iter336.getKey());
            oprot.writeString(_iter336.getValue());
          }
          oprot.writeMapEnd();
        }
        oprot.writeFieldEnd();
      }
      if (struct.isSetSizeInBytes()) {
        oprot.writeFieldBegin(SIZE_IN_BYTES_FIELD_DESC);
        oprot.writeI64(struct.sizeInBytes);
        oprot.writeFieldEnd();
      }
      if (struct.isSetRowCount()) {
        oprot.writeFieldBegin(ROW_COUNT_FIELD_DESC);
        oprot.writeI64(struct.rowCount);
        oprot.writeFieldEnd();
      }
      if (struct.colStats != null) {
        oprot.writeFieldBegin(COL_STATS_FIELD_DESC);
        {
          oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.MAP, struct.colStats.size()));
          for (Map _iter337 : struct.colStats)
          {
            {
              oprot.writeMapBegin(new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, _iter337.size()));
              for (Map.Entry _iter338 : _iter337.entrySet())
              {
                oprot.writeString(_iter338.getKey());
                oprot.writeString(_iter338.getValue());
              }
              oprot.writeMapEnd();
            }
          }
          oprot.writeListEnd();
        }
        oprot.writeFieldEnd();
      }
      oprot.writeFieldBegin(IS_BROADCASTABLE_FIELD_DESC);
      oprot.writeBool(struct.isBroadcastable);
      oprot.writeFieldEnd();
      if (struct.viewOriginalText != null) {
        if (struct.isSetViewOriginalText()) {
          oprot.writeFieldBegin(VIEW_ORIGINAL_TEXT_FIELD_DESC);
          oprot.writeString(struct.viewOriginalText);
          oprot.writeFieldEnd();
        }
      }
      if (struct.viewText != null) {
        if (struct.isSetViewText()) {
          oprot.writeFieldBegin(VIEW_TEXT_FIELD_DESC);
          oprot.writeString(struct.viewText);
          oprot.writeFieldEnd();
        }
      }
      if (struct.comment != null) {
        if (struct.isSetComment()) {
          oprot.writeFieldBegin(COMMENT_FIELD_DESC);
          oprot.writeString(struct.comment);
          oprot.writeFieldEnd();
        }
      }
      if (struct.unsupportedFeatures != null) {
        oprot.writeFieldBegin(UNSUPPORTED_FEATURES_FIELD_DESC);
        {
          oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.unsupportedFeatures.size()));
          for (String _iter339 : struct.unsupportedFeatures)
          {
            oprot.writeString(_iter339);
          }
          oprot.writeListEnd();
        }
        oprot.writeFieldEnd();
      }
      oprot.writeFieldBegin(TRACKS_PARTITIONS_IN_CATALOG_FIELD_DESC);
      oprot.writeBool(struct.tracksPartitionsInCatalog);
      oprot.writeFieldEnd();
      oprot.writeFieldBegin(SCHEMA_PRESERVES_CASE_FIELD_DESC);
      oprot.writeBool(struct.schemaPreservesCase);
      oprot.writeFieldEnd();
      oprot.writeFieldStop();
      oprot.writeStructEnd();
    }

  }

  private static class CatalogTableObjectTupleSchemeFactory implements SchemeFactory {
    public CatalogTableObjectTupleScheme getScheme() {
      return new CatalogTableObjectTupleScheme();
    }
  }

  private static class CatalogTableObjectTupleScheme extends TupleScheme {

    @Override
    public void write(org.apache.thrift.protocol.TProtocol prot, CatalogTableObject struct) throws org.apache.thrift.TException {
      TTupleProtocol oprot = (TTupleProtocol) prot;
      oprot.writeString(struct.tableName);
      oprot.writeString(struct.tableType);
      struct.storage.write(oprot);
      oprot.writeString(struct.tableSchema);
      {
        oprot.writeI32(struct.partitionColumns.size());
        for (String _iter340 : struct.partitionColumns)
        {
          oprot.writeString(_iter340);
        }
      }
      {
        oprot.writeI32(struct.indexColumns.size());
        for (String _iter341 : struct.indexColumns)
        {
          oprot.writeString(_iter341);
        }
      }
      {
        oprot.writeI32(struct.primaryKeyColumns.size());
        for (String _iter342 : struct.primaryKeyColumns)
        {
          oprot.writeString(_iter342);
        }
      }
      {
        oprot.writeI32(struct.bucketOwners.size());
        for (BucketOwners _iter343 : struct.bucketOwners)
        {
          _iter343.write(oprot);
        }
      }
      {
        oprot.writeI32(struct.bucketColumns.size());
        for (String _iter344 : struct.bucketColumns)
        {
          oprot.writeString(_iter344);
        }
      }
      {
        oprot.writeI32(struct.sortColumns.size());
        for (String _iter345 : struct.sortColumns)
        {
          oprot.writeString(_iter345);
        }
      }
      oprot.writeString(struct.owner);
      oprot.writeI64(struct.createTime);
      oprot.writeI64(struct.lastAccessTime);
      {
        oprot.writeI32(struct.properties.size());
        for (Map.Entry _iter346 : struct.properties.entrySet())
        {
          oprot.writeString(_iter346.getKey());
          oprot.writeString(_iter346.getValue());
        }
      }
      {
        oprot.writeI32(struct.colStats.size());
        for (Map _iter347 : struct.colStats)
        {
          {
            oprot.writeI32(_iter347.size());
            for (Map.Entry _iter348 : _iter347.entrySet())
            {
              oprot.writeString(_iter348.getKey());
              oprot.writeString(_iter348.getValue());
            }
          }
        }
      }
      oprot.writeBool(struct.isBroadcastable);
      {
        oprot.writeI32(struct.unsupportedFeatures.size());
        for (String _iter349 : struct.unsupportedFeatures)
        {
          oprot.writeString(_iter349);
        }
      }
      oprot.writeBool(struct.tracksPartitionsInCatalog);
      oprot.writeBool(struct.schemaPreservesCase);
      BitSet optionals = new BitSet();
      if (struct.isSetSchemaName()) {
        optionals.set(0);
      }
      if (struct.isSetProvider()) {
        optionals.set(1);
      }
      if (struct.isSetNumBuckets()) {
        optionals.set(2);
      }
      if (struct.isSetRedundancy()) {
        optionals.set(3);
      }
      if (struct.isSetSizeInBytes()) {
        optionals.set(4);
      }
      if (struct.isSetRowCount()) {
        optionals.set(5);
      }
      if (struct.isSetViewOriginalText()) {
        optionals.set(6);
      }
      if (struct.isSetViewText()) {
        optionals.set(7);
      }
      if (struct.isSetComment()) {
        optionals.set(8);
      }
      oprot.writeBitSet(optionals, 9);
      if (struct.isSetSchemaName()) {
        oprot.writeString(struct.schemaName);
      }
      if (struct.isSetProvider()) {
        oprot.writeString(struct.provider);
      }
      if (struct.isSetNumBuckets()) {
        oprot.writeI32(struct.numBuckets);
      }
      if (struct.isSetRedundancy()) {
        oprot.writeI32(struct.redundancy);
      }
      if (struct.isSetSizeInBytes()) {
        oprot.writeI64(struct.sizeInBytes);
      }
      if (struct.isSetRowCount()) {
        oprot.writeI64(struct.rowCount);
      }
      if (struct.isSetViewOriginalText()) {
        oprot.writeString(struct.viewOriginalText);
      }
      if (struct.isSetViewText()) {
        oprot.writeString(struct.viewText);
      }
      if (struct.isSetComment()) {
        oprot.writeString(struct.comment);
      }
    }

    @Override
    public void read(org.apache.thrift.protocol.TProtocol prot, CatalogTableObject struct) throws org.apache.thrift.TException {
      TTupleProtocol iprot = (TTupleProtocol) prot;
      struct.tableName = iprot.readString();
      struct.setTableNameIsSet(true);
      struct.tableType = iprot.readString();
      struct.setTableTypeIsSet(true);
      struct.storage = new CatalogStorage();
      struct.storage.read(iprot);
      struct.setStorageIsSet(true);
      struct.tableSchema = iprot.readString();
      struct.setTableSchemaIsSet(true);
      {
        org.apache.thrift.protocol.TList _list350 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
        struct.partitionColumns = new ArrayList(_list350.size);
        String _elem351;
        for (int _i352 = 0; _i352 < _list350.size; ++_i352)
        {
          _elem351 = iprot.readString();
          struct.partitionColumns.add(_elem351);
        }
      }
      struct.setPartitionColumnsIsSet(true);
      {
        org.apache.thrift.protocol.TList _list353 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
        struct.indexColumns = new ArrayList(_list353.size);
        String _elem354;
        for (int _i355 = 0; _i355 < _list353.size; ++_i355)
        {
          _elem354 = iprot.readString();
          struct.indexColumns.add(_elem354);
        }
      }
      struct.setIndexColumnsIsSet(true);
      {
        org.apache.thrift.protocol.TList _list356 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
        struct.primaryKeyColumns = new ArrayList(_list356.size);
        String _elem357;
        for (int _i358 = 0; _i358 < _list356.size; ++_i358)
        {
          _elem357 = iprot.readString();
          struct.primaryKeyColumns.add(_elem357);
        }
      }
      struct.setPrimaryKeyColumnsIsSet(true);
      {
        org.apache.thrift.protocol.TList _list359 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
        struct.bucketOwners = new ArrayList(_list359.size);
        BucketOwners _elem360;
        for (int _i361 = 0; _i361 < _list359.size; ++_i361)
        {
          _elem360 = new BucketOwners();
          _elem360.read(iprot);
          struct.bucketOwners.add(_elem360);
        }
      }
      struct.setBucketOwnersIsSet(true);
      {
        org.apache.thrift.protocol.TList _list362 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
        struct.bucketColumns = new ArrayList(_list362.size);
        String _elem363;
        for (int _i364 = 0; _i364 < _list362.size; ++_i364)
        {
          _elem363 = iprot.readString();
          struct.bucketColumns.add(_elem363);
        }
      }
      struct.setBucketColumnsIsSet(true);
      {
        org.apache.thrift.protocol.TList _list365 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
        struct.sortColumns = new ArrayList(_list365.size);
        String _elem366;
        for (int _i367 = 0; _i367 < _list365.size; ++_i367)
        {
          _elem366 = iprot.readString();
          struct.sortColumns.add(_elem366);
        }
      }
      struct.setSortColumnsIsSet(true);
      struct.owner = iprot.readString();
      struct.setOwnerIsSet(true);
      struct.createTime = iprot.readI64();
      struct.setCreateTimeIsSet(true);
      struct.lastAccessTime = iprot.readI64();
      struct.setLastAccessTimeIsSet(true);
      {
        org.apache.thrift.protocol.TMap _map368 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
        struct.properties = new HashMap(2*_map368.size);
        String _key369;
        String _val370;
        for (int _i371 = 0; _i371 < _map368.size; ++_i371)
        {
          _key369 = iprot.readString();
          _val370 = iprot.readString();
          struct.properties.put(_key369, _val370);
        }
      }
      struct.setPropertiesIsSet(true);
      {
        org.apache.thrift.protocol.TList _list372 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.MAP, iprot.readI32());
        struct.colStats = new ArrayList>(_list372.size);
        Map _elem373;
        for (int _i374 = 0; _i374 < _list372.size; ++_i374)
        {
          {
            org.apache.thrift.protocol.TMap _map375 = new org.apache.thrift.protocol.TMap(org.apache.thrift.protocol.TType.STRING, org.apache.thrift.protocol.TType.STRING, iprot.readI32());
            _elem373 = new HashMap(2*_map375.size);
            String _key376;
            String _val377;
            for (int _i378 = 0; _i378 < _map375.size; ++_i378)
            {
              _key376 = iprot.readString();
              _val377 = iprot.readString();
              _elem373.put(_key376, _val377);
            }
          }
          struct.colStats.add(_elem373);
        }
      }
      struct.setColStatsIsSet(true);
      struct.isBroadcastable = iprot.readBool();
      struct.setIsBroadcastableIsSet(true);
      {
        org.apache.thrift.protocol.TList _list379 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
        struct.unsupportedFeatures = new ArrayList(_list379.size);
        String _elem380;
        for (int _i381 = 0; _i381 < _list379.size; ++_i381)
        {
          _elem380 = iprot.readString();
          struct.unsupportedFeatures.add(_elem380);
        }
      }
      struct.setUnsupportedFeaturesIsSet(true);
      struct.tracksPartitionsInCatalog = iprot.readBool();
      struct.setTracksPartitionsInCatalogIsSet(true);
      struct.schemaPreservesCase = iprot.readBool();
      struct.setSchemaPreservesCaseIsSet(true);
      BitSet incoming = iprot.readBitSet(9);
      if (incoming.get(0)) {
        struct.schemaName = iprot.readString();
        struct.setSchemaNameIsSet(true);
      }
      if (incoming.get(1)) {
        struct.provider = iprot.readString();
        struct.setProviderIsSet(true);
      }
      if (incoming.get(2)) {
        struct.numBuckets = iprot.readI32();
        struct.setNumBucketsIsSet(true);
      }
      if (incoming.get(3)) {
        struct.redundancy = iprot.readI32();
        struct.setRedundancyIsSet(true);
      }
      if (incoming.get(4)) {
        struct.sizeInBytes = iprot.readI64();
        struct.setSizeInBytesIsSet(true);
      }
      if (incoming.get(5)) {
        struct.rowCount = iprot.readI64();
        struct.setRowCountIsSet(true);
      }
      if (incoming.get(6)) {
        struct.viewOriginalText = iprot.readString();
        struct.setViewOriginalTextIsSet(true);
      }
      if (incoming.get(7)) {
        struct.viewText = iprot.readString();
        struct.setViewTextIsSet(true);
      }
      if (incoming.get(8)) {
        struct.comment = iprot.readString();
        struct.setCommentIsSet(true);
      }
    }
  }

}