content: // Generated by the protocol buffer compiler.  DO NOT EDIT!
  // source: Meta.proto
  
  package com.alibaba.wasp.protobuf.generated;
  
  public final class MetaProtos {
    private MetaProtos() {}
    public static void registerAllExtensions(
        com.google.protobuf.ExtensionRegistry registry) {
    }
    public enum DataTypeProtos
        implements com.google.protobuf.ProtocolMessageEnum {
      TYPE_INT32(0, 0),
      TYPE_INT64(1, 1),
      TYPE_STRING(2, 2),
      TYPE_FLOAT(3, 3),
      TYPE_PROTOBUF(4, 4),
      TYPE_DOUBLE(5, 5),
      TYPE_DATETIME(6, 6),
      ;
      
      public static final int TYPE_INT32_VALUE = 0;
      public static final int TYPE_INT64_VALUE = 1;
      public static final int TYPE_STRING_VALUE = 2;
      public static final int TYPE_FLOAT_VALUE = 3;
      public static final int TYPE_PROTOBUF_VALUE = 4;
      public static final int TYPE_DOUBLE_VALUE = 5;
      public static final int TYPE_DATETIME_VALUE = 6;
      
      
      public final int getNumber() { return value; }
      
      public static DataTypeProtos valueOf(int value) {
        switch (value) {
          case 0: return TYPE_INT32;
          case 1: return TYPE_INT64;
          case 2: return TYPE_STRING;
          case 3: return TYPE_FLOAT;
          case 4: return TYPE_PROTOBUF;
          case 5: return TYPE_DOUBLE;
          case 6: return TYPE_DATETIME;
          default: return null;
        }
      }
      
      public static com.google.protobuf.Internal.EnumLiteMap<DataTypeProtos>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static com.google.protobuf.Internal.EnumLiteMap<DataTypeProtos>
          internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<DataTypeProtos>() {
              public DataTypeProtos findValueByNumber(int number) {
                return DataTypeProtos.valueOf(number);
              }
            };
      
      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(index);
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return com.alibaba.wasp.protobuf.generated.MetaProtos.getDescriptor().getEnumTypes().get(0);
      }
      
      private static final DataTypeProtos[] VALUES = {
        TYPE_INT32, TYPE_INT64, TYPE_STRING, TYPE_FLOAT, TYPE_PROTOBUF, TYPE_DOUBLE, TYPE_DATETIME, 
      };
      
      public static DataTypeProtos valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        return VALUES[desc.getIndex()];
      }
      
      private final int index;
      private final int value;
      
      private DataTypeProtos(int index, int value) {
        this.index = index;
        this.value = value;
      }
      
      // @@protoc_insertion_point(enum_scope:DataTypeProtos)
    }
    
    public enum ReadModelProto
        implements com.google.protobuf.ProtocolMessageEnum {
      CURRENT(0, 0),
      SNAPSHOT(1, 1),
      INCONSISTENT(2, 2),
      ;
      
      public static final int CURRENT_VALUE = 0;
      public static final int SNAPSHOT_VALUE = 1;
      public static final int INCONSISTENT_VALUE = 2;
      
      
      public final int getNumber() { return value; }
      
      public static ReadModelProto valueOf(int value) {
        switch (value) {
          case 0: return CURRENT;
          case 1: return SNAPSHOT;
          case 2: return INCONSISTENT;
          default: return null;
        }
      }
      
      public static com.google.protobuf.Internal.EnumLiteMap<ReadModelProto>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static com.google.protobuf.Internal.EnumLiteMap<ReadModelProto>
          internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<ReadModelProto>() {
              public ReadModelProto findValueByNumber(int number) {
                return ReadModelProto.valueOf(number);
              }
            };
      
      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(index);
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return com.alibaba.wasp.protobuf.generated.MetaProtos.getDescriptor().getEnumTypes().get(1);
      }
      
      private static final ReadModelProto[] VALUES = {
        CURRENT, SNAPSHOT, INCONSISTENT, 
      };
      
      public static ReadModelProto valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        return VALUES[desc.getIndex()];
      }
      
      private final int index;
      private final int value;
      
      private ReadModelProto(int index, int value) {
        this.index = index;
        this.value = value;
      }
      
      // @@protoc_insertion_point(enum_scope:ReadModelProto)
    }
    
    public interface TableSchemaOrBuilder
        extends com.google.protobuf.MessageOrBuilder {
      
      // required string tableName = 1;
      boolean hasTableName();
      String getTableName();
      
      // required string owner = 2;
      boolean hasOwner();
      String getOwner();
      
      // required uint64 createTime = 3;
      boolean hasCreateTime();
      long getCreateTime();
      
      // required uint64 lastAccessTime = 4;
      boolean hasLastAccessTime();
      long getLastAccessTime();
      
      // repeated .ColumnSchema columns = 5;
      java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema> 
          getColumnsList();
      com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema getColumns(int index);
      int getColumnsCount();
      java.util.List<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchemaOrBuilder> 
          getColumnsOrBuilderList();
      com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchemaOrBuilder getColumnsOrBuilder(
          int index);
      
      // repeated .ColumnSchema primaryKeys = 6;
      java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema> 
          getPrimaryKeysList();
      com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema getPrimaryKeys(int index);
      int getPrimaryKeysCount();
      java.util.List<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchemaOrBuilder> 
          getPrimaryKeysOrBuilderList();
      com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchemaOrBuilder getPrimaryKeysOrBuilder(
          int index);
      
      // required .TableSchema.TableTypeProtos tableType = 7;
      boolean hasTableType();
      com.alibaba.wasp.protobuf.generated.MetaProtos.TableSchema.TableTypeProtos getTableType();
      
      // optional .ColumnSchema foreignKey = 8;
      boolean hasForeignKey();
      com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema getForeignKey();
      com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchemaOrBuilder getForeignKeyOrBuilder();
      
      // optional string parentName = 9;
      boolean hasParentName();
      String getParentName();
      
      // repeated .StringStringPair parameters = 10;
      java.util.List<com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair> 
          getParametersList();
      com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair getParameters(int index);
      int getParametersCount();
      java.util.List<? extends com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPairOrBuilder> 
          getParametersOrBuilderList();
      com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPairOrBuilder getParametersOrBuilder(
          int index);
    }
    public static final class TableSchema extends
        com.google.protobuf.GeneratedMessage
        implements TableSchemaOrBuilder {
      // Use TableSchema.newBuilder() to construct.
      private TableSchema(Builder builder) {
        super(builder);
      }
      private TableSchema(boolean noInit) {}
      
      private static final TableSchema defaultInstance;
      public static TableSchema getDefaultInstance() {
        return defaultInstance;
      }
      
      public TableSchema getDefaultInstanceForType() {
        return defaultInstance;
      }
      
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_TableSchema_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_TableSchema_fieldAccessorTable;
      }
      
      public enum TableTypeProtos
          implements com.google.protobuf.ProtocolMessageEnum {
        ROOT(0, 0),
        CHILD(1, 1),
        ;
        
        public static final int ROOT_VALUE = 0;
        public static final int CHILD_VALUE = 1;
        
        
        public final int getNumber() { return value; }
        
        public static TableTypeProtos valueOf(int value) {
          switch (value) {
            case 0: return ROOT;
            case 1: return CHILD;
            default: return null;
          }
        }
        
        public static com.google.protobuf.Internal.EnumLiteMap<TableTypeProtos>
            internalGetValueMap() {
          return internalValueMap;
        }
        private static com.google.protobuf.Internal.EnumLiteMap<TableTypeProtos>
            internalValueMap =
              new com.google.protobuf.Internal.EnumLiteMap<TableTypeProtos>() {
                public TableTypeProtos findValueByNumber(int number) {
                  return TableTypeProtos.valueOf(number);
                }
              };
        
        public final com.google.protobuf.Descriptors.EnumValueDescriptor
            getValueDescriptor() {
          return getDescriptor().getValues().get(index);
        }
        public final com.google.protobuf.Descriptors.EnumDescriptor
            getDescriptorForType() {
          return getDescriptor();
        }
        public static final com.google.protobuf.Descriptors.EnumDescriptor
            getDescriptor() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.TableSchema.getDescriptor().getEnumTypes().get(0);
        }
        
        private static final TableTypeProtos[] VALUES = {
          ROOT, CHILD, 
        };
        
        public static TableTypeProtos valueOf(
            com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
          if (desc.getType() != getDescriptor()) {
            throw new java.lang.IllegalArgumentException(
              "EnumValueDescriptor is not for this type.");
          }
          return VALUES[desc.getIndex()];
        }
        
        private final int index;
        private final int value;
        
        private TableTypeProtos(int index, int value) {
          this.index = index;
          this.value = value;
        }
        
        // @@protoc_insertion_point(enum_scope:TableSchema.TableTypeProtos)
      }
      
      private int bitField0_;
      // required string tableName = 1;
      public static final int TABLENAME_FIELD_NUMBER = 1;
      private java.lang.Object tableName_;
      public boolean hasTableName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public String getTableName() {
        java.lang.Object ref = tableName_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (com.google.protobuf.Internal.isValidUtf8(bs)) {
            tableName_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getTableNameBytes() {
        java.lang.Object ref = tableName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          tableName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // required string owner = 2;
      public static final int OWNER_FIELD_NUMBER = 2;
      private java.lang.Object owner_;
      public boolean hasOwner() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public String getOwner() {
        java.lang.Object ref = owner_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (com.google.protobuf.Internal.isValidUtf8(bs)) {
            owner_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getOwnerBytes() {
        java.lang.Object ref = owner_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          owner_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // required uint64 createTime = 3;
      public static final int CREATETIME_FIELD_NUMBER = 3;
      private long createTime_;
      public boolean hasCreateTime() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public long getCreateTime() {
        return createTime_;
      }
      
      // required uint64 lastAccessTime = 4;
      public static final int LASTACCESSTIME_FIELD_NUMBER = 4;
      private long lastAccessTime_;
      public boolean hasLastAccessTime() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      public long getLastAccessTime() {
        return lastAccessTime_;
      }
      
      // repeated .ColumnSchema columns = 5;
      public static final int COLUMNS_FIELD_NUMBER = 5;
      private java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema> columns_;
      public java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema> getColumnsList() {
        return columns_;
      }
      public java.util.List<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchemaOrBuilder> 
          getColumnsOrBuilderList() {
        return columns_;
      }
      public int getColumnsCount() {
        return columns_.size();
      }
      public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema getColumns(int index) {
        return columns_.get(index);
      }
      public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchemaOrBuilder getColumnsOrBuilder(
          int index) {
        return columns_.get(index);
      }
      
      // repeated .ColumnSchema primaryKeys = 6;
      public static final int PRIMARYKEYS_FIELD_NUMBER = 6;
      private java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema> primaryKeys_;
      public java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema> getPrimaryKeysList() {
        return primaryKeys_;
      }
      public java.util.List<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchemaOrBuilder> 
          getPrimaryKeysOrBuilderList() {
        return primaryKeys_;
      }
      public int getPrimaryKeysCount() {
        return primaryKeys_.size();
      }
      public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema getPrimaryKeys(int index) {
        return primaryKeys_.get(index);
      }
      public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchemaOrBuilder getPrimaryKeysOrBuilder(
          int index) {
        return primaryKeys_.get(index);
      }
      
      // required .TableSchema.TableTypeProtos tableType = 7;
      public static final int TABLETYPE_FIELD_NUMBER = 7;
      private com.alibaba.wasp.protobuf.generated.MetaProtos.TableSchema.TableTypeProtos tableType_;
      public boolean hasTableType() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      public com.alibaba.wasp.protobuf.generated.MetaProtos.TableSchema.TableTypeProtos getTableType() {
        return tableType_;
      }
      
      // optional .ColumnSchema foreignKey = 8;
      public static final int FOREIGNKEY_FIELD_NUMBER = 8;
      private com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema foreignKey_;
      public boolean hasForeignKey() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema getForeignKey() {
        return foreignKey_;
      }
      public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchemaOrBuilder getForeignKeyOrBuilder() {
        return foreignKey_;
      }
      
      // optional string parentName = 9;
      public static final int PARENTNAME_FIELD_NUMBER = 9;
      private java.lang.Object parentName_;
      public boolean hasParentName() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      public String getParentName() {
        java.lang.Object ref = parentName_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (com.google.protobuf.Internal.isValidUtf8(bs)) {
            parentName_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getParentNameBytes() {
        java.lang.Object ref = parentName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          parentName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // repeated .StringStringPair parameters = 10;
      public static final int PARAMETERS_FIELD_NUMBER = 10;
      private java.util.List<com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair> parameters_;
      public java.util.List<com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair> getParametersList() {
        return parameters_;
      }
      public java.util.List<? extends com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPairOrBuilder> 
          getParametersOrBuilderList() {
        return parameters_;
      }
      public int getParametersCount() {
        return parameters_.size();
      }
      public com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair getParameters(int index) {
        return parameters_.get(index);
      }
      public com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPairOrBuilder getParametersOrBuilder(
          int index) {
        return parameters_.get(index);
      }
      
      private void initFields() {
        tableName_ = "";
        owner_ = "";
        createTime_ = 0L;
        lastAccessTime_ = 0L;
        columns_ = java.util.Collections.emptyList();
        primaryKeys_ = java.util.Collections.emptyList();
        tableType_ = com.alibaba.wasp.protobuf.generated.MetaProtos.TableSchema.TableTypeProtos.ROOT;
        foreignKey_ = com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.getDefaultInstance();
        parentName_ = "";
        parameters_ = java.util.Collections.emptyList();
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized != -1) return isInitialized == 1;
        
        if (!hasTableName()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasOwner()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasCreateTime()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasLastAccessTime()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasTableType()) {
          memoizedIsInitialized = 0;
          return false;
        }
        for (int i = 0; i < getColumnsCount(); i++) {
          if (!getColumns(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        for (int i = 0; i < getPrimaryKeysCount(); i++) {
          if (!getPrimaryKeys(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasForeignKey()) {
          if (!getForeignKey().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        for (int i = 0; i < getParametersCount(); i++) {
          if (!getParameters(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        memoizedIsInitialized = 1;
        return true;
      }
      
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeBytes(1, getTableNameBytes());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeBytes(2, getOwnerBytes());
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeUInt64(3, createTime_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeUInt64(4, lastAccessTime_);
        }
        for (int i = 0; i < columns_.size(); i++) {
          output.writeMessage(5, columns_.get(i));
        }
        for (int i = 0; i < primaryKeys_.size(); i++) {
          output.writeMessage(6, primaryKeys_.get(i));
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          output.writeEnum(7, tableType_.getNumber());
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          output.writeMessage(8, foreignKey_);
        }
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          output.writeBytes(9, getParentNameBytes());
        }
        for (int i = 0; i < parameters_.size(); i++) {
          output.writeMessage(10, parameters_.get(i));
        }
        getUnknownFields().writeTo(output);
      }
      
      private int memoizedSerializedSize = -1;
      public int getSerializedSize() {
        int size = memoizedSerializedSize;
        if (size != -1) return size;
      
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(1, getTableNameBytes());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(2, getOwnerBytes());
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt64Size(3, createTime_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt64Size(4, lastAccessTime_);
        }
        for (int i = 0; i < columns_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(5, columns_.get(i));
        }
        for (int i = 0; i < primaryKeys_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(6, primaryKeys_.get(i));
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(7, tableType_.getNumber());
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(8, foreignKey_);
        }
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(9, getParentNameBytes());
        }
        for (int i = 0; i < parameters_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(10, parameters_.get(i));
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSerializedSize = size;
        return size;
      }
      
      private static final long serialVersionUID = 0L;
      @java.lang.Override
      protected java.lang.Object writeReplace()
          throws java.io.ObjectStreamException {
        return super.writeReplace();
      }
      
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.alibaba.wasp.protobuf.generated.MetaProtos.TableSchema)) {
          return super.equals(obj);
        }
        com.alibaba.wasp.protobuf.generated.MetaProtos.TableSchema other = (com.alibaba.wasp.protobuf.generated.MetaProtos.TableSchema) obj;
        
        boolean result = true;
        result = result && (hasTableName() == other.hasTableName());
        if (hasTableName()) {
          result = result && getTableName()
              .equals(other.getTableName());
        }
        result = result && (hasOwner() == other.hasOwner());
        if (hasOwner()) {
          result = result && getOwner()
              .equals(other.getOwner());
        }
        result = result && (hasCreateTime() == other.hasCreateTime());
        if (hasCreateTime()) {
          result = result && (getCreateTime()
              == other.getCreateTime());
        }
        result = result && (hasLastAccessTime() == other.hasLastAccessTime());
        if (hasLastAccessTime()) {
          result = result && (getLastAccessTime()
              == other.getLastAccessTime());
        }
        result = result && getColumnsList()
            .equals(other.getColumnsList());
        result = result && getPrimaryKeysList()
            .equals(other.getPrimaryKeysList());
        result = result && (hasTableType() == other.hasTableType());
        if (hasTableType()) {
          result = result &&
              (getTableType() == other.getTableType());
        }
        result = result && (hasForeignKey() == other.hasForeignKey());
        if (hasForeignKey()) {
          result = result && getForeignKey()
              .equals(other.getForeignKey());
        }
        result = result && (hasParentName() == other.hasParentName());
        if (hasParentName()) {
          result = result && getParentName()
              .equals(other.getParentName());
        }
        result = result && getParametersList()
            .equals(other.getParametersList());
        result = result &&
            getUnknownFields().equals(other.getUnknownFields());
        return result;
      }
      
      @java.lang.Override
      public int hashCode() {
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (hasTableName()) {
          hash = (37 * hash) + TABLENAME_FIELD_NUMBER;
          hash = (53 * hash) + getTableName().hashCode();
        }
        if (hasOwner()) {
          hash = (37 * hash) + OWNER_FIELD_NUMBER;
          hash = (53 * hash) + getOwner().hashCode();
        }
        if (hasCreateTime()) {
          hash = (37 * hash) + CREATETIME_FIELD_NUMBER;
          hash = (53 * hash) + hashLong(getCreateTime());
        }
        if (hasLastAccessTime()) {
          hash = (37 * hash) + LASTACCESSTIME_FIELD_NUMBER;
          hash = (53 * hash) + hashLong(getLastAccessTime());
        }
        if (getColumnsCount() > 0) {
          hash = (37 * hash) + COLUMNS_FIELD_NUMBER;
          hash = (53 * hash) + getColumnsList().hashCode();
        }
        if (getPrimaryKeysCount() > 0) {
          hash = (37 * hash) + PRIMARYKEYS_FIELD_NUMBER;
          hash = (53 * hash) + getPrimaryKeysList().hashCode();
        }
        if (hasTableType()) {
          hash = (37 * hash) + TABLETYPE_FIELD_NUMBER;
          hash = (53 * hash) + hashEnum(getTableType());
        }
        if (hasForeignKey()) {
          hash = (37 * hash) + FOREIGNKEY_FIELD_NUMBER;
          hash = (53 * hash) + getForeignKey().hashCode();
        }
        if (hasParentName()) {
          hash = (37 * hash) + PARENTNAME_FIELD_NUMBER;
          hash = (53 * hash) + getParentName().hashCode();
        }
        if (getParametersCount() > 0) {
          hash = (37 * hash) + PARAMETERS_FIELD_NUMBER;
          hash = (53 * hash) + getParametersList().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        return hash;
      }
      
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.TableSchema parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.TableSchema parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.TableSchema parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.TableSchema parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.TableSchema parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.TableSchema parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.TableSchema parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.TableSchema parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.TableSchema parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.TableSchema parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      
      public static Builder newBuilder() { return Builder.create(); }
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder(com.alibaba.wasp.protobuf.generated.MetaProtos.TableSchema prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() { return newBuilder(this); }
      
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder<Builder>
         implements com.alibaba.wasp.protobuf.generated.MetaProtos.TableSchemaOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_TableSchema_descriptor;
        }
        
        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_TableSchema_fieldAccessorTable;
        }
        
        // Construct using com.alibaba.wasp.protobuf.generated.MetaProtos.TableSchema.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
        
        private Builder(BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
            getColumnsFieldBuilder();
            getPrimaryKeysFieldBuilder();
            getForeignKeyFieldBuilder();
            getParametersFieldBuilder();
          }
        }
        private static Builder create() {
          return new Builder();
        }
        
        public Builder clear() {
          super.clear();
          tableName_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          owner_ = "";
          bitField0_ = (bitField0_ & ~0x00000002);
          createTime_ = 0L;
          bitField0_ = (bitField0_ & ~0x00000004);
          lastAccessTime_ = 0L;
          bitField0_ = (bitField0_ & ~0x00000008);
          if (columnsBuilder_ == null) {
            columns_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000010);
          } else {
            columnsBuilder_.clear();
          }
          if (primaryKeysBuilder_ == null) {
            primaryKeys_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000020);
          } else {
            primaryKeysBuilder_.clear();
          }
          tableType_ = com.alibaba.wasp.protobuf.generated.MetaProtos.TableSchema.TableTypeProtos.ROOT;
          bitField0_ = (bitField0_ & ~0x00000040);
          if (foreignKeyBuilder_ == null) {
            foreignKey_ = com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.getDefaultInstance();
          } else {
            foreignKeyBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000080);
          parentName_ = "";
          bitField0_ = (bitField0_ & ~0x00000100);
          if (parametersBuilder_ == null) {
            parameters_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000200);
          } else {
            parametersBuilder_.clear();
          }
          return this;
        }
        
        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }
        
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.TableSchema.getDescriptor();
        }
        
        public com.alibaba.wasp.protobuf.generated.MetaProtos.TableSchema getDefaultInstanceForType() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.TableSchema.getDefaultInstance();
        }
        
        public com.alibaba.wasp.protobuf.generated.MetaProtos.TableSchema build() {
          com.alibaba.wasp.protobuf.generated.MetaProtos.TableSchema result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
        
        private com.alibaba.wasp.protobuf.generated.MetaProtos.TableSchema buildParsed()
            throws com.google.protobuf.InvalidProtocolBufferException {
          com.alibaba.wasp.protobuf.generated.MetaProtos.TableSchema result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(
              result).asInvalidProtocolBufferException();
          }
          return result;
        }
        
        public com.alibaba.wasp.protobuf.generated.MetaProtos.TableSchema buildPartial() {
          com.alibaba.wasp.protobuf.generated.MetaProtos.TableSchema result = new com.alibaba.wasp.protobuf.generated.MetaProtos.TableSchema(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.tableName_ = tableName_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.owner_ = owner_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.createTime_ = createTime_;
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000008;
          }
          result.lastAccessTime_ = lastAccessTime_;
          if (columnsBuilder_ == null) {
            if (((bitField0_ & 0x00000010) == 0x00000010)) {
              columns_ = java.util.Collections.unmodifiableList(columns_);
              bitField0_ = (bitField0_ & ~0x00000010);
            }
            result.columns_ = columns_;
          } else {
            result.columns_ = columnsBuilder_.build();
          }
          if (primaryKeysBuilder_ == null) {
            if (((bitField0_ & 0x00000020) == 0x00000020)) {
              primaryKeys_ = java.util.Collections.unmodifiableList(primaryKeys_);
              bitField0_ = (bitField0_ & ~0x00000020);
            }
            result.primaryKeys_ = primaryKeys_;
          } else {
            result.primaryKeys_ = primaryKeysBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
            to_bitField0_ |= 0x00000010;
          }
          result.tableType_ = tableType_;
          if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
            to_bitField0_ |= 0x00000020;
          }
          if (foreignKeyBuilder_ == null) {
            result.foreignKey_ = foreignKey_;
          } else {
            result.foreignKey_ = foreignKeyBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
            to_bitField0_ |= 0x00000040;
          }
          result.parentName_ = parentName_;
          if (parametersBuilder_ == null) {
            if (((bitField0_ & 0x00000200) == 0x00000200)) {
              parameters_ = java.util.Collections.unmodifiableList(parameters_);
              bitField0_ = (bitField0_ & ~0x00000200);
            }
            result.parameters_ = parameters_;
          } else {
            result.parameters_ = parametersBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
        
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.alibaba.wasp.protobuf.generated.MetaProtos.TableSchema) {
            return mergeFrom((com.alibaba.wasp.protobuf.generated.MetaProtos.TableSchema)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        
        public Builder mergeFrom(com.alibaba.wasp.protobuf.generated.MetaProtos.TableSchema other) {
          if (other == com.alibaba.wasp.protobuf.generated.MetaProtos.TableSchema.getDefaultInstance()) return this;
          if (other.hasTableName()) {
            setTableName(other.getTableName());
          }
          if (other.hasOwner()) {
            setOwner(other.getOwner());
          }
          if (other.hasCreateTime()) {
            setCreateTime(other.getCreateTime());
          }
          if (other.hasLastAccessTime()) {
            setLastAccessTime(other.getLastAccessTime());
          }
          if (columnsBuilder_ == null) {
            if (!other.columns_.isEmpty()) {
              if (columns_.isEmpty()) {
                columns_ = other.columns_;
                bitField0_ = (bitField0_ & ~0x00000010);
              } else {
                ensureColumnsIsMutable();
                columns_.addAll(other.columns_);
              }
              onChanged();
            }
          } else {
            if (!other.columns_.isEmpty()) {
              if (columnsBuilder_.isEmpty()) {
                columnsBuilder_.dispose();
                columnsBuilder_ = null;
                columns_ = other.columns_;
                bitField0_ = (bitField0_ & ~0x00000010);
                columnsBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getColumnsFieldBuilder() : null;
              } else {
                columnsBuilder_.addAllMessages(other.columns_);
              }
            }
          }
          if (primaryKeysBuilder_ == null) {
            if (!other.primaryKeys_.isEmpty()) {
              if (primaryKeys_.isEmpty()) {
                primaryKeys_ = other.primaryKeys_;
                bitField0_ = (bitField0_ & ~0x00000020);
              } else {
                ensurePrimaryKeysIsMutable();
                primaryKeys_.addAll(other.primaryKeys_);
              }
              onChanged();
            }
          } else {
            if (!other.primaryKeys_.isEmpty()) {
              if (primaryKeysBuilder_.isEmpty()) {
                primaryKeysBuilder_.dispose();
                primaryKeysBuilder_ = null;
                primaryKeys_ = other.primaryKeys_;
                bitField0_ = (bitField0_ & ~0x00000020);
                primaryKeysBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getPrimaryKeysFieldBuilder() : null;
              } else {
                primaryKeysBuilder_.addAllMessages(other.primaryKeys_);
              }
            }
          }
          if (other.hasTableType()) {
            setTableType(other.getTableType());
          }
          if (other.hasForeignKey()) {
            mergeForeignKey(other.getForeignKey());
          }
          if (other.hasParentName()) {
            setParentName(other.getParentName());
          }
          if (parametersBuilder_ == null) {
            if (!other.parameters_.isEmpty()) {
              if (parameters_.isEmpty()) {
                parameters_ = other.parameters_;
                bitField0_ = (bitField0_ & ~0x00000200);
              } else {
                ensureParametersIsMutable();
                parameters_.addAll(other.parameters_);
              }
              onChanged();
            }
          } else {
            if (!other.parameters_.isEmpty()) {
              if (parametersBuilder_.isEmpty()) {
                parametersBuilder_.dispose();
                parametersBuilder_ = null;
                parameters_ = other.parameters_;
                bitField0_ = (bitField0_ & ~0x00000200);
                parametersBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getParametersFieldBuilder() : null;
              } else {
                parametersBuilder_.addAllMessages(other.parameters_);
              }
            }
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }
        
        public final boolean isInitialized() {
          if (!hasTableName()) {
            
            return false;
          }
          if (!hasOwner()) {
            
            return false;
          }
          if (!hasCreateTime()) {
            
            return false;
          }
          if (!hasLastAccessTime()) {
            
            return false;
          }
          if (!hasTableType()) {
            
            return false;
          }
          for (int i = 0; i < getColumnsCount(); i++) {
            if (!getColumns(i).isInitialized()) {
              
              return false;
            }
          }
          for (int i = 0; i < getPrimaryKeysCount(); i++) {
            if (!getPrimaryKeys(i).isInitialized()) {
              
              return false;
            }
          }
          if (hasForeignKey()) {
            if (!getForeignKey().isInitialized()) {
              
              return false;
            }
          }
          for (int i = 0; i < getParametersCount(); i++) {
            if (!getParameters(i).isInitialized()) {
              
              return false;
            }
          }
          return true;
        }
        
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder(
              this.getUnknownFields());
          while (true) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  this.setUnknownFields(unknownFields.build());
                  onChanged();
                  return this;
                }
                break;
              }
              case 10: {
                bitField0_ |= 0x00000001;
                tableName_ = input.readBytes();
                break;
              }
              case 18: {
                bitField0_ |= 0x00000002;
                owner_ = input.readBytes();
                break;
              }
              case 24: {
                bitField0_ |= 0x00000004;
                createTime_ = input.readUInt64();
                break;
              }
              case 32: {
                bitField0_ |= 0x00000008;
                lastAccessTime_ = input.readUInt64();
                break;
              }
              case 42: {
                com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder subBuilder = com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.newBuilder();
                input.readMessage(subBuilder, extensionRegistry);
                addColumns(subBuilder.buildPartial());
                break;
              }
              case 50: {
                com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder subBuilder = com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.newBuilder();
                input.readMessage(subBuilder, extensionRegistry);
                addPrimaryKeys(subBuilder.buildPartial());
                break;
              }
              case 56: {
                int rawValue = input.readEnum();
                com.alibaba.wasp.protobuf.generated.MetaProtos.TableSchema.TableTypeProtos value = com.alibaba.wasp.protobuf.generated.MetaProtos.TableSchema.TableTypeProtos.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(7, rawValue);
                } else {
                  bitField0_ |= 0x00000040;
                  tableType_ = value;
                }
                break;
              }
              case 66: {
                com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder subBuilder = com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.newBuilder();
                if (hasForeignKey()) {
                  subBuilder.mergeFrom(getForeignKey());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setForeignKey(subBuilder.buildPartial());
                break;
              }
              case 74: {
                bitField0_ |= 0x00000100;
                parentName_ = input.readBytes();
                break;
              }
              case 82: {
                com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair.Builder subBuilder = com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair.newBuilder();
                input.readMessage(subBuilder, extensionRegistry);
                addParameters(subBuilder.buildPartial());
                break;
              }
            }
          }
        }
        
        private int bitField0_;
        
        // required string tableName = 1;
        private java.lang.Object tableName_ = "";
        public boolean hasTableName() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        public String getTableName() {
          java.lang.Object ref = tableName_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            tableName_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setTableName(String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000001;
          tableName_ = value;
          onChanged();
          return this;
        }
        public Builder clearTableName() {
          bitField0_ = (bitField0_ & ~0x00000001);
          tableName_ = getDefaultInstance().getTableName();
          onChanged();
          return this;
        }
        void setTableName(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000001;
          tableName_ = value;
          onChanged();
        }
        
        // required string owner = 2;
        private java.lang.Object owner_ = "";
        public boolean hasOwner() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        public String getOwner() {
          java.lang.Object ref = owner_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            owner_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setOwner(String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000002;
          owner_ = value;
          onChanged();
          return this;
        }
        public Builder clearOwner() {
          bitField0_ = (bitField0_ & ~0x00000002);
          owner_ = getDefaultInstance().getOwner();
          onChanged();
          return this;
        }
        void setOwner(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000002;
          owner_ = value;
          onChanged();
        }
        
        // required uint64 createTime = 3;
        private long createTime_ ;
        public boolean hasCreateTime() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        public long getCreateTime() {
          return createTime_;
        }
        public Builder setCreateTime(long value) {
          bitField0_ |= 0x00000004;
          createTime_ = value;
          onChanged();
          return this;
        }
        public Builder clearCreateTime() {
          bitField0_ = (bitField0_ & ~0x00000004);
          createTime_ = 0L;
          onChanged();
          return this;
        }
        
        // required uint64 lastAccessTime = 4;
        private long lastAccessTime_ ;
        public boolean hasLastAccessTime() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        public long getLastAccessTime() {
          return lastAccessTime_;
        }
        public Builder setLastAccessTime(long value) {
          bitField0_ |= 0x00000008;
          lastAccessTime_ = value;
          onChanged();
          return this;
        }
        public Builder clearLastAccessTime() {
          bitField0_ = (bitField0_ & ~0x00000008);
          lastAccessTime_ = 0L;
          onChanged();
          return this;
        }
        
        // repeated .ColumnSchema columns = 5;
        private java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema> columns_ =
          java.util.Collections.emptyList();
        private void ensureColumnsIsMutable() {
          if (!((bitField0_ & 0x00000010) == 0x00000010)) {
            columns_ = new java.util.ArrayList<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema>(columns_);
            bitField0_ |= 0x00000010;
           }
        }
        
        private com.google.protobuf.RepeatedFieldBuilder<
            com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchemaOrBuilder> columnsBuilder_;
        
        public java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema> getColumnsList() {
          if (columnsBuilder_ == null) {
            return java.util.Collections.unmodifiableList(columns_);
          } else {
            return columnsBuilder_.getMessageList();
          }
        }
        public int getColumnsCount() {
          if (columnsBuilder_ == null) {
            return columns_.size();
          } else {
            return columnsBuilder_.getCount();
          }
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema getColumns(int index) {
          if (columnsBuilder_ == null) {
            return columns_.get(index);
          } else {
            return columnsBuilder_.getMessage(index);
          }
        }
        public Builder setColumns(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema value) {
          if (columnsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureColumnsIsMutable();
            columns_.set(index, value);
            onChanged();
          } else {
            columnsBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setColumns(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder builderForValue) {
          if (columnsBuilder_ == null) {
            ensureColumnsIsMutable();
            columns_.set(index, builderForValue.build());
            onChanged();
          } else {
            columnsBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addColumns(com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema value) {
          if (columnsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureColumnsIsMutable();
            columns_.add(value);
            onChanged();
          } else {
            columnsBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addColumns(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema value) {
          if (columnsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureColumnsIsMutable();
            columns_.add(index, value);
            onChanged();
          } else {
            columnsBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addColumns(
            com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder builderForValue) {
          if (columnsBuilder_ == null) {
            ensureColumnsIsMutable();
            columns_.add(builderForValue.build());
            onChanged();
          } else {
            columnsBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addColumns(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder builderForValue) {
          if (columnsBuilder_ == null) {
            ensureColumnsIsMutable();
            columns_.add(index, builderForValue.build());
            onChanged();
          } else {
            columnsBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllColumns(
            java.lang.Iterable<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema> values) {
          if (columnsBuilder_ == null) {
            ensureColumnsIsMutable();
            super.addAll(values, columns_);
            onChanged();
          } else {
            columnsBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearColumns() {
          if (columnsBuilder_ == null) {
            columns_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000010);
            onChanged();
          } else {
            columnsBuilder_.clear();
          }
          return this;
        }
        public Builder removeColumns(int index) {
          if (columnsBuilder_ == null) {
            ensureColumnsIsMutable();
            columns_.remove(index);
            onChanged();
          } else {
            columnsBuilder_.remove(index);
          }
          return this;
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder getColumnsBuilder(
            int index) {
          return getColumnsFieldBuilder().getBuilder(index);
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchemaOrBuilder getColumnsOrBuilder(
            int index) {
          if (columnsBuilder_ == null) {
            return columns_.get(index);  } else {
            return columnsBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchemaOrBuilder> 
             getColumnsOrBuilderList() {
          if (columnsBuilder_ != null) {
            return columnsBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(columns_);
          }
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder addColumnsBuilder() {
          return getColumnsFieldBuilder().addBuilder(
              com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.getDefaultInstance());
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder addColumnsBuilder(
            int index) {
          return getColumnsFieldBuilder().addBuilder(
              index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.getDefaultInstance());
        }
        public java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder> 
             getColumnsBuilderList() {
          return getColumnsFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchemaOrBuilder> 
            getColumnsFieldBuilder() {
          if (columnsBuilder_ == null) {
            columnsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchemaOrBuilder>(
                    columns_,
                    ((bitField0_ & 0x00000010) == 0x00000010),
                    getParentForChildren(),
                    isClean());
            columns_ = null;
          }
          return columnsBuilder_;
        }
        
        // repeated .ColumnSchema primaryKeys = 6;
        private java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema> primaryKeys_ =
          java.util.Collections.emptyList();
        private void ensurePrimaryKeysIsMutable() {
          if (!((bitField0_ & 0x00000020) == 0x00000020)) {
            primaryKeys_ = new java.util.ArrayList<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema>(primaryKeys_);
            bitField0_ |= 0x00000020;
           }
        }
        
        private com.google.protobuf.RepeatedFieldBuilder<
            com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchemaOrBuilder> primaryKeysBuilder_;
        
        public java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema> getPrimaryKeysList() {
          if (primaryKeysBuilder_ == null) {
            return java.util.Collections.unmodifiableList(primaryKeys_);
          } else {
            return primaryKeysBuilder_.getMessageList();
          }
        }
        public int getPrimaryKeysCount() {
          if (primaryKeysBuilder_ == null) {
            return primaryKeys_.size();
          } else {
            return primaryKeysBuilder_.getCount();
          }
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema getPrimaryKeys(int index) {
          if (primaryKeysBuilder_ == null) {
            return primaryKeys_.get(index);
          } else {
            return primaryKeysBuilder_.getMessage(index);
          }
        }
        public Builder setPrimaryKeys(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema value) {
          if (primaryKeysBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensurePrimaryKeysIsMutable();
            primaryKeys_.set(index, value);
            onChanged();
          } else {
            primaryKeysBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setPrimaryKeys(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder builderForValue) {
          if (primaryKeysBuilder_ == null) {
            ensurePrimaryKeysIsMutable();
            primaryKeys_.set(index, builderForValue.build());
            onChanged();
          } else {
            primaryKeysBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addPrimaryKeys(com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema value) {
          if (primaryKeysBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensurePrimaryKeysIsMutable();
            primaryKeys_.add(value);
            onChanged();
          } else {
            primaryKeysBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addPrimaryKeys(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema value) {
          if (primaryKeysBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensurePrimaryKeysIsMutable();
            primaryKeys_.add(index, value);
            onChanged();
          } else {
            primaryKeysBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addPrimaryKeys(
            com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder builderForValue) {
          if (primaryKeysBuilder_ == null) {
            ensurePrimaryKeysIsMutable();
            primaryKeys_.add(builderForValue.build());
            onChanged();
          } else {
            primaryKeysBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addPrimaryKeys(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder builderForValue) {
          if (primaryKeysBuilder_ == null) {
            ensurePrimaryKeysIsMutable();
            primaryKeys_.add(index, builderForValue.build());
            onChanged();
          } else {
            primaryKeysBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllPrimaryKeys(
            java.lang.Iterable<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema> values) {
          if (primaryKeysBuilder_ == null) {
            ensurePrimaryKeysIsMutable();
            super.addAll(values, primaryKeys_);
            onChanged();
          } else {
            primaryKeysBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearPrimaryKeys() {
          if (primaryKeysBuilder_ == null) {
            primaryKeys_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000020);
            onChanged();
          } else {
            primaryKeysBuilder_.clear();
          }
          return this;
        }
        public Builder removePrimaryKeys(int index) {
          if (primaryKeysBuilder_ == null) {
            ensurePrimaryKeysIsMutable();
            primaryKeys_.remove(index);
            onChanged();
          } else {
            primaryKeysBuilder_.remove(index);
          }
          return this;
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder getPrimaryKeysBuilder(
            int index) {
          return getPrimaryKeysFieldBuilder().getBuilder(index);
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchemaOrBuilder getPrimaryKeysOrBuilder(
            int index) {
          if (primaryKeysBuilder_ == null) {
            return primaryKeys_.get(index);  } else {
            return primaryKeysBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchemaOrBuilder> 
             getPrimaryKeysOrBuilderList() {
          if (primaryKeysBuilder_ != null) {
            return primaryKeysBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(primaryKeys_);
          }
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder addPrimaryKeysBuilder() {
          return getPrimaryKeysFieldBuilder().addBuilder(
              com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.getDefaultInstance());
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder addPrimaryKeysBuilder(
            int index) {
          return getPrimaryKeysFieldBuilder().addBuilder(
              index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.getDefaultInstance());
        }
        public java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder> 
             getPrimaryKeysBuilderList() {
          return getPrimaryKeysFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchemaOrBuilder> 
            getPrimaryKeysFieldBuilder() {
          if (primaryKeysBuilder_ == null) {
            primaryKeysBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchemaOrBuilder>(
                    primaryKeys_,
                    ((bitField0_ & 0x00000020) == 0x00000020),
                    getParentForChildren(),
                    isClean());
            primaryKeys_ = null;
          }
          return primaryKeysBuilder_;
        }
        
        // required .TableSchema.TableTypeProtos tableType = 7;
        private com.alibaba.wasp.protobuf.generated.MetaProtos.TableSchema.TableTypeProtos tableType_ = com.alibaba.wasp.protobuf.generated.MetaProtos.TableSchema.TableTypeProtos.ROOT;
        public boolean hasTableType() {
          return ((bitField0_ & 0x00000040) == 0x00000040);
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.TableSchema.TableTypeProtos getTableType() {
          return tableType_;
        }
        public Builder setTableType(com.alibaba.wasp.protobuf.generated.MetaProtos.TableSchema.TableTypeProtos value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000040;
          tableType_ = value;
          onChanged();
          return this;
        }
        public Builder clearTableType() {
          bitField0_ = (bitField0_ & ~0x00000040);
          tableType_ = com.alibaba.wasp.protobuf.generated.MetaProtos.TableSchema.TableTypeProtos.ROOT;
          onChanged();
          return this;
        }
        
        // optional .ColumnSchema foreignKey = 8;
        private com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema foreignKey_ = com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchemaOrBuilder> foreignKeyBuilder_;
        public boolean hasForeignKey() {
          return ((bitField0_ & 0x00000080) == 0x00000080);
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema getForeignKey() {
          if (foreignKeyBuilder_ == null) {
            return foreignKey_;
          } else {
            return foreignKeyBuilder_.getMessage();
          }
        }
        public Builder setForeignKey(com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema value) {
          if (foreignKeyBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            foreignKey_ = value;
            onChanged();
          } else {
            foreignKeyBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000080;
          return this;
        }
        public Builder setForeignKey(
            com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder builderForValue) {
          if (foreignKeyBuilder_ == null) {
            foreignKey_ = builderForValue.build();
            onChanged();
          } else {
            foreignKeyBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000080;
          return this;
        }
        public Builder mergeForeignKey(com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema value) {
          if (foreignKeyBuilder_ == null) {
            if (((bitField0_ & 0x00000080) == 0x00000080) &&
                foreignKey_ != com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.getDefaultInstance()) {
              foreignKey_ =
                com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.newBuilder(foreignKey_).mergeFrom(value).buildPartial();
            } else {
              foreignKey_ = value;
            }
            onChanged();
          } else {
            foreignKeyBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000080;
          return this;
        }
        public Builder clearForeignKey() {
          if (foreignKeyBuilder_ == null) {
            foreignKey_ = com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.getDefaultInstance();
            onChanged();
          } else {
            foreignKeyBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000080);
          return this;
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder getForeignKeyBuilder() {
          bitField0_ |= 0x00000080;
          onChanged();
          return getForeignKeyFieldBuilder().getBuilder();
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchemaOrBuilder getForeignKeyOrBuilder() {
          if (foreignKeyBuilder_ != null) {
            return foreignKeyBuilder_.getMessageOrBuilder();
          } else {
            return foreignKey_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchemaOrBuilder> 
            getForeignKeyFieldBuilder() {
          if (foreignKeyBuilder_ == null) {
            foreignKeyBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchemaOrBuilder>(
                    foreignKey_,
                    getParentForChildren(),
                    isClean());
            foreignKey_ = null;
          }
          return foreignKeyBuilder_;
        }
        
        // optional string parentName = 9;
        private java.lang.Object parentName_ = "";
        public boolean hasParentName() {
          return ((bitField0_ & 0x00000100) == 0x00000100);
        }
        public String getParentName() {
          java.lang.Object ref = parentName_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            parentName_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setParentName(String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000100;
          parentName_ = value;
          onChanged();
          return this;
        }
        public Builder clearParentName() {
          bitField0_ = (bitField0_ & ~0x00000100);
          parentName_ = getDefaultInstance().getParentName();
          onChanged();
          return this;
        }
        void setParentName(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000100;
          parentName_ = value;
          onChanged();
        }
        
        // repeated .StringStringPair parameters = 10;
        private java.util.List<com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair> parameters_ =
          java.util.Collections.emptyList();
        private void ensureParametersIsMutable() {
          if (!((bitField0_ & 0x00000200) == 0x00000200)) {
            parameters_ = new java.util.ArrayList<com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair>(parameters_);
            bitField0_ |= 0x00000200;
           }
        }
        
        private com.google.protobuf.RepeatedFieldBuilder<
            com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair, com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair.Builder, com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPairOrBuilder> parametersBuilder_;
        
        public java.util.List<com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair> getParametersList() {
          if (parametersBuilder_ == null) {
            return java.util.Collections.unmodifiableList(parameters_);
          } else {
            return parametersBuilder_.getMessageList();
          }
        }
        public int getParametersCount() {
          if (parametersBuilder_ == null) {
            return parameters_.size();
          } else {
            return parametersBuilder_.getCount();
          }
        }
        public com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair getParameters(int index) {
          if (parametersBuilder_ == null) {
            return parameters_.get(index);
          } else {
            return parametersBuilder_.getMessage(index);
          }
        }
        public Builder setParameters(
            int index, com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair value) {
          if (parametersBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureParametersIsMutable();
            parameters_.set(index, value);
            onChanged();
          } else {
            parametersBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setParameters(
            int index, com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair.Builder builderForValue) {
          if (parametersBuilder_ == null) {
            ensureParametersIsMutable();
            parameters_.set(index, builderForValue.build());
            onChanged();
          } else {
            parametersBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addParameters(com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair value) {
          if (parametersBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureParametersIsMutable();
            parameters_.add(value);
            onChanged();
          } else {
            parametersBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addParameters(
            int index, com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair value) {
          if (parametersBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureParametersIsMutable();
            parameters_.add(index, value);
            onChanged();
          } else {
            parametersBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addParameters(
            com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair.Builder builderForValue) {
          if (parametersBuilder_ == null) {
            ensureParametersIsMutable();
            parameters_.add(builderForValue.build());
            onChanged();
          } else {
            parametersBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addParameters(
            int index, com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair.Builder builderForValue) {
          if (parametersBuilder_ == null) {
            ensureParametersIsMutable();
            parameters_.add(index, builderForValue.build());
            onChanged();
          } else {
            parametersBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllParameters(
            java.lang.Iterable<? extends com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair> values) {
          if (parametersBuilder_ == null) {
            ensureParametersIsMutable();
            super.addAll(values, parameters_);
            onChanged();
          } else {
            parametersBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearParameters() {
          if (parametersBuilder_ == null) {
            parameters_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000200);
            onChanged();
          } else {
            parametersBuilder_.clear();
          }
          return this;
        }
        public Builder removeParameters(int index) {
          if (parametersBuilder_ == null) {
            ensureParametersIsMutable();
            parameters_.remove(index);
            onChanged();
          } else {
            parametersBuilder_.remove(index);
          }
          return this;
        }
        public com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair.Builder getParametersBuilder(
            int index) {
          return getParametersFieldBuilder().getBuilder(index);
        }
        public com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPairOrBuilder getParametersOrBuilder(
            int index) {
          if (parametersBuilder_ == null) {
            return parameters_.get(index);  } else {
            return parametersBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPairOrBuilder> 
             getParametersOrBuilderList() {
          if (parametersBuilder_ != null) {
            return parametersBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(parameters_);
          }
        }
        public com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair.Builder addParametersBuilder() {
          return getParametersFieldBuilder().addBuilder(
              com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair.getDefaultInstance());
        }
        public com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair.Builder addParametersBuilder(
            int index) {
          return getParametersFieldBuilder().addBuilder(
              index, com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair.getDefaultInstance());
        }
        public java.util.List<com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair.Builder> 
             getParametersBuilderList() {
          return getParametersFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair, com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair.Builder, com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPairOrBuilder> 
            getParametersFieldBuilder() {
          if (parametersBuilder_ == null) {
            parametersBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair, com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair.Builder, com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPairOrBuilder>(
                    parameters_,
                    ((bitField0_ & 0x00000200) == 0x00000200),
                    getParentForChildren(),
                    isClean());
            parameters_ = null;
          }
          return parametersBuilder_;
        }
        
        // @@protoc_insertion_point(builder_scope:TableSchema)
      }
      
      static {
        defaultInstance = new TableSchema(true);
        defaultInstance.initFields();
      }
      
      // @@protoc_insertion_point(class_scope:TableSchema)
    }
    
    public interface ColumnSchemaOrBuilder
        extends com.google.protobuf.MessageOrBuilder {
      
      // required string family = 1;
      boolean hasFamily();
      String getFamily();
      
      // required string name = 2;
      boolean hasName();
      String getName();
      
      // required .DataTypeProtos type = 3;
      boolean hasType();
      com.alibaba.wasp.protobuf.generated.MetaProtos.DataTypeProtos getType();
      
      // optional string comment = 4;
      boolean hasComment();
      String getComment();
      
      // required .ColumnSchema.FieldKeyWord keyWord = 5;
      boolean hasKeyWord();
      com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.FieldKeyWord getKeyWord();
    }
    public static final class ColumnSchema extends
        com.google.protobuf.GeneratedMessage
        implements ColumnSchemaOrBuilder {
      // Use ColumnSchema.newBuilder() to construct.
      private ColumnSchema(Builder builder) {
        super(builder);
      }
      private ColumnSchema(boolean noInit) {}
      
      private static final ColumnSchema defaultInstance;
      public static ColumnSchema getDefaultInstance() {
        return defaultInstance;
      }
      
      public ColumnSchema getDefaultInstanceForType() {
        return defaultInstance;
      }
      
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_ColumnSchema_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_ColumnSchema_fieldAccessorTable;
      }
      
      public enum FieldKeyWord
          implements com.google.protobuf.ProtocolMessageEnum {
        key_required(0, 0),
        key_optional(1, 1),
        key_repeated(2, 2),
        ;
        
        public static final int key_required_VALUE = 0;
        public static final int key_optional_VALUE = 1;
        public static final int key_repeated_VALUE = 2;
        
        
        public final int getNumber() { return value; }
        
        public static FieldKeyWord valueOf(int value) {
          switch (value) {
            case 0: return key_required;
            case 1: return key_optional;
            case 2: return key_repeated;
            default: return null;
          }
        }
        
        public static com.google.protobuf.Internal.EnumLiteMap<FieldKeyWord>
            internalGetValueMap() {
          return internalValueMap;
        }
        private static com.google.protobuf.Internal.EnumLiteMap<FieldKeyWord>
            internalValueMap =
              new com.google.protobuf.Internal.EnumLiteMap<FieldKeyWord>() {
                public FieldKeyWord findValueByNumber(int number) {
                  return FieldKeyWord.valueOf(number);
                }
              };
        
        public final com.google.protobuf.Descriptors.EnumValueDescriptor
            getValueDescriptor() {
          return getDescriptor().getValues().get(index);
        }
        public final com.google.protobuf.Descriptors.EnumDescriptor
            getDescriptorForType() {
          return getDescriptor();
        }
        public static final com.google.protobuf.Descriptors.EnumDescriptor
            getDescriptor() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.getDescriptor().getEnumTypes().get(0);
        }
        
        private static final FieldKeyWord[] VALUES = {
          key_required, key_optional, key_repeated, 
        };
        
        public static FieldKeyWord valueOf(
            com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
          if (desc.getType() != getDescriptor()) {
            throw new java.lang.IllegalArgumentException(
              "EnumValueDescriptor is not for this type.");
          }
          return VALUES[desc.getIndex()];
        }
        
        private final int index;
        private final int value;
        
        private FieldKeyWord(int index, int value) {
          this.index = index;
          this.value = value;
        }
        
        // @@protoc_insertion_point(enum_scope:ColumnSchema.FieldKeyWord)
      }
      
      private int bitField0_;
      // required string family = 1;
      public static final int FAMILY_FIELD_NUMBER = 1;
      private java.lang.Object family_;
      public boolean hasFamily() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public String getFamily() {
        java.lang.Object ref = family_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (com.google.protobuf.Internal.isValidUtf8(bs)) {
            family_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getFamilyBytes() {
        java.lang.Object ref = family_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          family_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // required string name = 2;
      public static final int NAME_FIELD_NUMBER = 2;
      private java.lang.Object name_;
      public boolean hasName() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public String getName() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (com.google.protobuf.Internal.isValidUtf8(bs)) {
            name_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // required .DataTypeProtos type = 3;
      public static final int TYPE_FIELD_NUMBER = 3;
      private com.alibaba.wasp.protobuf.generated.MetaProtos.DataTypeProtos type_;
      public boolean hasType() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public com.alibaba.wasp.protobuf.generated.MetaProtos.DataTypeProtos getType() {
        return type_;
      }
      
      // optional string comment = 4;
      public static final int COMMENT_FIELD_NUMBER = 4;
      private java.lang.Object comment_;
      public boolean hasComment() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      public String getComment() {
        java.lang.Object ref = comment_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (com.google.protobuf.Internal.isValidUtf8(bs)) {
            comment_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getCommentBytes() {
        java.lang.Object ref = comment_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          comment_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // required .ColumnSchema.FieldKeyWord keyWord = 5;
      public static final int KEYWORD_FIELD_NUMBER = 5;
      private com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.FieldKeyWord keyWord_;
      public boolean hasKeyWord() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.FieldKeyWord getKeyWord() {
        return keyWord_;
      }
      
      private void initFields() {
        family_ = "";
        name_ = "";
        type_ = com.alibaba.wasp.protobuf.generated.MetaProtos.DataTypeProtos.TYPE_INT32;
        comment_ = "";
        keyWord_ = com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.FieldKeyWord.key_required;
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized != -1) return isInitialized == 1;
        
        if (!hasFamily()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasName()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasType()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasKeyWord()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
      
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeBytes(1, getFamilyBytes());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeBytes(2, getNameBytes());
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeEnum(3, type_.getNumber());
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeBytes(4, getCommentBytes());
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          output.writeEnum(5, keyWord_.getNumber());
        }
        getUnknownFields().writeTo(output);
      }
      
      private int memoizedSerializedSize = -1;
      public int getSerializedSize() {
        int size = memoizedSerializedSize;
        if (size != -1) return size;
      
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(1, getFamilyBytes());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(2, getNameBytes());
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(3, type_.getNumber());
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(4, getCommentBytes());
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(5, keyWord_.getNumber());
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSerializedSize = size;
        return size;
      }
      
      private static final long serialVersionUID = 0L;
      @java.lang.Override
      protected java.lang.Object writeReplace()
          throws java.io.ObjectStreamException {
        return super.writeReplace();
      }
      
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema)) {
          return super.equals(obj);
        }
        com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema other = (com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema) obj;
        
        boolean result = true;
        result = result && (hasFamily() == other.hasFamily());
        if (hasFamily()) {
          result = result && getFamily()
              .equals(other.getFamily());
        }
        result = result && (hasName() == other.hasName());
        if (hasName()) {
          result = result && getName()
              .equals(other.getName());
        }
        result = result && (hasType() == other.hasType());
        if (hasType()) {
          result = result &&
              (getType() == other.getType());
        }
        result = result && (hasComment() == other.hasComment());
        if (hasComment()) {
          result = result && getComment()
              .equals(other.getComment());
        }
        result = result && (hasKeyWord() == other.hasKeyWord());
        if (hasKeyWord()) {
          result = result &&
              (getKeyWord() == other.getKeyWord());
        }
        result = result &&
            getUnknownFields().equals(other.getUnknownFields());
        return result;
      }
      
      @java.lang.Override
      public int hashCode() {
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (hasFamily()) {
          hash = (37 * hash) + FAMILY_FIELD_NUMBER;
          hash = (53 * hash) + getFamily().hashCode();
        }
        if (hasName()) {
          hash = (37 * hash) + NAME_FIELD_NUMBER;
          hash = (53 * hash) + getName().hashCode();
        }
        if (hasType()) {
          hash = (37 * hash) + TYPE_FIELD_NUMBER;
          hash = (53 * hash) + hashEnum(getType());
        }
        if (hasComment()) {
          hash = (37 * hash) + COMMENT_FIELD_NUMBER;
          hash = (53 * hash) + getComment().hashCode();
        }
        if (hasKeyWord()) {
          hash = (37 * hash) + KEYWORD_FIELD_NUMBER;
          hash = (53 * hash) + hashEnum(getKeyWord());
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        return hash;
      }
      
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      
      public static Builder newBuilder() { return Builder.create(); }
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder(com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() { return newBuilder(this); }
      
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder<Builder>
         implements com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchemaOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_ColumnSchema_descriptor;
        }
        
        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_ColumnSchema_fieldAccessorTable;
        }
        
        // Construct using com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
        
        private Builder(BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          }
        }
        private static Builder create() {
          return new Builder();
        }
        
        public Builder clear() {
          super.clear();
          family_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          name_ = "";
          bitField0_ = (bitField0_ & ~0x00000002);
          type_ = com.alibaba.wasp.protobuf.generated.MetaProtos.DataTypeProtos.TYPE_INT32;
          bitField0_ = (bitField0_ & ~0x00000004);
          comment_ = "";
          bitField0_ = (bitField0_ & ~0x00000008);
          keyWord_ = com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.FieldKeyWord.key_required;
          bitField0_ = (bitField0_ & ~0x00000010);
          return this;
        }
        
        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }
        
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.getDescriptor();
        }
        
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema getDefaultInstanceForType() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.getDefaultInstance();
        }
        
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema build() {
          com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
        
        private com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema buildParsed()
            throws com.google.protobuf.InvalidProtocolBufferException {
          com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(
              result).asInvalidProtocolBufferException();
          }
          return result;
        }
        
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema buildPartial() {
          com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema result = new com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.family_ = family_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.name_ = name_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.type_ = type_;
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000008;
          }
          result.comment_ = comment_;
          if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
            to_bitField0_ |= 0x00000010;
          }
          result.keyWord_ = keyWord_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
        
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema) {
            return mergeFrom((com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        
        public Builder mergeFrom(com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema other) {
          if (other == com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.getDefaultInstance()) return this;
          if (other.hasFamily()) {
            setFamily(other.getFamily());
          }
          if (other.hasName()) {
            setName(other.getName());
          }
          if (other.hasType()) {
            setType(other.getType());
          }
          if (other.hasComment()) {
            setComment(other.getComment());
          }
          if (other.hasKeyWord()) {
            setKeyWord(other.getKeyWord());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }
        
        public final boolean isInitialized() {
          if (!hasFamily()) {
            
            return false;
          }
          if (!hasName()) {
            
            return false;
          }
          if (!hasType()) {
            
            return false;
          }
          if (!hasKeyWord()) {
            
            return false;
          }
          return true;
        }
        
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder(
              this.getUnknownFields());
          while (true) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  this.setUnknownFields(unknownFields.build());
                  onChanged();
                  return this;
                }
                break;
              }
              case 10: {
                bitField0_ |= 0x00000001;
                family_ = input.readBytes();
                break;
              }
              case 18: {
                bitField0_ |= 0x00000002;
                name_ = input.readBytes();
                break;
              }
              case 24: {
                int rawValue = input.readEnum();
                com.alibaba.wasp.protobuf.generated.MetaProtos.DataTypeProtos value = com.alibaba.wasp.protobuf.generated.MetaProtos.DataTypeProtos.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(3, rawValue);
                } else {
                  bitField0_ |= 0x00000004;
                  type_ = value;
                }
                break;
              }
              case 34: {
                bitField0_ |= 0x00000008;
                comment_ = input.readBytes();
                break;
              }
              case 40: {
                int rawValue = input.readEnum();
                com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.FieldKeyWord value = com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.FieldKeyWord.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(5, rawValue);
                } else {
                  bitField0_ |= 0x00000010;
                  keyWord_ = value;
                }
                break;
              }
            }
          }
        }
        
        private int bitField0_;
        
        // required string family = 1;
        private java.lang.Object family_ = "";
        public boolean hasFamily() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        public String getFamily() {
          java.lang.Object ref = family_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            family_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setFamily(String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000001;
          family_ = value;
          onChanged();
          return this;
        }
        public Builder clearFamily() {
          bitField0_ = (bitField0_ & ~0x00000001);
          family_ = getDefaultInstance().getFamily();
          onChanged();
          return this;
        }
        void setFamily(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000001;
          family_ = value;
          onChanged();
        }
        
        // required string name = 2;
        private java.lang.Object name_ = "";
        public boolean hasName() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        public String getName() {
          java.lang.Object ref = name_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            name_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setName(String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000002;
          name_ = value;
          onChanged();
          return this;
        }
        public Builder clearName() {
          bitField0_ = (bitField0_ & ~0x00000002);
          name_ = getDefaultInstance().getName();
          onChanged();
          return this;
        }
        void setName(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000002;
          name_ = value;
          onChanged();
        }
        
        // required .DataTypeProtos type = 3;
        private com.alibaba.wasp.protobuf.generated.MetaProtos.DataTypeProtos type_ = com.alibaba.wasp.protobuf.generated.MetaProtos.DataTypeProtos.TYPE_INT32;
        public boolean hasType() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.DataTypeProtos getType() {
          return type_;
        }
        public Builder setType(com.alibaba.wasp.protobuf.generated.MetaProtos.DataTypeProtos value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000004;
          type_ = value;
          onChanged();
          return this;
        }
        public Builder clearType() {
          bitField0_ = (bitField0_ & ~0x00000004);
          type_ = com.alibaba.wasp.protobuf.generated.MetaProtos.DataTypeProtos.TYPE_INT32;
          onChanged();
          return this;
        }
        
        // optional string comment = 4;
        private java.lang.Object comment_ = "";
        public boolean hasComment() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        public String getComment() {
          java.lang.Object ref = comment_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            comment_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setComment(String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000008;
          comment_ = value;
          onChanged();
          return this;
        }
        public Builder clearComment() {
          bitField0_ = (bitField0_ & ~0x00000008);
          comment_ = getDefaultInstance().getComment();
          onChanged();
          return this;
        }
        void setComment(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000008;
          comment_ = value;
          onChanged();
        }
        
        // required .ColumnSchema.FieldKeyWord keyWord = 5;
        private com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.FieldKeyWord keyWord_ = com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.FieldKeyWord.key_required;
        public boolean hasKeyWord() {
          return ((bitField0_ & 0x00000010) == 0x00000010);
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.FieldKeyWord getKeyWord() {
          return keyWord_;
        }
        public Builder setKeyWord(com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.FieldKeyWord value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000010;
          keyWord_ = value;
          onChanged();
          return this;
        }
        public Builder clearKeyWord() {
          bitField0_ = (bitField0_ & ~0x00000010);
          keyWord_ = com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.FieldKeyWord.key_required;
          onChanged();
          return this;
        }
        
        // @@protoc_insertion_point(builder_scope:ColumnSchema)
      }
      
      static {
        defaultInstance = new ColumnSchema(true);
        defaultInstance.initFields();
      }
      
      // @@protoc_insertion_point(class_scope:ColumnSchema)
    }
    
    public interface IndexSchemaOrBuilder
        extends com.google.protobuf.MessageOrBuilder {
      
      // required string indexName = 1;
      boolean hasIndexName();
      String getIndexName();
      
      // repeated .ColumnSchema indexKeys = 2;
      java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema> 
          getIndexKeysList();
      com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema getIndexKeys(int index);
      int getIndexKeysCount();
      java.util.List<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchemaOrBuilder> 
          getIndexKeysOrBuilderList();
      com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchemaOrBuilder getIndexKeysOrBuilder(
          int index);
      
      // repeated .StringStringPair parameters = 3;
      java.util.List<com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair> 
          getParametersList();
      com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair getParameters(int index);
      int getParametersCount();
      java.util.List<? extends com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPairOrBuilder> 
          getParametersOrBuilderList();
      com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPairOrBuilder getParametersOrBuilder(
          int index);
      
      // required string tableName = 4;
      boolean hasTableName();
      String getTableName();
      
      // repeated .ColumnSchema storingKeys = 5;
      java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema> 
          getStoringKeysList();
      com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema getStoringKeys(int index);
      int getStoringKeysCount();
      java.util.List<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchemaOrBuilder> 
          getStoringKeysOrBuilderList();
      com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchemaOrBuilder getStoringKeysOrBuilder(
          int index);
      
      // repeated string desc = 6;
      java.util.List<String> getDescList();
      int getDescCount();
      String getDesc(int index);
    }
    public static final class IndexSchema extends
        com.google.protobuf.GeneratedMessage
        implements IndexSchemaOrBuilder {
      // Use IndexSchema.newBuilder() to construct.
      private IndexSchema(Builder builder) {
        super(builder);
      }
      private IndexSchema(boolean noInit) {}
      
      private static final IndexSchema defaultInstance;
      public static IndexSchema getDefaultInstance() {
        return defaultInstance;
      }
      
      public IndexSchema getDefaultInstanceForType() {
        return defaultInstance;
      }
      
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_IndexSchema_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_IndexSchema_fieldAccessorTable;
      }
      
      private int bitField0_;
      // required string indexName = 1;
      public static final int INDEXNAME_FIELD_NUMBER = 1;
      private java.lang.Object indexName_;
      public boolean hasIndexName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public String getIndexName() {
        java.lang.Object ref = indexName_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (com.google.protobuf.Internal.isValidUtf8(bs)) {
            indexName_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getIndexNameBytes() {
        java.lang.Object ref = indexName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          indexName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // repeated .ColumnSchema indexKeys = 2;
      public static final int INDEXKEYS_FIELD_NUMBER = 2;
      private java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema> indexKeys_;
      public java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema> getIndexKeysList() {
        return indexKeys_;
      }
      public java.util.List<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchemaOrBuilder> 
          getIndexKeysOrBuilderList() {
        return indexKeys_;
      }
      public int getIndexKeysCount() {
        return indexKeys_.size();
      }
      public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema getIndexKeys(int index) {
        return indexKeys_.get(index);
      }
      public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchemaOrBuilder getIndexKeysOrBuilder(
          int index) {
        return indexKeys_.get(index);
      }
      
      // repeated .StringStringPair parameters = 3;
      public static final int PARAMETERS_FIELD_NUMBER = 3;
      private java.util.List<com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair> parameters_;
      public java.util.List<com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair> getParametersList() {
        return parameters_;
      }
      public java.util.List<? extends com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPairOrBuilder> 
          getParametersOrBuilderList() {
        return parameters_;
      }
      public int getParametersCount() {
        return parameters_.size();
      }
      public com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair getParameters(int index) {
        return parameters_.get(index);
      }
      public com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPairOrBuilder getParametersOrBuilder(
          int index) {
        return parameters_.get(index);
      }
      
      // required string tableName = 4;
      public static final int TABLENAME_FIELD_NUMBER = 4;
      private java.lang.Object tableName_;
      public boolean hasTableName() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public String getTableName() {
        java.lang.Object ref = tableName_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (com.google.protobuf.Internal.isValidUtf8(bs)) {
            tableName_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getTableNameBytes() {
        java.lang.Object ref = tableName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          tableName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // repeated .ColumnSchema storingKeys = 5;
      public static final int STORINGKEYS_FIELD_NUMBER = 5;
      private java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema> storingKeys_;
      public java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema> getStoringKeysList() {
        return storingKeys_;
      }
      public java.util.List<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchemaOrBuilder> 
          getStoringKeysOrBuilderList() {
        return storingKeys_;
      }
      public int getStoringKeysCount() {
        return storingKeys_.size();
      }
      public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema getStoringKeys(int index) {
        return storingKeys_.get(index);
      }
      public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchemaOrBuilder getStoringKeysOrBuilder(
          int index) {
        return storingKeys_.get(index);
      }
      
      // repeated string desc = 6;
      public static final int DESC_FIELD_NUMBER = 6;
      private com.google.protobuf.LazyStringList desc_;
      public java.util.List<String>
          getDescList() {
        return desc_;
      }
      public int getDescCount() {
        return desc_.size();
      }
      public String getDesc(int index) {
        return desc_.get(index);
      }
      
      private void initFields() {
        indexName_ = "";
        indexKeys_ = java.util.Collections.emptyList();
        parameters_ = java.util.Collections.emptyList();
        tableName_ = "";
        storingKeys_ = java.util.Collections.emptyList();
        desc_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized != -1) return isInitialized == 1;
        
        if (!hasIndexName()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasTableName()) {
          memoizedIsInitialized = 0;
          return false;
        }
        for (int i = 0; i < getIndexKeysCount(); i++) {
          if (!getIndexKeys(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        for (int i = 0; i < getParametersCount(); i++) {
          if (!getParameters(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        for (int i = 0; i < getStoringKeysCount(); i++) {
          if (!getStoringKeys(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        memoizedIsInitialized = 1;
        return true;
      }
      
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeBytes(1, getIndexNameBytes());
        }
        for (int i = 0; i < indexKeys_.size(); i++) {
          output.writeMessage(2, indexKeys_.get(i));
        }
        for (int i = 0; i < parameters_.size(); i++) {
          output.writeMessage(3, parameters_.get(i));
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeBytes(4, getTableNameBytes());
        }
        for (int i = 0; i < storingKeys_.size(); i++) {
          output.writeMessage(5, storingKeys_.get(i));
        }
        for (int i = 0; i < desc_.size(); i++) {
          output.writeBytes(6, desc_.getByteString(i));
        }
        getUnknownFields().writeTo(output);
      }
      
      private int memoizedSerializedSize = -1;
      public int getSerializedSize() {
        int size = memoizedSerializedSize;
        if (size != -1) return size;
      
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(1, getIndexNameBytes());
        }
        for (int i = 0; i < indexKeys_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, indexKeys_.get(i));
        }
        for (int i = 0; i < parameters_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, parameters_.get(i));
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(4, getTableNameBytes());
        }
        for (int i = 0; i < storingKeys_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(5, storingKeys_.get(i));
        }
        {
          int dataSize = 0;
          for (int i = 0; i < desc_.size(); i++) {
            dataSize += com.google.protobuf.CodedOutputStream
              .computeBytesSizeNoTag(desc_.getByteString(i));
          }
          size += dataSize;
          size += 1 * getDescList().size();
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSerializedSize = size;
        return size;
      }
      
      private static final long serialVersionUID = 0L;
      @java.lang.Override
      protected java.lang.Object writeReplace()
          throws java.io.ObjectStreamException {
        return super.writeReplace();
      }
      
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.alibaba.wasp.protobuf.generated.MetaProtos.IndexSchema)) {
          return super.equals(obj);
        }
        com.alibaba.wasp.protobuf.generated.MetaProtos.IndexSchema other = (com.alibaba.wasp.protobuf.generated.MetaProtos.IndexSchema) obj;
        
        boolean result = true;
        result = result && (hasIndexName() == other.hasIndexName());
        if (hasIndexName()) {
          result = result && getIndexName()
              .equals(other.getIndexName());
        }
        result = result && getIndexKeysList()
            .equals(other.getIndexKeysList());
        result = result && getParametersList()
            .equals(other.getParametersList());
        result = result && (hasTableName() == other.hasTableName());
        if (hasTableName()) {
          result = result && getTableName()
              .equals(other.getTableName());
        }
        result = result && getStoringKeysList()
            .equals(other.getStoringKeysList());
        result = result && getDescList()
            .equals(other.getDescList());
        result = result &&
            getUnknownFields().equals(other.getUnknownFields());
        return result;
      }
      
      @java.lang.Override
      public int hashCode() {
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (hasIndexName()) {
          hash = (37 * hash) + INDEXNAME_FIELD_NUMBER;
          hash = (53 * hash) + getIndexName().hashCode();
        }
        if (getIndexKeysCount() > 0) {
          hash = (37 * hash) + INDEXKEYS_FIELD_NUMBER;
          hash = (53 * hash) + getIndexKeysList().hashCode();
        }
        if (getParametersCount() > 0) {
          hash = (37 * hash) + PARAMETERS_FIELD_NUMBER;
          hash = (53 * hash) + getParametersList().hashCode();
        }
        if (hasTableName()) {
          hash = (37 * hash) + TABLENAME_FIELD_NUMBER;
          hash = (53 * hash) + getTableName().hashCode();
        }
        if (getStoringKeysCount() > 0) {
          hash = (37 * hash) + STORINGKEYS_FIELD_NUMBER;
          hash = (53 * hash) + getStoringKeysList().hashCode();
        }
        if (getDescCount() > 0) {
          hash = (37 * hash) + DESC_FIELD_NUMBER;
          hash = (53 * hash) + getDescList().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        return hash;
      }
      
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.IndexSchema parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.IndexSchema parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.IndexSchema parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.IndexSchema parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.IndexSchema parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.IndexSchema parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.IndexSchema parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.IndexSchema parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.IndexSchema parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.IndexSchema parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      
      public static Builder newBuilder() { return Builder.create(); }
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder(com.alibaba.wasp.protobuf.generated.MetaProtos.IndexSchema prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() { return newBuilder(this); }
      
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder<Builder>
         implements com.alibaba.wasp.protobuf.generated.MetaProtos.IndexSchemaOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_IndexSchema_descriptor;
        }
        
        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_IndexSchema_fieldAccessorTable;
        }
        
        // Construct using com.alibaba.wasp.protobuf.generated.MetaProtos.IndexSchema.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
        
        private Builder(BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
            getIndexKeysFieldBuilder();
            getParametersFieldBuilder();
            getStoringKeysFieldBuilder();
          }
        }
        private static Builder create() {
          return new Builder();
        }
        
        public Builder clear() {
          super.clear();
          indexName_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          if (indexKeysBuilder_ == null) {
            indexKeys_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            indexKeysBuilder_.clear();
          }
          if (parametersBuilder_ == null) {
            parameters_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            parametersBuilder_.clear();
          }
          tableName_ = "";
          bitField0_ = (bitField0_ & ~0x00000008);
          if (storingKeysBuilder_ == null) {
            storingKeys_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000010);
          } else {
            storingKeysBuilder_.clear();
          }
          desc_ = com.google.protobuf.LazyStringArrayList.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000020);
          return this;
        }
        
        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }
        
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.IndexSchema.getDescriptor();
        }
        
        public com.alibaba.wasp.protobuf.generated.MetaProtos.IndexSchema getDefaultInstanceForType() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.IndexSchema.getDefaultInstance();
        }
        
        public com.alibaba.wasp.protobuf.generated.MetaProtos.IndexSchema build() {
          com.alibaba.wasp.protobuf.generated.MetaProtos.IndexSchema result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
        
        private com.alibaba.wasp.protobuf.generated.MetaProtos.IndexSchema buildParsed()
            throws com.google.protobuf.InvalidProtocolBufferException {
          com.alibaba.wasp.protobuf.generated.MetaProtos.IndexSchema result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(
              result).asInvalidProtocolBufferException();
          }
          return result;
        }
        
        public com.alibaba.wasp.protobuf.generated.MetaProtos.IndexSchema buildPartial() {
          com.alibaba.wasp.protobuf.generated.MetaProtos.IndexSchema result = new com.alibaba.wasp.protobuf.generated.MetaProtos.IndexSchema(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.indexName_ = indexName_;
          if (indexKeysBuilder_ == null) {
            if (((bitField0_ & 0x00000002) == 0x00000002)) {
              indexKeys_ = java.util.Collections.unmodifiableList(indexKeys_);
              bitField0_ = (bitField0_ & ~0x00000002);
            }
            result.indexKeys_ = indexKeys_;
          } else {
            result.indexKeys_ = indexKeysBuilder_.build();
          }
          if (parametersBuilder_ == null) {
            if (((bitField0_ & 0x00000004) == 0x00000004)) {
              parameters_ = java.util.Collections.unmodifiableList(parameters_);
              bitField0_ = (bitField0_ & ~0x00000004);
            }
            result.parameters_ = parameters_;
          } else {
            result.parameters_ = parametersBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000002;
          }
          result.tableName_ = tableName_;
          if (storingKeysBuilder_ == null) {
            if (((bitField0_ & 0x00000010) == 0x00000010)) {
              storingKeys_ = java.util.Collections.unmodifiableList(storingKeys_);
              bitField0_ = (bitField0_ & ~0x00000010);
            }
            result.storingKeys_ = storingKeys_;
          } else {
            result.storingKeys_ = storingKeysBuilder_.build();
          }
          if (((bitField0_ & 0x00000020) == 0x00000020)) {
            desc_ = new com.google.protobuf.UnmodifiableLazyStringList(
                desc_);
            bitField0_ = (bitField0_ & ~0x00000020);
          }
          result.desc_ = desc_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
        
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.alibaba.wasp.protobuf.generated.MetaProtos.IndexSchema) {
            return mergeFrom((com.alibaba.wasp.protobuf.generated.MetaProtos.IndexSchema)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        
        public Builder mergeFrom(com.alibaba.wasp.protobuf.generated.MetaProtos.IndexSchema other) {
          if (other == com.alibaba.wasp.protobuf.generated.MetaProtos.IndexSchema.getDefaultInstance()) return this;
          if (other.hasIndexName()) {
            setIndexName(other.getIndexName());
          }
          if (indexKeysBuilder_ == null) {
            if (!other.indexKeys_.isEmpty()) {
              if (indexKeys_.isEmpty()) {
                indexKeys_ = other.indexKeys_;
                bitField0_ = (bitField0_ & ~0x00000002);
              } else {
                ensureIndexKeysIsMutable();
                indexKeys_.addAll(other.indexKeys_);
              }
              onChanged();
            }
          } else {
            if (!other.indexKeys_.isEmpty()) {
              if (indexKeysBuilder_.isEmpty()) {
                indexKeysBuilder_.dispose();
                indexKeysBuilder_ = null;
                indexKeys_ = other.indexKeys_;
                bitField0_ = (bitField0_ & ~0x00000002);
                indexKeysBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getIndexKeysFieldBuilder() : null;
              } else {
                indexKeysBuilder_.addAllMessages(other.indexKeys_);
              }
            }
          }
          if (parametersBuilder_ == null) {
            if (!other.parameters_.isEmpty()) {
              if (parameters_.isEmpty()) {
                parameters_ = other.parameters_;
                bitField0_ = (bitField0_ & ~0x00000004);
              } else {
                ensureParametersIsMutable();
                parameters_.addAll(other.parameters_);
              }
              onChanged();
            }
          } else {
            if (!other.parameters_.isEmpty()) {
              if (parametersBuilder_.isEmpty()) {
                parametersBuilder_.dispose();
                parametersBuilder_ = null;
                parameters_ = other.parameters_;
                bitField0_ = (bitField0_ & ~0x00000004);
                parametersBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getParametersFieldBuilder() : null;
              } else {
                parametersBuilder_.addAllMessages(other.parameters_);
              }
            }
          }
          if (other.hasTableName()) {
            setTableName(other.getTableName());
          }
          if (storingKeysBuilder_ == null) {
            if (!other.storingKeys_.isEmpty()) {
              if (storingKeys_.isEmpty()) {
                storingKeys_ = other.storingKeys_;
                bitField0_ = (bitField0_ & ~0x00000010);
              } else {
                ensureStoringKeysIsMutable();
                storingKeys_.addAll(other.storingKeys_);
              }
              onChanged();
            }
          } else {
            if (!other.storingKeys_.isEmpty()) {
              if (storingKeysBuilder_.isEmpty()) {
                storingKeysBuilder_.dispose();
                storingKeysBuilder_ = null;
                storingKeys_ = other.storingKeys_;
                bitField0_ = (bitField0_ & ~0x00000010);
                storingKeysBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getStoringKeysFieldBuilder() : null;
              } else {
                storingKeysBuilder_.addAllMessages(other.storingKeys_);
              }
            }
          }
          if (!other.desc_.isEmpty()) {
            if (desc_.isEmpty()) {
              desc_ = other.desc_;
              bitField0_ = (bitField0_ & ~0x00000020);
            } else {
              ensureDescIsMutable();
              desc_.addAll(other.desc_);
            }
            onChanged();
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }
        
        public final boolean isInitialized() {
          if (!hasIndexName()) {
            
            return false;
          }
          if (!hasTableName()) {
            
            return false;
          }
          for (int i = 0; i < getIndexKeysCount(); i++) {
            if (!getIndexKeys(i).isInitialized()) {
              
              return false;
            }
          }
          for (int i = 0; i < getParametersCount(); i++) {
            if (!getParameters(i).isInitialized()) {
              
              return false;
            }
          }
          for (int i = 0; i < getStoringKeysCount(); i++) {
            if (!getStoringKeys(i).isInitialized()) {
              
              return false;
            }
          }
          return true;
        }
        
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder(
              this.getUnknownFields());
          while (true) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  this.setUnknownFields(unknownFields.build());
                  onChanged();
                  return this;
                }
                break;
              }
              case 10: {
                bitField0_ |= 0x00000001;
                indexName_ = input.readBytes();
                break;
              }
              case 18: {
                com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder subBuilder = com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.newBuilder();
                input.readMessage(subBuilder, extensionRegistry);
                addIndexKeys(subBuilder.buildPartial());
                break;
              }
              case 26: {
                com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair.Builder subBuilder = com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair.newBuilder();
                input.readMessage(subBuilder, extensionRegistry);
                addParameters(subBuilder.buildPartial());
                break;
              }
              case 34: {
                bitField0_ |= 0x00000008;
                tableName_ = input.readBytes();
                break;
              }
              case 42: {
                com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder subBuilder = com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.newBuilder();
                input.readMessage(subBuilder, extensionRegistry);
                addStoringKeys(subBuilder.buildPartial());
                break;
              }
              case 50: {
                ensureDescIsMutable();
                desc_.add(input.readBytes());
                break;
              }
            }
          }
        }
        
        private int bitField0_;
        
        // required string indexName = 1;
        private java.lang.Object indexName_ = "";
        public boolean hasIndexName() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        public String getIndexName() {
          java.lang.Object ref = indexName_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            indexName_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setIndexName(String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000001;
          indexName_ = value;
          onChanged();
          return this;
        }
        public Builder clearIndexName() {
          bitField0_ = (bitField0_ & ~0x00000001);
          indexName_ = getDefaultInstance().getIndexName();
          onChanged();
          return this;
        }
        void setIndexName(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000001;
          indexName_ = value;
          onChanged();
        }
        
        // repeated .ColumnSchema indexKeys = 2;
        private java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema> indexKeys_ =
          java.util.Collections.emptyList();
        private void ensureIndexKeysIsMutable() {
          if (!((bitField0_ & 0x00000002) == 0x00000002)) {
            indexKeys_ = new java.util.ArrayList<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema>(indexKeys_);
            bitField0_ |= 0x00000002;
           }
        }
        
        private com.google.protobuf.RepeatedFieldBuilder<
            com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchemaOrBuilder> indexKeysBuilder_;
        
        public java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema> getIndexKeysList() {
          if (indexKeysBuilder_ == null) {
            return java.util.Collections.unmodifiableList(indexKeys_);
          } else {
            return indexKeysBuilder_.getMessageList();
          }
        }
        public int getIndexKeysCount() {
          if (indexKeysBuilder_ == null) {
            return indexKeys_.size();
          } else {
            return indexKeysBuilder_.getCount();
          }
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema getIndexKeys(int index) {
          if (indexKeysBuilder_ == null) {
            return indexKeys_.get(index);
          } else {
            return indexKeysBuilder_.getMessage(index);
          }
        }
        public Builder setIndexKeys(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema value) {
          if (indexKeysBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureIndexKeysIsMutable();
            indexKeys_.set(index, value);
            onChanged();
          } else {
            indexKeysBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setIndexKeys(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder builderForValue) {
          if (indexKeysBuilder_ == null) {
            ensureIndexKeysIsMutable();
            indexKeys_.set(index, builderForValue.build());
            onChanged();
          } else {
            indexKeysBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addIndexKeys(com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema value) {
          if (indexKeysBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureIndexKeysIsMutable();
            indexKeys_.add(value);
            onChanged();
          } else {
            indexKeysBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addIndexKeys(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema value) {
          if (indexKeysBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureIndexKeysIsMutable();
            indexKeys_.add(index, value);
            onChanged();
          } else {
            indexKeysBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addIndexKeys(
            com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder builderForValue) {
          if (indexKeysBuilder_ == null) {
            ensureIndexKeysIsMutable();
            indexKeys_.add(builderForValue.build());
            onChanged();
          } else {
            indexKeysBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addIndexKeys(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder builderForValue) {
          if (indexKeysBuilder_ == null) {
            ensureIndexKeysIsMutable();
            indexKeys_.add(index, builderForValue.build());
            onChanged();
          } else {
            indexKeysBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllIndexKeys(
            java.lang.Iterable<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema> values) {
          if (indexKeysBuilder_ == null) {
            ensureIndexKeysIsMutable();
            super.addAll(values, indexKeys_);
            onChanged();
          } else {
            indexKeysBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearIndexKeys() {
          if (indexKeysBuilder_ == null) {
            indexKeys_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
            onChanged();
          } else {
            indexKeysBuilder_.clear();
          }
          return this;
        }
        public Builder removeIndexKeys(int index) {
          if (indexKeysBuilder_ == null) {
            ensureIndexKeysIsMutable();
            indexKeys_.remove(index);
            onChanged();
          } else {
            indexKeysBuilder_.remove(index);
          }
          return this;
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder getIndexKeysBuilder(
            int index) {
          return getIndexKeysFieldBuilder().getBuilder(index);
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchemaOrBuilder getIndexKeysOrBuilder(
            int index) {
          if (indexKeysBuilder_ == null) {
            return indexKeys_.get(index);  } else {
            return indexKeysBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchemaOrBuilder> 
             getIndexKeysOrBuilderList() {
          if (indexKeysBuilder_ != null) {
            return indexKeysBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(indexKeys_);
          }
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder addIndexKeysBuilder() {
          return getIndexKeysFieldBuilder().addBuilder(
              com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.getDefaultInstance());
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder addIndexKeysBuilder(
            int index) {
          return getIndexKeysFieldBuilder().addBuilder(
              index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.getDefaultInstance());
        }
        public java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder> 
             getIndexKeysBuilderList() {
          return getIndexKeysFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchemaOrBuilder> 
            getIndexKeysFieldBuilder() {
          if (indexKeysBuilder_ == null) {
            indexKeysBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchemaOrBuilder>(
                    indexKeys_,
                    ((bitField0_ & 0x00000002) == 0x00000002),
                    getParentForChildren(),
                    isClean());
            indexKeys_ = null;
          }
          return indexKeysBuilder_;
        }
        
        // repeated .StringStringPair parameters = 3;
        private java.util.List<com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair> parameters_ =
          java.util.Collections.emptyList();
        private void ensureParametersIsMutable() {
          if (!((bitField0_ & 0x00000004) == 0x00000004)) {
            parameters_ = new java.util.ArrayList<com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair>(parameters_);
            bitField0_ |= 0x00000004;
           }
        }
        
        private com.google.protobuf.RepeatedFieldBuilder<
            com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair, com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair.Builder, com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPairOrBuilder> parametersBuilder_;
        
        public java.util.List<com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair> getParametersList() {
          if (parametersBuilder_ == null) {
            return java.util.Collections.unmodifiableList(parameters_);
          } else {
            return parametersBuilder_.getMessageList();
          }
        }
        public int getParametersCount() {
          if (parametersBuilder_ == null) {
            return parameters_.size();
          } else {
            return parametersBuilder_.getCount();
          }
        }
        public com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair getParameters(int index) {
          if (parametersBuilder_ == null) {
            return parameters_.get(index);
          } else {
            return parametersBuilder_.getMessage(index);
          }
        }
        public Builder setParameters(
            int index, com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair value) {
          if (parametersBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureParametersIsMutable();
            parameters_.set(index, value);
            onChanged();
          } else {
            parametersBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setParameters(
            int index, com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair.Builder builderForValue) {
          if (parametersBuilder_ == null) {
            ensureParametersIsMutable();
            parameters_.set(index, builderForValue.build());
            onChanged();
          } else {
            parametersBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addParameters(com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair value) {
          if (parametersBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureParametersIsMutable();
            parameters_.add(value);
            onChanged();
          } else {
            parametersBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addParameters(
            int index, com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair value) {
          if (parametersBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureParametersIsMutable();
            parameters_.add(index, value);
            onChanged();
          } else {
            parametersBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addParameters(
            com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair.Builder builderForValue) {
          if (parametersBuilder_ == null) {
            ensureParametersIsMutable();
            parameters_.add(builderForValue.build());
            onChanged();
          } else {
            parametersBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addParameters(
            int index, com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair.Builder builderForValue) {
          if (parametersBuilder_ == null) {
            ensureParametersIsMutable();
            parameters_.add(index, builderForValue.build());
            onChanged();
          } else {
            parametersBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllParameters(
            java.lang.Iterable<? extends com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair> values) {
          if (parametersBuilder_ == null) {
            ensureParametersIsMutable();
            super.addAll(values, parameters_);
            onChanged();
          } else {
            parametersBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearParameters() {
          if (parametersBuilder_ == null) {
            parameters_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000004);
            onChanged();
          } else {
            parametersBuilder_.clear();
          }
          return this;
        }
        public Builder removeParameters(int index) {
          if (parametersBuilder_ == null) {
            ensureParametersIsMutable();
            parameters_.remove(index);
            onChanged();
          } else {
            parametersBuilder_.remove(index);
          }
          return this;
        }
        public com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair.Builder getParametersBuilder(
            int index) {
          return getParametersFieldBuilder().getBuilder(index);
        }
        public com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPairOrBuilder getParametersOrBuilder(
            int index) {
          if (parametersBuilder_ == null) {
            return parameters_.get(index);  } else {
            return parametersBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPairOrBuilder> 
             getParametersOrBuilderList() {
          if (parametersBuilder_ != null) {
            return parametersBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(parameters_);
          }
        }
        public com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair.Builder addParametersBuilder() {
          return getParametersFieldBuilder().addBuilder(
              com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair.getDefaultInstance());
        }
        public com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair.Builder addParametersBuilder(
            int index) {
          return getParametersFieldBuilder().addBuilder(
              index, com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair.getDefaultInstance());
        }
        public java.util.List<com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair.Builder> 
             getParametersBuilderList() {
          return getParametersFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair, com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair.Builder, com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPairOrBuilder> 
            getParametersFieldBuilder() {
          if (parametersBuilder_ == null) {
            parametersBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair, com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPair.Builder, com.alibaba.wasp.protobuf.generated.WaspProtos.StringStringPairOrBuilder>(
                    parameters_,
                    ((bitField0_ & 0x00000004) == 0x00000004),
                    getParentForChildren(),
                    isClean());
            parameters_ = null;
          }
          return parametersBuilder_;
        }
        
        // required string tableName = 4;
        private java.lang.Object tableName_ = "";
        public boolean hasTableName() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        public String getTableName() {
          java.lang.Object ref = tableName_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            tableName_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setTableName(String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000008;
          tableName_ = value;
          onChanged();
          return this;
        }
        public Builder clearTableName() {
          bitField0_ = (bitField0_ & ~0x00000008);
          tableName_ = getDefaultInstance().getTableName();
          onChanged();
          return this;
        }
        void setTableName(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000008;
          tableName_ = value;
          onChanged();
        }
        
        // repeated .ColumnSchema storingKeys = 5;
        private java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema> storingKeys_ =
          java.util.Collections.emptyList();
        private void ensureStoringKeysIsMutable() {
          if (!((bitField0_ & 0x00000010) == 0x00000010)) {
            storingKeys_ = new java.util.ArrayList<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema>(storingKeys_);
            bitField0_ |= 0x00000010;
           }
        }
        
        private com.google.protobuf.RepeatedFieldBuilder<
            com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchemaOrBuilder> storingKeysBuilder_;
        
        public java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema> getStoringKeysList() {
          if (storingKeysBuilder_ == null) {
            return java.util.Collections.unmodifiableList(storingKeys_);
          } else {
            return storingKeysBuilder_.getMessageList();
          }
        }
        public int getStoringKeysCount() {
          if (storingKeysBuilder_ == null) {
            return storingKeys_.size();
          } else {
            return storingKeysBuilder_.getCount();
          }
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema getStoringKeys(int index) {
          if (storingKeysBuilder_ == null) {
            return storingKeys_.get(index);
          } else {
            return storingKeysBuilder_.getMessage(index);
          }
        }
        public Builder setStoringKeys(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema value) {
          if (storingKeysBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureStoringKeysIsMutable();
            storingKeys_.set(index, value);
            onChanged();
          } else {
            storingKeysBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setStoringKeys(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder builderForValue) {
          if (storingKeysBuilder_ == null) {
            ensureStoringKeysIsMutable();
            storingKeys_.set(index, builderForValue.build());
            onChanged();
          } else {
            storingKeysBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addStoringKeys(com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema value) {
          if (storingKeysBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureStoringKeysIsMutable();
            storingKeys_.add(value);
            onChanged();
          } else {
            storingKeysBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addStoringKeys(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema value) {
          if (storingKeysBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureStoringKeysIsMutable();
            storingKeys_.add(index, value);
            onChanged();
          } else {
            storingKeysBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addStoringKeys(
            com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder builderForValue) {
          if (storingKeysBuilder_ == null) {
            ensureStoringKeysIsMutable();
            storingKeys_.add(builderForValue.build());
            onChanged();
          } else {
            storingKeysBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addStoringKeys(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder builderForValue) {
          if (storingKeysBuilder_ == null) {
            ensureStoringKeysIsMutable();
            storingKeys_.add(index, builderForValue.build());
            onChanged();
          } else {
            storingKeysBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllStoringKeys(
            java.lang.Iterable<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema> values) {
          if (storingKeysBuilder_ == null) {
            ensureStoringKeysIsMutable();
            super.addAll(values, storingKeys_);
            onChanged();
          } else {
            storingKeysBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearStoringKeys() {
          if (storingKeysBuilder_ == null) {
            storingKeys_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000010);
            onChanged();
          } else {
            storingKeysBuilder_.clear();
          }
          return this;
        }
        public Builder removeStoringKeys(int index) {
          if (storingKeysBuilder_ == null) {
            ensureStoringKeysIsMutable();
            storingKeys_.remove(index);
            onChanged();
          } else {
            storingKeysBuilder_.remove(index);
          }
          return this;
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder getStoringKeysBuilder(
            int index) {
          return getStoringKeysFieldBuilder().getBuilder(index);
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchemaOrBuilder getStoringKeysOrBuilder(
            int index) {
          if (storingKeysBuilder_ == null) {
            return storingKeys_.get(index);  } else {
            return storingKeysBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchemaOrBuilder> 
             getStoringKeysOrBuilderList() {
          if (storingKeysBuilder_ != null) {
            return storingKeysBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(storingKeys_);
          }
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder addStoringKeysBuilder() {
          return getStoringKeysFieldBuilder().addBuilder(
              com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.getDefaultInstance());
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder addStoringKeysBuilder(
            int index) {
          return getStoringKeysFieldBuilder().addBuilder(
              index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.getDefaultInstance());
        }
        public java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder> 
             getStoringKeysBuilderList() {
          return getStoringKeysFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchemaOrBuilder> 
            getStoringKeysFieldBuilder() {
          if (storingKeysBuilder_ == null) {
            storingKeysBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchemaOrBuilder>(
                    storingKeys_,
                    ((bitField0_ & 0x00000010) == 0x00000010),
                    getParentForChildren(),
                    isClean());
            storingKeys_ = null;
          }
          return storingKeysBuilder_;
        }
        
        // repeated string desc = 6;
        private com.google.protobuf.LazyStringList desc_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        private void ensureDescIsMutable() {
          if (!((bitField0_ & 0x00000020) == 0x00000020)) {
            desc_ = new com.google.protobuf.LazyStringArrayList(desc_);
            bitField0_ |= 0x00000020;
           }
        }
        public java.util.List<String>
            getDescList() {
          return java.util.Collections.unmodifiableList(desc_);
        }
        public int getDescCount() {
          return desc_.size();
        }
        public String getDesc(int index) {
          return desc_.get(index);
        }
        public Builder setDesc(
            int index, String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    ensureDescIsMutable();
          desc_.set(index, value);
          onChanged();
          return this;
        }
        public Builder addDesc(String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    ensureDescIsMutable();
          desc_.add(value);
          onChanged();
          return this;
        }
        public Builder addAllDesc(
            java.lang.Iterable<String> values) {
          ensureDescIsMutable();
          super.addAll(values, desc_);
          onChanged();
          return this;
        }
        public Builder clearDesc() {
          desc_ = com.google.protobuf.LazyStringArrayList.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000020);
          onChanged();
          return this;
        }
        void addDesc(com.google.protobuf.ByteString value) {
          ensureDescIsMutable();
          desc_.add(value);
          onChanged();
        }
        
        // @@protoc_insertion_point(builder_scope:IndexSchema)
      }
      
      static {
        defaultInstance = new IndexSchema(true);
        defaultInstance.initFields();
      }
      
      // @@protoc_insertion_point(class_scope:IndexSchema)
    }
    
    public interface TransactionProtoOrBuilder
        extends com.google.protobuf.MessageOrBuilder {
      
      // required uint64 tid = 1;
      boolean hasTid();
      long getTid();
      
      // repeated .Mutate mutates = 2;
      java.util.List<com.alibaba.wasp.protobuf.generated.WaspProtos.Mutate> 
          getMutatesList();
      com.alibaba.wasp.protobuf.generated.WaspProtos.Mutate getMutates(int index);
      int getMutatesCount();
      java.util.List<? extends com.alibaba.wasp.protobuf.generated.WaspProtos.MutateOrBuilder> 
          getMutatesOrBuilderList();
      com.alibaba.wasp.protobuf.generated.WaspProtos.MutateOrBuilder getMutatesOrBuilder(
          int index);
    }
    public static final class TransactionProto extends
        com.google.protobuf.GeneratedMessage
        implements TransactionProtoOrBuilder {
      // Use TransactionProto.newBuilder() to construct.
      private TransactionProto(Builder builder) {
        super(builder);
      }
      private TransactionProto(boolean noInit) {}
      
      private static final TransactionProto defaultInstance;
      public static TransactionProto getDefaultInstance() {
        return defaultInstance;
      }
      
      public TransactionProto getDefaultInstanceForType() {
        return defaultInstance;
      }
      
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_TransactionProto_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_TransactionProto_fieldAccessorTable;
      }
      
      private int bitField0_;
      // required uint64 tid = 1;
      public static final int TID_FIELD_NUMBER = 1;
      private long tid_;
      public boolean hasTid() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public long getTid() {
        return tid_;
      }
      
      // repeated .Mutate mutates = 2;
      public static final int MUTATES_FIELD_NUMBER = 2;
      private java.util.List<com.alibaba.wasp.protobuf.generated.WaspProtos.Mutate> mutates_;
      public java.util.List<com.alibaba.wasp.protobuf.generated.WaspProtos.Mutate> getMutatesList() {
        return mutates_;
      }
      public java.util.List<? extends com.alibaba.wasp.protobuf.generated.WaspProtos.MutateOrBuilder> 
          getMutatesOrBuilderList() {
        return mutates_;
      }
      public int getMutatesCount() {
        return mutates_.size();
      }
      public com.alibaba.wasp.protobuf.generated.WaspProtos.Mutate getMutates(int index) {
        return mutates_.get(index);
      }
      public com.alibaba.wasp.protobuf.generated.WaspProtos.MutateOrBuilder getMutatesOrBuilder(
          int index) {
        return mutates_.get(index);
      }
      
      private void initFields() {
        tid_ = 0L;
        mutates_ = java.util.Collections.emptyList();
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized != -1) return isInitialized == 1;
        
        if (!hasTid()) {
          memoizedIsInitialized = 0;
          return false;
        }
        for (int i = 0; i < getMutatesCount(); i++) {
          if (!getMutates(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        memoizedIsInitialized = 1;
        return true;
      }
      
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeUInt64(1, tid_);
        }
        for (int i = 0; i < mutates_.size(); i++) {
          output.writeMessage(2, mutates_.get(i));
        }
        getUnknownFields().writeTo(output);
      }
      
      private int memoizedSerializedSize = -1;
      public int getSerializedSize() {
        int size = memoizedSerializedSize;
        if (size != -1) return size;
      
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt64Size(1, tid_);
        }
        for (int i = 0; i < mutates_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, mutates_.get(i));
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSerializedSize = size;
        return size;
      }
      
      private static final long serialVersionUID = 0L;
      @java.lang.Override
      protected java.lang.Object writeReplace()
          throws java.io.ObjectStreamException {
        return super.writeReplace();
      }
      
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionProto)) {
          return super.equals(obj);
        }
        com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionProto other = (com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionProto) obj;
        
        boolean result = true;
        result = result && (hasTid() == other.hasTid());
        if (hasTid()) {
          result = result && (getTid()
              == other.getTid());
        }
        result = result && getMutatesList()
            .equals(other.getMutatesList());
        result = result &&
            getUnknownFields().equals(other.getUnknownFields());
        return result;
      }
      
      @java.lang.Override
      public int hashCode() {
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (hasTid()) {
          hash = (37 * hash) + TID_FIELD_NUMBER;
          hash = (53 * hash) + hashLong(getTid());
        }
        if (getMutatesCount() > 0) {
          hash = (37 * hash) + MUTATES_FIELD_NUMBER;
          hash = (53 * hash) + getMutatesList().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        return hash;
      }
      
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionProto parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionProto parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionProto parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionProto parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionProto parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionProto parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionProto parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionProto parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionProto parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionProto parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      
      public static Builder newBuilder() { return Builder.create(); }
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder(com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionProto prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() { return newBuilder(this); }
      
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder<Builder>
         implements com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionProtoOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_TransactionProto_descriptor;
        }
        
        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_TransactionProto_fieldAccessorTable;
        }
        
        // Construct using com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionProto.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
        
        private Builder(BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
            getMutatesFieldBuilder();
          }
        }
        private static Builder create() {
          return new Builder();
        }
        
        public Builder clear() {
          super.clear();
          tid_ = 0L;
          bitField0_ = (bitField0_ & ~0x00000001);
          if (mutatesBuilder_ == null) {
            mutates_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            mutatesBuilder_.clear();
          }
          return this;
        }
        
        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }
        
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionProto.getDescriptor();
        }
        
        public com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionProto getDefaultInstanceForType() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionProto.getDefaultInstance();
        }
        
        public com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionProto build() {
          com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionProto result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
        
        private com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionProto buildParsed()
            throws com.google.protobuf.InvalidProtocolBufferException {
          com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionProto result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(
              result).asInvalidProtocolBufferException();
          }
          return result;
        }
        
        public com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionProto buildPartial() {
          com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionProto result = new com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionProto(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.tid_ = tid_;
          if (mutatesBuilder_ == null) {
            if (((bitField0_ & 0x00000002) == 0x00000002)) {
              mutates_ = java.util.Collections.unmodifiableList(mutates_);
              bitField0_ = (bitField0_ & ~0x00000002);
            }
            result.mutates_ = mutates_;
          } else {
            result.mutates_ = mutatesBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
        
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionProto) {
            return mergeFrom((com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionProto)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        
        public Builder mergeFrom(com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionProto other) {
          if (other == com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionProto.getDefaultInstance()) return this;
          if (other.hasTid()) {
            setTid(other.getTid());
          }
          if (mutatesBuilder_ == null) {
            if (!other.mutates_.isEmpty()) {
              if (mutates_.isEmpty()) {
                mutates_ = other.mutates_;
                bitField0_ = (bitField0_ & ~0x00000002);
              } else {
                ensureMutatesIsMutable();
                mutates_.addAll(other.mutates_);
              }
              onChanged();
            }
          } else {
            if (!other.mutates_.isEmpty()) {
              if (mutatesBuilder_.isEmpty()) {
                mutatesBuilder_.dispose();
                mutatesBuilder_ = null;
                mutates_ = other.mutates_;
                bitField0_ = (bitField0_ & ~0x00000002);
                mutatesBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getMutatesFieldBuilder() : null;
              } else {
                mutatesBuilder_.addAllMessages(other.mutates_);
              }
            }
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }
        
        public final boolean isInitialized() {
          if (!hasTid()) {
            
            return false;
          }
          for (int i = 0; i < getMutatesCount(); i++) {
            if (!getMutates(i).isInitialized()) {
              
              return false;
            }
          }
          return true;
        }
        
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder(
              this.getUnknownFields());
          while (true) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  this.setUnknownFields(unknownFields.build());
                  onChanged();
                  return this;
                }
                break;
              }
              case 8: {
                bitField0_ |= 0x00000001;
                tid_ = input.readUInt64();
                break;
              }
              case 18: {
                com.alibaba.wasp.protobuf.generated.WaspProtos.Mutate.Builder subBuilder = com.alibaba.wasp.protobuf.generated.WaspProtos.Mutate.newBuilder();
                input.readMessage(subBuilder, extensionRegistry);
                addMutates(subBuilder.buildPartial());
                break;
              }
            }
          }
        }
        
        private int bitField0_;
        
        // required uint64 tid = 1;
        private long tid_ ;
        public boolean hasTid() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        public long getTid() {
          return tid_;
        }
        public Builder setTid(long value) {
          bitField0_ |= 0x00000001;
          tid_ = value;
          onChanged();
          return this;
        }
        public Builder clearTid() {
          bitField0_ = (bitField0_ & ~0x00000001);
          tid_ = 0L;
          onChanged();
          return this;
        }
        
        // repeated .Mutate mutates = 2;
        private java.util.List<com.alibaba.wasp.protobuf.generated.WaspProtos.Mutate> mutates_ =
          java.util.Collections.emptyList();
        private void ensureMutatesIsMutable() {
          if (!((bitField0_ & 0x00000002) == 0x00000002)) {
            mutates_ = new java.util.ArrayList<com.alibaba.wasp.protobuf.generated.WaspProtos.Mutate>(mutates_);
            bitField0_ |= 0x00000002;
           }
        }
        
        private com.google.protobuf.RepeatedFieldBuilder<
            com.alibaba.wasp.protobuf.generated.WaspProtos.Mutate, com.alibaba.wasp.protobuf.generated.WaspProtos.Mutate.Builder, com.alibaba.wasp.protobuf.generated.WaspProtos.MutateOrBuilder> mutatesBuilder_;
        
        public java.util.List<com.alibaba.wasp.protobuf.generated.WaspProtos.Mutate> getMutatesList() {
          if (mutatesBuilder_ == null) {
            return java.util.Collections.unmodifiableList(mutates_);
          } else {
            return mutatesBuilder_.getMessageList();
          }
        }
        public int getMutatesCount() {
          if (mutatesBuilder_ == null) {
            return mutates_.size();
          } else {
            return mutatesBuilder_.getCount();
          }
        }
        public com.alibaba.wasp.protobuf.generated.WaspProtos.Mutate getMutates(int index) {
          if (mutatesBuilder_ == null) {
            return mutates_.get(index);
          } else {
            return mutatesBuilder_.getMessage(index);
          }
        }
        public Builder setMutates(
            int index, com.alibaba.wasp.protobuf.generated.WaspProtos.Mutate value) {
          if (mutatesBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureMutatesIsMutable();
            mutates_.set(index, value);
            onChanged();
          } else {
            mutatesBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setMutates(
            int index, com.alibaba.wasp.protobuf.generated.WaspProtos.Mutate.Builder builderForValue) {
          if (mutatesBuilder_ == null) {
            ensureMutatesIsMutable();
            mutates_.set(index, builderForValue.build());
            onChanged();
          } else {
            mutatesBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addMutates(com.alibaba.wasp.protobuf.generated.WaspProtos.Mutate value) {
          if (mutatesBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureMutatesIsMutable();
            mutates_.add(value);
            onChanged();
          } else {
            mutatesBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addMutates(
            int index, com.alibaba.wasp.protobuf.generated.WaspProtos.Mutate value) {
          if (mutatesBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureMutatesIsMutable();
            mutates_.add(index, value);
            onChanged();
          } else {
            mutatesBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addMutates(
            com.alibaba.wasp.protobuf.generated.WaspProtos.Mutate.Builder builderForValue) {
          if (mutatesBuilder_ == null) {
            ensureMutatesIsMutable();
            mutates_.add(builderForValue.build());
            onChanged();
          } else {
            mutatesBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addMutates(
            int index, com.alibaba.wasp.protobuf.generated.WaspProtos.Mutate.Builder builderForValue) {
          if (mutatesBuilder_ == null) {
            ensureMutatesIsMutable();
            mutates_.add(index, builderForValue.build());
            onChanged();
          } else {
            mutatesBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllMutates(
            java.lang.Iterable<? extends com.alibaba.wasp.protobuf.generated.WaspProtos.Mutate> values) {
          if (mutatesBuilder_ == null) {
            ensureMutatesIsMutable();
            super.addAll(values, mutates_);
            onChanged();
          } else {
            mutatesBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearMutates() {
          if (mutatesBuilder_ == null) {
            mutates_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
            onChanged();
          } else {
            mutatesBuilder_.clear();
          }
          return this;
        }
        public Builder removeMutates(int index) {
          if (mutatesBuilder_ == null) {
            ensureMutatesIsMutable();
            mutates_.remove(index);
            onChanged();
          } else {
            mutatesBuilder_.remove(index);
          }
          return this;
        }
        public com.alibaba.wasp.protobuf.generated.WaspProtos.Mutate.Builder getMutatesBuilder(
            int index) {
          return getMutatesFieldBuilder().getBuilder(index);
        }
        public com.alibaba.wasp.protobuf.generated.WaspProtos.MutateOrBuilder getMutatesOrBuilder(
            int index) {
          if (mutatesBuilder_ == null) {
            return mutates_.get(index);  } else {
            return mutatesBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends com.alibaba.wasp.protobuf.generated.WaspProtos.MutateOrBuilder> 
             getMutatesOrBuilderList() {
          if (mutatesBuilder_ != null) {
            return mutatesBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(mutates_);
          }
        }
        public com.alibaba.wasp.protobuf.generated.WaspProtos.Mutate.Builder addMutatesBuilder() {
          return getMutatesFieldBuilder().addBuilder(
              com.alibaba.wasp.protobuf.generated.WaspProtos.Mutate.getDefaultInstance());
        }
        public com.alibaba.wasp.protobuf.generated.WaspProtos.Mutate.Builder addMutatesBuilder(
            int index) {
          return getMutatesFieldBuilder().addBuilder(
              index, com.alibaba.wasp.protobuf.generated.WaspProtos.Mutate.getDefaultInstance());
        }
        public java.util.List<com.alibaba.wasp.protobuf.generated.WaspProtos.Mutate.Builder> 
             getMutatesBuilderList() {
          return getMutatesFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            com.alibaba.wasp.protobuf.generated.WaspProtos.Mutate, com.alibaba.wasp.protobuf.generated.WaspProtos.Mutate.Builder, com.alibaba.wasp.protobuf.generated.WaspProtos.MutateOrBuilder> 
            getMutatesFieldBuilder() {
          if (mutatesBuilder_ == null) {
            mutatesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                com.alibaba.wasp.protobuf.generated.WaspProtos.Mutate, com.alibaba.wasp.protobuf.generated.WaspProtos.Mutate.Builder, com.alibaba.wasp.protobuf.generated.WaspProtos.MutateOrBuilder>(
                    mutates_,
                    ((bitField0_ & 0x00000002) == 0x00000002),
                    getParentForChildren(),
                    isClean());
            mutates_ = null;
          }
          return mutatesBuilder_;
        }
        
        // @@protoc_insertion_point(builder_scope:TransactionProto)
      }
      
      static {
        defaultInstance = new TransactionProto(true);
        defaultInstance.initFields();
      }
      
      // @@protoc_insertion_point(class_scope:TransactionProto)
    }
    
    public interface GetActionProtoOrBuilder
        extends com.google.protobuf.MessageOrBuilder {
      
      // optional .ReadModelProto readMode = 1;
      boolean hasReadMode();
      com.alibaba.wasp.protobuf.generated.MetaProtos.ReadModelProto getReadMode();
      
      // required string entityTableName = 2;
      boolean hasEntityTableName();
      String getEntityTableName();
      
      // required bytes row = 3;
      boolean hasRow();
      com.google.protobuf.ByteString getRow();
      
      // repeated .ColumnStructProto cols = 4;
      java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto> 
          getColsList();
      com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto getCols(int index);
      int getColsCount();
      java.util.List<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder> 
          getColsOrBuilderList();
      com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder getColsOrBuilder(
          int index);
      
      // optional bool forUpdate = 5;
      boolean hasForUpdate();
      boolean getForUpdate();
      
      // optional string sessionId = 6;
      boolean hasSessionId();
      String getSessionId();
    }
    public static final class GetActionProto extends
        com.google.protobuf.GeneratedMessage
        implements GetActionProtoOrBuilder {
      // Use GetActionProto.newBuilder() to construct.
      private GetActionProto(Builder builder) {
        super(builder);
      }
      private GetActionProto(boolean noInit) {}
      
      private static final GetActionProto defaultInstance;
      public static GetActionProto getDefaultInstance() {
        return defaultInstance;
      }
      
      public GetActionProto getDefaultInstanceForType() {
        return defaultInstance;
      }
      
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_GetActionProto_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_GetActionProto_fieldAccessorTable;
      }
      
      private int bitField0_;
      // optional .ReadModelProto readMode = 1;
      public static final int READMODE_FIELD_NUMBER = 1;
      private com.alibaba.wasp.protobuf.generated.MetaProtos.ReadModelProto readMode_;
      public boolean hasReadMode() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public com.alibaba.wasp.protobuf.generated.MetaProtos.ReadModelProto getReadMode() {
        return readMode_;
      }
      
      // required string entityTableName = 2;
      public static final int ENTITYTABLENAME_FIELD_NUMBER = 2;
      private java.lang.Object entityTableName_;
      public boolean hasEntityTableName() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public String getEntityTableName() {
        java.lang.Object ref = entityTableName_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (com.google.protobuf.Internal.isValidUtf8(bs)) {
            entityTableName_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getEntityTableNameBytes() {
        java.lang.Object ref = entityTableName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          entityTableName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // required bytes row = 3;
      public static final int ROW_FIELD_NUMBER = 3;
      private com.google.protobuf.ByteString row_;
      public boolean hasRow() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public com.google.protobuf.ByteString getRow() {
        return row_;
      }
      
      // repeated .ColumnStructProto cols = 4;
      public static final int COLS_FIELD_NUMBER = 4;
      private java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto> cols_;
      public java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto> getColsList() {
        return cols_;
      }
      public java.util.List<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder> 
          getColsOrBuilderList() {
        return cols_;
      }
      public int getColsCount() {
        return cols_.size();
      }
      public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto getCols(int index) {
        return cols_.get(index);
      }
      public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder getColsOrBuilder(
          int index) {
        return cols_.get(index);
      }
      
      // optional bool forUpdate = 5;
      public static final int FORUPDATE_FIELD_NUMBER = 5;
      private boolean forUpdate_;
      public boolean hasForUpdate() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      public boolean getForUpdate() {
        return forUpdate_;
      }
      
      // optional string sessionId = 6;
      public static final int SESSIONID_FIELD_NUMBER = 6;
      private java.lang.Object sessionId_;
      public boolean hasSessionId() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      public String getSessionId() {
        java.lang.Object ref = sessionId_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (com.google.protobuf.Internal.isValidUtf8(bs)) {
            sessionId_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getSessionIdBytes() {
        java.lang.Object ref = sessionId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          sessionId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      private void initFields() {
        readMode_ = com.alibaba.wasp.protobuf.generated.MetaProtos.ReadModelProto.CURRENT;
        entityTableName_ = "";
        row_ = com.google.protobuf.ByteString.EMPTY;
        cols_ = java.util.Collections.emptyList();
        forUpdate_ = false;
        sessionId_ = "";
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized != -1) return isInitialized == 1;
        
        if (!hasEntityTableName()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasRow()) {
          memoizedIsInitialized = 0;
          return false;
        }
        for (int i = 0; i < getColsCount(); i++) {
          if (!getCols(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        memoizedIsInitialized = 1;
        return true;
      }
      
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeEnum(1, readMode_.getNumber());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeBytes(2, getEntityTableNameBytes());
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeBytes(3, row_);
        }
        for (int i = 0; i < cols_.size(); i++) {
          output.writeMessage(4, cols_.get(i));
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeBool(5, forUpdate_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          output.writeBytes(6, getSessionIdBytes());
        }
        getUnknownFields().writeTo(output);
      }
      
      private int memoizedSerializedSize = -1;
      public int getSerializedSize() {
        int size = memoizedSerializedSize;
        if (size != -1) return size;
      
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(1, readMode_.getNumber());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(2, getEntityTableNameBytes());
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(3, row_);
        }
        for (int i = 0; i < cols_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(4, cols_.get(i));
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(5, forUpdate_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(6, getSessionIdBytes());
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSerializedSize = size;
        return size;
      }
      
      private static final long serialVersionUID = 0L;
      @java.lang.Override
      protected java.lang.Object writeReplace()
          throws java.io.ObjectStreamException {
        return super.writeReplace();
      }
      
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.alibaba.wasp.protobuf.generated.MetaProtos.GetActionProto)) {
          return super.equals(obj);
        }
        com.alibaba.wasp.protobuf.generated.MetaProtos.GetActionProto other = (com.alibaba.wasp.protobuf.generated.MetaProtos.GetActionProto) obj;
        
        boolean result = true;
        result = result && (hasReadMode() == other.hasReadMode());
        if (hasReadMode()) {
          result = result &&
              (getReadMode() == other.getReadMode());
        }
        result = result && (hasEntityTableName() == other.hasEntityTableName());
        if (hasEntityTableName()) {
          result = result && getEntityTableName()
              .equals(other.getEntityTableName());
        }
        result = result && (hasRow() == other.hasRow());
        if (hasRow()) {
          result = result && getRow()
              .equals(other.getRow());
        }
        result = result && getColsList()
            .equals(other.getColsList());
        result = result && (hasForUpdate() == other.hasForUpdate());
        if (hasForUpdate()) {
          result = result && (getForUpdate()
              == other.getForUpdate());
        }
        result = result && (hasSessionId() == other.hasSessionId());
        if (hasSessionId()) {
          result = result && getSessionId()
              .equals(other.getSessionId());
        }
        result = result &&
            getUnknownFields().equals(other.getUnknownFields());
        return result;
      }
      
      @java.lang.Override
      public int hashCode() {
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (hasReadMode()) {
          hash = (37 * hash) + READMODE_FIELD_NUMBER;
          hash = (53 * hash) + hashEnum(getReadMode());
        }
        if (hasEntityTableName()) {
          hash = (37 * hash) + ENTITYTABLENAME_FIELD_NUMBER;
          hash = (53 * hash) + getEntityTableName().hashCode();
        }
        if (hasRow()) {
          hash = (37 * hash) + ROW_FIELD_NUMBER;
          hash = (53 * hash) + getRow().hashCode();
        }
        if (getColsCount() > 0) {
          hash = (37 * hash) + COLS_FIELD_NUMBER;
          hash = (53 * hash) + getColsList().hashCode();
        }
        if (hasForUpdate()) {
          hash = (37 * hash) + FORUPDATE_FIELD_NUMBER;
          hash = (53 * hash) + hashBoolean(getForUpdate());
        }
        if (hasSessionId()) {
          hash = (37 * hash) + SESSIONID_FIELD_NUMBER;
          hash = (53 * hash) + getSessionId().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        return hash;
      }
      
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.GetActionProto parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.GetActionProto parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.GetActionProto parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.GetActionProto parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.GetActionProto parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.GetActionProto parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.GetActionProto parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.GetActionProto parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.GetActionProto parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.GetActionProto parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      
      public static Builder newBuilder() { return Builder.create(); }
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder(com.alibaba.wasp.protobuf.generated.MetaProtos.GetActionProto prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() { return newBuilder(this); }
      
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder<Builder>
         implements com.alibaba.wasp.protobuf.generated.MetaProtos.GetActionProtoOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_GetActionProto_descriptor;
        }
        
        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_GetActionProto_fieldAccessorTable;
        }
        
        // Construct using com.alibaba.wasp.protobuf.generated.MetaProtos.GetActionProto.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
        
        private Builder(BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
            getColsFieldBuilder();
          }
        }
        private static Builder create() {
          return new Builder();
        }
        
        public Builder clear() {
          super.clear();
          readMode_ = com.alibaba.wasp.protobuf.generated.MetaProtos.ReadModelProto.CURRENT;
          bitField0_ = (bitField0_ & ~0x00000001);
          entityTableName_ = "";
          bitField0_ = (bitField0_ & ~0x00000002);
          row_ = com.google.protobuf.ByteString.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000004);
          if (colsBuilder_ == null) {
            cols_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            colsBuilder_.clear();
          }
          forUpdate_ = false;
          bitField0_ = (bitField0_ & ~0x00000010);
          sessionId_ = "";
          bitField0_ = (bitField0_ & ~0x00000020);
          return this;
        }
        
        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }
        
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.GetActionProto.getDescriptor();
        }
        
        public com.alibaba.wasp.protobuf.generated.MetaProtos.GetActionProto getDefaultInstanceForType() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.GetActionProto.getDefaultInstance();
        }
        
        public com.alibaba.wasp.protobuf.generated.MetaProtos.GetActionProto build() {
          com.alibaba.wasp.protobuf.generated.MetaProtos.GetActionProto result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
        
        private com.alibaba.wasp.protobuf.generated.MetaProtos.GetActionProto buildParsed()
            throws com.google.protobuf.InvalidProtocolBufferException {
          com.alibaba.wasp.protobuf.generated.MetaProtos.GetActionProto result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(
              result).asInvalidProtocolBufferException();
          }
          return result;
        }
        
        public com.alibaba.wasp.protobuf.generated.MetaProtos.GetActionProto buildPartial() {
          com.alibaba.wasp.protobuf.generated.MetaProtos.GetActionProto result = new com.alibaba.wasp.protobuf.generated.MetaProtos.GetActionProto(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.readMode_ = readMode_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.entityTableName_ = entityTableName_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.row_ = row_;
          if (colsBuilder_ == null) {
            if (((bitField0_ & 0x00000008) == 0x00000008)) {
              cols_ = java.util.Collections.unmodifiableList(cols_);
              bitField0_ = (bitField0_ & ~0x00000008);
            }
            result.cols_ = cols_;
          } else {
            result.cols_ = colsBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
            to_bitField0_ |= 0x00000008;
          }
          result.forUpdate_ = forUpdate_;
          if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
            to_bitField0_ |= 0x00000010;
          }
          result.sessionId_ = sessionId_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
        
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.alibaba.wasp.protobuf.generated.MetaProtos.GetActionProto) {
            return mergeFrom((com.alibaba.wasp.protobuf.generated.MetaProtos.GetActionProto)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        
        public Builder mergeFrom(com.alibaba.wasp.protobuf.generated.MetaProtos.GetActionProto other) {
          if (other == com.alibaba.wasp.protobuf.generated.MetaProtos.GetActionProto.getDefaultInstance()) return this;
          if (other.hasReadMode()) {
            setReadMode(other.getReadMode());
          }
          if (other.hasEntityTableName()) {
            setEntityTableName(other.getEntityTableName());
          }
          if (other.hasRow()) {
            setRow(other.getRow());
          }
          if (colsBuilder_ == null) {
            if (!other.cols_.isEmpty()) {
              if (cols_.isEmpty()) {
                cols_ = other.cols_;
                bitField0_ = (bitField0_ & ~0x00000008);
              } else {
                ensureColsIsMutable();
                cols_.addAll(other.cols_);
              }
              onChanged();
            }
          } else {
            if (!other.cols_.isEmpty()) {
              if (colsBuilder_.isEmpty()) {
                colsBuilder_.dispose();
                colsBuilder_ = null;
                cols_ = other.cols_;
                bitField0_ = (bitField0_ & ~0x00000008);
                colsBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getColsFieldBuilder() : null;
              } else {
                colsBuilder_.addAllMessages(other.cols_);
              }
            }
          }
          if (other.hasForUpdate()) {
            setForUpdate(other.getForUpdate());
          }
          if (other.hasSessionId()) {
            setSessionId(other.getSessionId());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }
        
        public final boolean isInitialized() {
          if (!hasEntityTableName()) {
            
            return false;
          }
          if (!hasRow()) {
            
            return false;
          }
          for (int i = 0; i < getColsCount(); i++) {
            if (!getCols(i).isInitialized()) {
              
              return false;
            }
          }
          return true;
        }
        
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder(
              this.getUnknownFields());
          while (true) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  this.setUnknownFields(unknownFields.build());
                  onChanged();
                  return this;
                }
                break;
              }
              case 8: {
                int rawValue = input.readEnum();
                com.alibaba.wasp.protobuf.generated.MetaProtos.ReadModelProto value = com.alibaba.wasp.protobuf.generated.MetaProtos.ReadModelProto.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(1, rawValue);
                } else {
                  bitField0_ |= 0x00000001;
                  readMode_ = value;
                }
                break;
              }
              case 18: {
                bitField0_ |= 0x00000002;
                entityTableName_ = input.readBytes();
                break;
              }
              case 26: {
                bitField0_ |= 0x00000004;
                row_ = input.readBytes();
                break;
              }
              case 34: {
                com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder subBuilder = com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.newBuilder();
                input.readMessage(subBuilder, extensionRegistry);
                addCols(subBuilder.buildPartial());
                break;
              }
              case 40: {
                bitField0_ |= 0x00000010;
                forUpdate_ = input.readBool();
                break;
              }
              case 50: {
                bitField0_ |= 0x00000020;
                sessionId_ = input.readBytes();
                break;
              }
            }
          }
        }
        
        private int bitField0_;
        
        // optional .ReadModelProto readMode = 1;
        private com.alibaba.wasp.protobuf.generated.MetaProtos.ReadModelProto readMode_ = com.alibaba.wasp.protobuf.generated.MetaProtos.ReadModelProto.CURRENT;
        public boolean hasReadMode() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ReadModelProto getReadMode() {
          return readMode_;
        }
        public Builder setReadMode(com.alibaba.wasp.protobuf.generated.MetaProtos.ReadModelProto value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000001;
          readMode_ = value;
          onChanged();
          return this;
        }
        public Builder clearReadMode() {
          bitField0_ = (bitField0_ & ~0x00000001);
          readMode_ = com.alibaba.wasp.protobuf.generated.MetaProtos.ReadModelProto.CURRENT;
          onChanged();
          return this;
        }
        
        // required string entityTableName = 2;
        private java.lang.Object entityTableName_ = "";
        public boolean hasEntityTableName() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        public String getEntityTableName() {
          java.lang.Object ref = entityTableName_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            entityTableName_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setEntityTableName(String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000002;
          entityTableName_ = value;
          onChanged();
          return this;
        }
        public Builder clearEntityTableName() {
          bitField0_ = (bitField0_ & ~0x00000002);
          entityTableName_ = getDefaultInstance().getEntityTableName();
          onChanged();
          return this;
        }
        void setEntityTableName(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000002;
          entityTableName_ = value;
          onChanged();
        }
        
        // required bytes row = 3;
        private com.google.protobuf.ByteString row_ = com.google.protobuf.ByteString.EMPTY;
        public boolean hasRow() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        public com.google.protobuf.ByteString getRow() {
          return row_;
        }
        public Builder setRow(com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000004;
          row_ = value;
          onChanged();
          return this;
        }
        public Builder clearRow() {
          bitField0_ = (bitField0_ & ~0x00000004);
          row_ = getDefaultInstance().getRow();
          onChanged();
          return this;
        }
        
        // repeated .ColumnStructProto cols = 4;
        private java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto> cols_ =
          java.util.Collections.emptyList();
        private void ensureColsIsMutable() {
          if (!((bitField0_ & 0x00000008) == 0x00000008)) {
            cols_ = new java.util.ArrayList<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto>(cols_);
            bitField0_ |= 0x00000008;
           }
        }
        
        private com.google.protobuf.RepeatedFieldBuilder<
            com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder> colsBuilder_;
        
        public java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto> getColsList() {
          if (colsBuilder_ == null) {
            return java.util.Collections.unmodifiableList(cols_);
          } else {
            return colsBuilder_.getMessageList();
          }
        }
        public int getColsCount() {
          if (colsBuilder_ == null) {
            return cols_.size();
          } else {
            return colsBuilder_.getCount();
          }
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto getCols(int index) {
          if (colsBuilder_ == null) {
            return cols_.get(index);
          } else {
            return colsBuilder_.getMessage(index);
          }
        }
        public Builder setCols(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto value) {
          if (colsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureColsIsMutable();
            cols_.set(index, value);
            onChanged();
          } else {
            colsBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setCols(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder builderForValue) {
          if (colsBuilder_ == null) {
            ensureColsIsMutable();
            cols_.set(index, builderForValue.build());
            onChanged();
          } else {
            colsBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addCols(com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto value) {
          if (colsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureColsIsMutable();
            cols_.add(value);
            onChanged();
          } else {
            colsBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addCols(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto value) {
          if (colsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureColsIsMutable();
            cols_.add(index, value);
            onChanged();
          } else {
            colsBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addCols(
            com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder builderForValue) {
          if (colsBuilder_ == null) {
            ensureColsIsMutable();
            cols_.add(builderForValue.build());
            onChanged();
          } else {
            colsBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addCols(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder builderForValue) {
          if (colsBuilder_ == null) {
            ensureColsIsMutable();
            cols_.add(index, builderForValue.build());
            onChanged();
          } else {
            colsBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllCols(
            java.lang.Iterable<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto> values) {
          if (colsBuilder_ == null) {
            ensureColsIsMutable();
            super.addAll(values, cols_);
            onChanged();
          } else {
            colsBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearCols() {
          if (colsBuilder_ == null) {
            cols_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000008);
            onChanged();
          } else {
            colsBuilder_.clear();
          }
          return this;
        }
        public Builder removeCols(int index) {
          if (colsBuilder_ == null) {
            ensureColsIsMutable();
            cols_.remove(index);
            onChanged();
          } else {
            colsBuilder_.remove(index);
          }
          return this;
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder getColsBuilder(
            int index) {
          return getColsFieldBuilder().getBuilder(index);
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder getColsOrBuilder(
            int index) {
          if (colsBuilder_ == null) {
            return cols_.get(index);  } else {
            return colsBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder> 
             getColsOrBuilderList() {
          if (colsBuilder_ != null) {
            return colsBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(cols_);
          }
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder addColsBuilder() {
          return getColsFieldBuilder().addBuilder(
              com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.getDefaultInstance());
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder addColsBuilder(
            int index) {
          return getColsFieldBuilder().addBuilder(
              index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.getDefaultInstance());
        }
        public java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder> 
             getColsBuilderList() {
          return getColsFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder> 
            getColsFieldBuilder() {
          if (colsBuilder_ == null) {
            colsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder>(
                    cols_,
                    ((bitField0_ & 0x00000008) == 0x00000008),
                    getParentForChildren(),
                    isClean());
            cols_ = null;
          }
          return colsBuilder_;
        }
        
        // optional bool forUpdate = 5;
        private boolean forUpdate_ ;
        public boolean hasForUpdate() {
          return ((bitField0_ & 0x00000010) == 0x00000010);
        }
        public boolean getForUpdate() {
          return forUpdate_;
        }
        public Builder setForUpdate(boolean value) {
          bitField0_ |= 0x00000010;
          forUpdate_ = value;
          onChanged();
          return this;
        }
        public Builder clearForUpdate() {
          bitField0_ = (bitField0_ & ~0x00000010);
          forUpdate_ = false;
          onChanged();
          return this;
        }
        
        // optional string sessionId = 6;
        private java.lang.Object sessionId_ = "";
        public boolean hasSessionId() {
          return ((bitField0_ & 0x00000020) == 0x00000020);
        }
        public String getSessionId() {
          java.lang.Object ref = sessionId_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            sessionId_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setSessionId(String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000020;
          sessionId_ = value;
          onChanged();
          return this;
        }
        public Builder clearSessionId() {
          bitField0_ = (bitField0_ & ~0x00000020);
          sessionId_ = getDefaultInstance().getSessionId();
          onChanged();
          return this;
        }
        void setSessionId(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000020;
          sessionId_ = value;
          onChanged();
        }
        
        // @@protoc_insertion_point(builder_scope:GetActionProto)
      }
      
      static {
        defaultInstance = new GetActionProto(true);
        defaultInstance.initFields();
      }
      
      // @@protoc_insertion_point(class_scope:GetActionProto)
    }
    
    public interface ScanActionProtoOrBuilder
        extends com.google.protobuf.MessageOrBuilder {
      
      // optional .ReadModelProto readMode = 1;
      boolean hasReadMode();
      com.alibaba.wasp.protobuf.generated.MetaProtos.ReadModelProto getReadMode();
      
      // optional string indexTableName = 2;
      boolean hasIndexTableName();
      String getIndexTableName();
      
      // required string entityTableName = 3;
      boolean hasEntityTableName();
      String getEntityTableName();
      
      // optional bytes startKey = 4;
      boolean hasStartKey();
      com.google.protobuf.ByteString getStartKey();
      
      // optional bytes endKey = 5;
      boolean hasEndKey();
      com.google.protobuf.ByteString getEndKey();
      
      // optional uint32 limit = 6;
      boolean hasLimit();
      int getLimit();
      
      // repeated .ColumnStructProto entityCols = 7;
      java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto> 
          getEntityColsList();
      com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto getEntityCols(int index);
      int getEntityColsCount();
      java.util.List<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder> 
          getEntityColsOrBuilderList();
      com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder getEntityColsOrBuilder(
          int index);
      
      // repeated .ColumnStructProto indexCols = 8;
      java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto> 
          getIndexColsList();
      com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto getIndexCols(int index);
      int getIndexColsCount();
      java.util.List<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder> 
          getIndexColsOrBuilderList();
      com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder getIndexColsOrBuilder(
          int index);
      
      // optional uint32 batch = 9;
      boolean hasBatch();
      int getBatch();
      
      // repeated .ColumnStructProto notIndexConditionCols = 10;
      java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto> 
          getNotIndexConditionColsList();
      com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto getNotIndexConditionCols(int index);
      int getNotIndexConditionColsCount();
      java.util.List<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder> 
          getNotIndexConditionColsOrBuilderList();
      com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder getNotIndexConditionColsOrBuilder(
          int index);
    }
    public static final class ScanActionProto extends
        com.google.protobuf.GeneratedMessage
        implements ScanActionProtoOrBuilder {
      // Use ScanActionProto.newBuilder() to construct.
      private ScanActionProto(Builder builder) {
        super(builder);
      }
      private ScanActionProto(boolean noInit) {}
      
      private static final ScanActionProto defaultInstance;
      public static ScanActionProto getDefaultInstance() {
        return defaultInstance;
      }
      
      public ScanActionProto getDefaultInstanceForType() {
        return defaultInstance;
      }
      
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_ScanActionProto_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_ScanActionProto_fieldAccessorTable;
      }
      
      private int bitField0_;
      // optional .ReadModelProto readMode = 1;
      public static final int READMODE_FIELD_NUMBER = 1;
      private com.alibaba.wasp.protobuf.generated.MetaProtos.ReadModelProto readMode_;
      public boolean hasReadMode() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public com.alibaba.wasp.protobuf.generated.MetaProtos.ReadModelProto getReadMode() {
        return readMode_;
      }
      
      // optional string indexTableName = 2;
      public static final int INDEXTABLENAME_FIELD_NUMBER = 2;
      private java.lang.Object indexTableName_;
      public boolean hasIndexTableName() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public String getIndexTableName() {
        java.lang.Object ref = indexTableName_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (com.google.protobuf.Internal.isValidUtf8(bs)) {
            indexTableName_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getIndexTableNameBytes() {
        java.lang.Object ref = indexTableName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          indexTableName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // required string entityTableName = 3;
      public static final int ENTITYTABLENAME_FIELD_NUMBER = 3;
      private java.lang.Object entityTableName_;
      public boolean hasEntityTableName() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public String getEntityTableName() {
        java.lang.Object ref = entityTableName_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (com.google.protobuf.Internal.isValidUtf8(bs)) {
            entityTableName_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getEntityTableNameBytes() {
        java.lang.Object ref = entityTableName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          entityTableName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // optional bytes startKey = 4;
      public static final int STARTKEY_FIELD_NUMBER = 4;
      private com.google.protobuf.ByteString startKey_;
      public boolean hasStartKey() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      public com.google.protobuf.ByteString getStartKey() {
        return startKey_;
      }
      
      // optional bytes endKey = 5;
      public static final int ENDKEY_FIELD_NUMBER = 5;
      private com.google.protobuf.ByteString endKey_;
      public boolean hasEndKey() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      public com.google.protobuf.ByteString getEndKey() {
        return endKey_;
      }
      
      // optional uint32 limit = 6;
      public static final int LIMIT_FIELD_NUMBER = 6;
      private int limit_;
      public boolean hasLimit() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      public int getLimit() {
        return limit_;
      }
      
      // repeated .ColumnStructProto entityCols = 7;
      public static final int ENTITYCOLS_FIELD_NUMBER = 7;
      private java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto> entityCols_;
      public java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto> getEntityColsList() {
        return entityCols_;
      }
      public java.util.List<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder> 
          getEntityColsOrBuilderList() {
        return entityCols_;
      }
      public int getEntityColsCount() {
        return entityCols_.size();
      }
      public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto getEntityCols(int index) {
        return entityCols_.get(index);
      }
      public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder getEntityColsOrBuilder(
          int index) {
        return entityCols_.get(index);
      }
      
      // repeated .ColumnStructProto indexCols = 8;
      public static final int INDEXCOLS_FIELD_NUMBER = 8;
      private java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto> indexCols_;
      public java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto> getIndexColsList() {
        return indexCols_;
      }
      public java.util.List<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder> 
          getIndexColsOrBuilderList() {
        return indexCols_;
      }
      public int getIndexColsCount() {
        return indexCols_.size();
      }
      public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto getIndexCols(int index) {
        return indexCols_.get(index);
      }
      public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder getIndexColsOrBuilder(
          int index) {
        return indexCols_.get(index);
      }
      
      // optional uint32 batch = 9;
      public static final int BATCH_FIELD_NUMBER = 9;
      private int batch_;
      public boolean hasBatch() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      public int getBatch() {
        return batch_;
      }
      
      // repeated .ColumnStructProto notIndexConditionCols = 10;
      public static final int NOTINDEXCONDITIONCOLS_FIELD_NUMBER = 10;
      private java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto> notIndexConditionCols_;
      public java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto> getNotIndexConditionColsList() {
        return notIndexConditionCols_;
      }
      public java.util.List<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder> 
          getNotIndexConditionColsOrBuilderList() {
        return notIndexConditionCols_;
      }
      public int getNotIndexConditionColsCount() {
        return notIndexConditionCols_.size();
      }
      public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto getNotIndexConditionCols(int index) {
        return notIndexConditionCols_.get(index);
      }
      public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder getNotIndexConditionColsOrBuilder(
          int index) {
        return notIndexConditionCols_.get(index);
      }
      
      private void initFields() {
        readMode_ = com.alibaba.wasp.protobuf.generated.MetaProtos.ReadModelProto.CURRENT;
        indexTableName_ = "";
        entityTableName_ = "";
        startKey_ = com.google.protobuf.ByteString.EMPTY;
        endKey_ = com.google.protobuf.ByteString.EMPTY;
        limit_ = 0;
        entityCols_ = java.util.Collections.emptyList();
        indexCols_ = java.util.Collections.emptyList();
        batch_ = 0;
        notIndexConditionCols_ = java.util.Collections.emptyList();
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized != -1) return isInitialized == 1;
        
        if (!hasEntityTableName()) {
          memoizedIsInitialized = 0;
          return false;
        }
        for (int i = 0; i < getEntityColsCount(); i++) {
          if (!getEntityCols(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        for (int i = 0; i < getIndexColsCount(); i++) {
          if (!getIndexCols(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        for (int i = 0; i < getNotIndexConditionColsCount(); i++) {
          if (!getNotIndexConditionCols(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        memoizedIsInitialized = 1;
        return true;
      }
      
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeEnum(1, readMode_.getNumber());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeBytes(2, getIndexTableNameBytes());
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeBytes(3, getEntityTableNameBytes());
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeBytes(4, startKey_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          output.writeBytes(5, endKey_);
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          output.writeUInt32(6, limit_);
        }
        for (int i = 0; i < entityCols_.size(); i++) {
          output.writeMessage(7, entityCols_.get(i));
        }
        for (int i = 0; i < indexCols_.size(); i++) {
          output.writeMessage(8, indexCols_.get(i));
        }
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          output.writeUInt32(9, batch_);
        }
        for (int i = 0; i < notIndexConditionCols_.size(); i++) {
          output.writeMessage(10, notIndexConditionCols_.get(i));
        }
        getUnknownFields().writeTo(output);
      }
      
      private int memoizedSerializedSize = -1;
      public int getSerializedSize() {
        int size = memoizedSerializedSize;
        if (size != -1) return size;
      
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(1, readMode_.getNumber());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(2, getIndexTableNameBytes());
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(3, getEntityTableNameBytes());
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(4, startKey_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(5, endKey_);
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(6, limit_);
        }
        for (int i = 0; i < entityCols_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(7, entityCols_.get(i));
        }
        for (int i = 0; i < indexCols_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(8, indexCols_.get(i));
        }
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(9, batch_);
        }
        for (int i = 0; i < notIndexConditionCols_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(10, notIndexConditionCols_.get(i));
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSerializedSize = size;
        return size;
      }
      
      private static final long serialVersionUID = 0L;
      @java.lang.Override
      protected java.lang.Object writeReplace()
          throws java.io.ObjectStreamException {
        return super.writeReplace();
      }
      
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.alibaba.wasp.protobuf.generated.MetaProtos.ScanActionProto)) {
          return super.equals(obj);
        }
        com.alibaba.wasp.protobuf.generated.MetaProtos.ScanActionProto other = (com.alibaba.wasp.protobuf.generated.MetaProtos.ScanActionProto) obj;
        
        boolean result = true;
        result = result && (hasReadMode() == other.hasReadMode());
        if (hasReadMode()) {
          result = result &&
              (getReadMode() == other.getReadMode());
        }
        result = result && (hasIndexTableName() == other.hasIndexTableName());
        if (hasIndexTableName()) {
          result = result && getIndexTableName()
              .equals(other.getIndexTableName());
        }
        result = result && (hasEntityTableName() == other.hasEntityTableName());
        if (hasEntityTableName()) {
          result = result && getEntityTableName()
              .equals(other.getEntityTableName());
        }
        result = result && (hasStartKey() == other.hasStartKey());
        if (hasStartKey()) {
          result = result && getStartKey()
              .equals(other.getStartKey());
        }
        result = result && (hasEndKey() == other.hasEndKey());
        if (hasEndKey()) {
          result = result && getEndKey()
              .equals(other.getEndKey());
        }
        result = result && (hasLimit() == other.hasLimit());
        if (hasLimit()) {
          result = result && (getLimit()
              == other.getLimit());
        }
        result = result && getEntityColsList()
            .equals(other.getEntityColsList());
        result = result && getIndexColsList()
            .equals(other.getIndexColsList());
        result = result && (hasBatch() == other.hasBatch());
        if (hasBatch()) {
          result = result && (getBatch()
              == other.getBatch());
        }
        result = result && getNotIndexConditionColsList()
            .equals(other.getNotIndexConditionColsList());
        result = result &&
            getUnknownFields().equals(other.getUnknownFields());
        return result;
      }
      
      @java.lang.Override
      public int hashCode() {
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (hasReadMode()) {
          hash = (37 * hash) + READMODE_FIELD_NUMBER;
          hash = (53 * hash) + hashEnum(getReadMode());
        }
        if (hasIndexTableName()) {
          hash = (37 * hash) + INDEXTABLENAME_FIELD_NUMBER;
          hash = (53 * hash) + getIndexTableName().hashCode();
        }
        if (hasEntityTableName()) {
          hash = (37 * hash) + ENTITYTABLENAME_FIELD_NUMBER;
          hash = (53 * hash) + getEntityTableName().hashCode();
        }
        if (hasStartKey()) {
          hash = (37 * hash) + STARTKEY_FIELD_NUMBER;
          hash = (53 * hash) + getStartKey().hashCode();
        }
        if (hasEndKey()) {
          hash = (37 * hash) + ENDKEY_FIELD_NUMBER;
          hash = (53 * hash) + getEndKey().hashCode();
        }
        if (hasLimit()) {
          hash = (37 * hash) + LIMIT_FIELD_NUMBER;
          hash = (53 * hash) + getLimit();
        }
        if (getEntityColsCount() > 0) {
          hash = (37 * hash) + ENTITYCOLS_FIELD_NUMBER;
          hash = (53 * hash) + getEntityColsList().hashCode();
        }
        if (getIndexColsCount() > 0) {
          hash = (37 * hash) + INDEXCOLS_FIELD_NUMBER;
          hash = (53 * hash) + getIndexColsList().hashCode();
        }
        if (hasBatch()) {
          hash = (37 * hash) + BATCH_FIELD_NUMBER;
          hash = (53 * hash) + getBatch();
        }
        if (getNotIndexConditionColsCount() > 0) {
          hash = (37 * hash) + NOTINDEXCONDITIONCOLS_FIELD_NUMBER;
          hash = (53 * hash) + getNotIndexConditionColsList().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        return hash;
      }
      
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.ScanActionProto parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.ScanActionProto parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.ScanActionProto parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.ScanActionProto parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.ScanActionProto parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.ScanActionProto parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.ScanActionProto parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.ScanActionProto parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.ScanActionProto parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.ScanActionProto parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      
      public static Builder newBuilder() { return Builder.create(); }
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder(com.alibaba.wasp.protobuf.generated.MetaProtos.ScanActionProto prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() { return newBuilder(this); }
      
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder<Builder>
         implements com.alibaba.wasp.protobuf.generated.MetaProtos.ScanActionProtoOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_ScanActionProto_descriptor;
        }
        
        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_ScanActionProto_fieldAccessorTable;
        }
        
        // Construct using com.alibaba.wasp.protobuf.generated.MetaProtos.ScanActionProto.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
        
        private Builder(BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
            getEntityColsFieldBuilder();
            getIndexColsFieldBuilder();
            getNotIndexConditionColsFieldBuilder();
          }
        }
        private static Builder create() {
          return new Builder();
        }
        
        public Builder clear() {
          super.clear();
          readMode_ = com.alibaba.wasp.protobuf.generated.MetaProtos.ReadModelProto.CURRENT;
          bitField0_ = (bitField0_ & ~0x00000001);
          indexTableName_ = "";
          bitField0_ = (bitField0_ & ~0x00000002);
          entityTableName_ = "";
          bitField0_ = (bitField0_ & ~0x00000004);
          startKey_ = com.google.protobuf.ByteString.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000008);
          endKey_ = com.google.protobuf.ByteString.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000010);
          limit_ = 0;
          bitField0_ = (bitField0_ & ~0x00000020);
          if (entityColsBuilder_ == null) {
            entityCols_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000040);
          } else {
            entityColsBuilder_.clear();
          }
          if (indexColsBuilder_ == null) {
            indexCols_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000080);
          } else {
            indexColsBuilder_.clear();
          }
          batch_ = 0;
          bitField0_ = (bitField0_ & ~0x00000100);
          if (notIndexConditionColsBuilder_ == null) {
            notIndexConditionCols_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000200);
          } else {
            notIndexConditionColsBuilder_.clear();
          }
          return this;
        }
        
        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }
        
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.ScanActionProto.getDescriptor();
        }
        
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ScanActionProto getDefaultInstanceForType() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.ScanActionProto.getDefaultInstance();
        }
        
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ScanActionProto build() {
          com.alibaba.wasp.protobuf.generated.MetaProtos.ScanActionProto result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
        
        private com.alibaba.wasp.protobuf.generated.MetaProtos.ScanActionProto buildParsed()
            throws com.google.protobuf.InvalidProtocolBufferException {
          com.alibaba.wasp.protobuf.generated.MetaProtos.ScanActionProto result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(
              result).asInvalidProtocolBufferException();
          }
          return result;
        }
        
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ScanActionProto buildPartial() {
          com.alibaba.wasp.protobuf.generated.MetaProtos.ScanActionProto result = new com.alibaba.wasp.protobuf.generated.MetaProtos.ScanActionProto(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.readMode_ = readMode_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.indexTableName_ = indexTableName_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.entityTableName_ = entityTableName_;
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000008;
          }
          result.startKey_ = startKey_;
          if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
            to_bitField0_ |= 0x00000010;
          }
          result.endKey_ = endKey_;
          if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
            to_bitField0_ |= 0x00000020;
          }
          result.limit_ = limit_;
          if (entityColsBuilder_ == null) {
            if (((bitField0_ & 0x00000040) == 0x00000040)) {
              entityCols_ = java.util.Collections.unmodifiableList(entityCols_);
              bitField0_ = (bitField0_ & ~0x00000040);
            }
            result.entityCols_ = entityCols_;
          } else {
            result.entityCols_ = entityColsBuilder_.build();
          }
          if (indexColsBuilder_ == null) {
            if (((bitField0_ & 0x00000080) == 0x00000080)) {
              indexCols_ = java.util.Collections.unmodifiableList(indexCols_);
              bitField0_ = (bitField0_ & ~0x00000080);
            }
            result.indexCols_ = indexCols_;
          } else {
            result.indexCols_ = indexColsBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
            to_bitField0_ |= 0x00000040;
          }
          result.batch_ = batch_;
          if (notIndexConditionColsBuilder_ == null) {
            if (((bitField0_ & 0x00000200) == 0x00000200)) {
              notIndexConditionCols_ = java.util.Collections.unmodifiableList(notIndexConditionCols_);
              bitField0_ = (bitField0_ & ~0x00000200);
            }
            result.notIndexConditionCols_ = notIndexConditionCols_;
          } else {
            result.notIndexConditionCols_ = notIndexConditionColsBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
        
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.alibaba.wasp.protobuf.generated.MetaProtos.ScanActionProto) {
            return mergeFrom((com.alibaba.wasp.protobuf.generated.MetaProtos.ScanActionProto)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        
        public Builder mergeFrom(com.alibaba.wasp.protobuf.generated.MetaProtos.ScanActionProto other) {
          if (other == com.alibaba.wasp.protobuf.generated.MetaProtos.ScanActionProto.getDefaultInstance()) return this;
          if (other.hasReadMode()) {
            setReadMode(other.getReadMode());
          }
          if (other.hasIndexTableName()) {
            setIndexTableName(other.getIndexTableName());
          }
          if (other.hasEntityTableName()) {
            setEntityTableName(other.getEntityTableName());
          }
          if (other.hasStartKey()) {
            setStartKey(other.getStartKey());
          }
          if (other.hasEndKey()) {
            setEndKey(other.getEndKey());
          }
          if (other.hasLimit()) {
            setLimit(other.getLimit());
          }
          if (entityColsBuilder_ == null) {
            if (!other.entityCols_.isEmpty()) {
              if (entityCols_.isEmpty()) {
                entityCols_ = other.entityCols_;
                bitField0_ = (bitField0_ & ~0x00000040);
              } else {
                ensureEntityColsIsMutable();
                entityCols_.addAll(other.entityCols_);
              }
              onChanged();
            }
          } else {
            if (!other.entityCols_.isEmpty()) {
              if (entityColsBuilder_.isEmpty()) {
                entityColsBuilder_.dispose();
                entityColsBuilder_ = null;
                entityCols_ = other.entityCols_;
                bitField0_ = (bitField0_ & ~0x00000040);
                entityColsBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getEntityColsFieldBuilder() : null;
              } else {
                entityColsBuilder_.addAllMessages(other.entityCols_);
              }
            }
          }
          if (indexColsBuilder_ == null) {
            if (!other.indexCols_.isEmpty()) {
              if (indexCols_.isEmpty()) {
                indexCols_ = other.indexCols_;
                bitField0_ = (bitField0_ & ~0x00000080);
              } else {
                ensureIndexColsIsMutable();
                indexCols_.addAll(other.indexCols_);
              }
              onChanged();
            }
          } else {
            if (!other.indexCols_.isEmpty()) {
              if (indexColsBuilder_.isEmpty()) {
                indexColsBuilder_.dispose();
                indexColsBuilder_ = null;
                indexCols_ = other.indexCols_;
                bitField0_ = (bitField0_ & ~0x00000080);
                indexColsBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getIndexColsFieldBuilder() : null;
              } else {
                indexColsBuilder_.addAllMessages(other.indexCols_);
              }
            }
          }
          if (other.hasBatch()) {
            setBatch(other.getBatch());
          }
          if (notIndexConditionColsBuilder_ == null) {
            if (!other.notIndexConditionCols_.isEmpty()) {
              if (notIndexConditionCols_.isEmpty()) {
                notIndexConditionCols_ = other.notIndexConditionCols_;
                bitField0_ = (bitField0_ & ~0x00000200);
              } else {
                ensureNotIndexConditionColsIsMutable();
                notIndexConditionCols_.addAll(other.notIndexConditionCols_);
              }
              onChanged();
            }
          } else {
            if (!other.notIndexConditionCols_.isEmpty()) {
              if (notIndexConditionColsBuilder_.isEmpty()) {
                notIndexConditionColsBuilder_.dispose();
                notIndexConditionColsBuilder_ = null;
                notIndexConditionCols_ = other.notIndexConditionCols_;
                bitField0_ = (bitField0_ & ~0x00000200);
                notIndexConditionColsBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getNotIndexConditionColsFieldBuilder() : null;
              } else {
                notIndexConditionColsBuilder_.addAllMessages(other.notIndexConditionCols_);
              }
            }
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }
        
        public final boolean isInitialized() {
          if (!hasEntityTableName()) {
            
            return false;
          }
          for (int i = 0; i < getEntityColsCount(); i++) {
            if (!getEntityCols(i).isInitialized()) {
              
              return false;
            }
          }
          for (int i = 0; i < getIndexColsCount(); i++) {
            if (!getIndexCols(i).isInitialized()) {
              
              return false;
            }
          }
          for (int i = 0; i < getNotIndexConditionColsCount(); i++) {
            if (!getNotIndexConditionCols(i).isInitialized()) {
              
              return false;
            }
          }
          return true;
        }
        
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder(
              this.getUnknownFields());
          while (true) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  this.setUnknownFields(unknownFields.build());
                  onChanged();
                  return this;
                }
                break;
              }
              case 8: {
                int rawValue = input.readEnum();
                com.alibaba.wasp.protobuf.generated.MetaProtos.ReadModelProto value = com.alibaba.wasp.protobuf.generated.MetaProtos.ReadModelProto.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(1, rawValue);
                } else {
                  bitField0_ |= 0x00000001;
                  readMode_ = value;
                }
                break;
              }
              case 18: {
                bitField0_ |= 0x00000002;
                indexTableName_ = input.readBytes();
                break;
              }
              case 26: {
                bitField0_ |= 0x00000004;
                entityTableName_ = input.readBytes();
                break;
              }
              case 34: {
                bitField0_ |= 0x00000008;
                startKey_ = input.readBytes();
                break;
              }
              case 42: {
                bitField0_ |= 0x00000010;
                endKey_ = input.readBytes();
                break;
              }
              case 48: {
                bitField0_ |= 0x00000020;
                limit_ = input.readUInt32();
                break;
              }
              case 58: {
                com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder subBuilder = com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.newBuilder();
                input.readMessage(subBuilder, extensionRegistry);
                addEntityCols(subBuilder.buildPartial());
                break;
              }
              case 66: {
                com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder subBuilder = com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.newBuilder();
                input.readMessage(subBuilder, extensionRegistry);
                addIndexCols(subBuilder.buildPartial());
                break;
              }
              case 72: {
                bitField0_ |= 0x00000100;
                batch_ = input.readUInt32();
                break;
              }
              case 82: {
                com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder subBuilder = com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.newBuilder();
                input.readMessage(subBuilder, extensionRegistry);
                addNotIndexConditionCols(subBuilder.buildPartial());
                break;
              }
            }
          }
        }
        
        private int bitField0_;
        
        // optional .ReadModelProto readMode = 1;
        private com.alibaba.wasp.protobuf.generated.MetaProtos.ReadModelProto readMode_ = com.alibaba.wasp.protobuf.generated.MetaProtos.ReadModelProto.CURRENT;
        public boolean hasReadMode() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ReadModelProto getReadMode() {
          return readMode_;
        }
        public Builder setReadMode(com.alibaba.wasp.protobuf.generated.MetaProtos.ReadModelProto value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000001;
          readMode_ = value;
          onChanged();
          return this;
        }
        public Builder clearReadMode() {
          bitField0_ = (bitField0_ & ~0x00000001);
          readMode_ = com.alibaba.wasp.protobuf.generated.MetaProtos.ReadModelProto.CURRENT;
          onChanged();
          return this;
        }
        
        // optional string indexTableName = 2;
        private java.lang.Object indexTableName_ = "";
        public boolean hasIndexTableName() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        public String getIndexTableName() {
          java.lang.Object ref = indexTableName_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            indexTableName_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setIndexTableName(String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000002;
          indexTableName_ = value;
          onChanged();
          return this;
        }
        public Builder clearIndexTableName() {
          bitField0_ = (bitField0_ & ~0x00000002);
          indexTableName_ = getDefaultInstance().getIndexTableName();
          onChanged();
          return this;
        }
        void setIndexTableName(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000002;
          indexTableName_ = value;
          onChanged();
        }
        
        // required string entityTableName = 3;
        private java.lang.Object entityTableName_ = "";
        public boolean hasEntityTableName() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        public String getEntityTableName() {
          java.lang.Object ref = entityTableName_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            entityTableName_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setEntityTableName(String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000004;
          entityTableName_ = value;
          onChanged();
          return this;
        }
        public Builder clearEntityTableName() {
          bitField0_ = (bitField0_ & ~0x00000004);
          entityTableName_ = getDefaultInstance().getEntityTableName();
          onChanged();
          return this;
        }
        void setEntityTableName(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000004;
          entityTableName_ = value;
          onChanged();
        }
        
        // optional bytes startKey = 4;
        private com.google.protobuf.ByteString startKey_ = com.google.protobuf.ByteString.EMPTY;
        public boolean hasStartKey() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        public com.google.protobuf.ByteString getStartKey() {
          return startKey_;
        }
        public Builder setStartKey(com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000008;
          startKey_ = value;
          onChanged();
          return this;
        }
        public Builder clearStartKey() {
          bitField0_ = (bitField0_ & ~0x00000008);
          startKey_ = getDefaultInstance().getStartKey();
          onChanged();
          return this;
        }
        
        // optional bytes endKey = 5;
        private com.google.protobuf.ByteString endKey_ = com.google.protobuf.ByteString.EMPTY;
        public boolean hasEndKey() {
          return ((bitField0_ & 0x00000010) == 0x00000010);
        }
        public com.google.protobuf.ByteString getEndKey() {
          return endKey_;
        }
        public Builder setEndKey(com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000010;
          endKey_ = value;
          onChanged();
          return this;
        }
        public Builder clearEndKey() {
          bitField0_ = (bitField0_ & ~0x00000010);
          endKey_ = getDefaultInstance().getEndKey();
          onChanged();
          return this;
        }
        
        // optional uint32 limit = 6;
        private int limit_ ;
        public boolean hasLimit() {
          return ((bitField0_ & 0x00000020) == 0x00000020);
        }
        public int getLimit() {
          return limit_;
        }
        public Builder setLimit(int value) {
          bitField0_ |= 0x00000020;
          limit_ = value;
          onChanged();
          return this;
        }
        public Builder clearLimit() {
          bitField0_ = (bitField0_ & ~0x00000020);
          limit_ = 0;
          onChanged();
          return this;
        }
        
        // repeated .ColumnStructProto entityCols = 7;
        private java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto> entityCols_ =
          java.util.Collections.emptyList();
        private void ensureEntityColsIsMutable() {
          if (!((bitField0_ & 0x00000040) == 0x00000040)) {
            entityCols_ = new java.util.ArrayList<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto>(entityCols_);
            bitField0_ |= 0x00000040;
           }
        }
        
        private com.google.protobuf.RepeatedFieldBuilder<
            com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder> entityColsBuilder_;
        
        public java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto> getEntityColsList() {
          if (entityColsBuilder_ == null) {
            return java.util.Collections.unmodifiableList(entityCols_);
          } else {
            return entityColsBuilder_.getMessageList();
          }
        }
        public int getEntityColsCount() {
          if (entityColsBuilder_ == null) {
            return entityCols_.size();
          } else {
            return entityColsBuilder_.getCount();
          }
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto getEntityCols(int index) {
          if (entityColsBuilder_ == null) {
            return entityCols_.get(index);
          } else {
            return entityColsBuilder_.getMessage(index);
          }
        }
        public Builder setEntityCols(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto value) {
          if (entityColsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureEntityColsIsMutable();
            entityCols_.set(index, value);
            onChanged();
          } else {
            entityColsBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setEntityCols(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder builderForValue) {
          if (entityColsBuilder_ == null) {
            ensureEntityColsIsMutable();
            entityCols_.set(index, builderForValue.build());
            onChanged();
          } else {
            entityColsBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addEntityCols(com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto value) {
          if (entityColsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureEntityColsIsMutable();
            entityCols_.add(value);
            onChanged();
          } else {
            entityColsBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addEntityCols(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto value) {
          if (entityColsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureEntityColsIsMutable();
            entityCols_.add(index, value);
            onChanged();
          } else {
            entityColsBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addEntityCols(
            com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder builderForValue) {
          if (entityColsBuilder_ == null) {
            ensureEntityColsIsMutable();
            entityCols_.add(builderForValue.build());
            onChanged();
          } else {
            entityColsBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addEntityCols(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder builderForValue) {
          if (entityColsBuilder_ == null) {
            ensureEntityColsIsMutable();
            entityCols_.add(index, builderForValue.build());
            onChanged();
          } else {
            entityColsBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllEntityCols(
            java.lang.Iterable<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto> values) {
          if (entityColsBuilder_ == null) {
            ensureEntityColsIsMutable();
            super.addAll(values, entityCols_);
            onChanged();
          } else {
            entityColsBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearEntityCols() {
          if (entityColsBuilder_ == null) {
            entityCols_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000040);
            onChanged();
          } else {
            entityColsBuilder_.clear();
          }
          return this;
        }
        public Builder removeEntityCols(int index) {
          if (entityColsBuilder_ == null) {
            ensureEntityColsIsMutable();
            entityCols_.remove(index);
            onChanged();
          } else {
            entityColsBuilder_.remove(index);
          }
          return this;
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder getEntityColsBuilder(
            int index) {
          return getEntityColsFieldBuilder().getBuilder(index);
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder getEntityColsOrBuilder(
            int index) {
          if (entityColsBuilder_ == null) {
            return entityCols_.get(index);  } else {
            return entityColsBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder> 
             getEntityColsOrBuilderList() {
          if (entityColsBuilder_ != null) {
            return entityColsBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(entityCols_);
          }
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder addEntityColsBuilder() {
          return getEntityColsFieldBuilder().addBuilder(
              com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.getDefaultInstance());
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder addEntityColsBuilder(
            int index) {
          return getEntityColsFieldBuilder().addBuilder(
              index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.getDefaultInstance());
        }
        public java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder> 
             getEntityColsBuilderList() {
          return getEntityColsFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder> 
            getEntityColsFieldBuilder() {
          if (entityColsBuilder_ == null) {
            entityColsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder>(
                    entityCols_,
                    ((bitField0_ & 0x00000040) == 0x00000040),
                    getParentForChildren(),
                    isClean());
            entityCols_ = null;
          }
          return entityColsBuilder_;
        }
        
        // repeated .ColumnStructProto indexCols = 8;
        private java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto> indexCols_ =
          java.util.Collections.emptyList();
        private void ensureIndexColsIsMutable() {
          if (!((bitField0_ & 0x00000080) == 0x00000080)) {
            indexCols_ = new java.util.ArrayList<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto>(indexCols_);
            bitField0_ |= 0x00000080;
           }
        }
        
        private com.google.protobuf.RepeatedFieldBuilder<
            com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder> indexColsBuilder_;
        
        public java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto> getIndexColsList() {
          if (indexColsBuilder_ == null) {
            return java.util.Collections.unmodifiableList(indexCols_);
          } else {
            return indexColsBuilder_.getMessageList();
          }
        }
        public int getIndexColsCount() {
          if (indexColsBuilder_ == null) {
            return indexCols_.size();
          } else {
            return indexColsBuilder_.getCount();
          }
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto getIndexCols(int index) {
          if (indexColsBuilder_ == null) {
            return indexCols_.get(index);
          } else {
            return indexColsBuilder_.getMessage(index);
          }
        }
        public Builder setIndexCols(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto value) {
          if (indexColsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureIndexColsIsMutable();
            indexCols_.set(index, value);
            onChanged();
          } else {
            indexColsBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setIndexCols(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder builderForValue) {
          if (indexColsBuilder_ == null) {
            ensureIndexColsIsMutable();
            indexCols_.set(index, builderForValue.build());
            onChanged();
          } else {
            indexColsBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addIndexCols(com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto value) {
          if (indexColsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureIndexColsIsMutable();
            indexCols_.add(value);
            onChanged();
          } else {
            indexColsBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addIndexCols(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto value) {
          if (indexColsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureIndexColsIsMutable();
            indexCols_.add(index, value);
            onChanged();
          } else {
            indexColsBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addIndexCols(
            com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder builderForValue) {
          if (indexColsBuilder_ == null) {
            ensureIndexColsIsMutable();
            indexCols_.add(builderForValue.build());
            onChanged();
          } else {
            indexColsBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addIndexCols(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder builderForValue) {
          if (indexColsBuilder_ == null) {
            ensureIndexColsIsMutable();
            indexCols_.add(index, builderForValue.build());
            onChanged();
          } else {
            indexColsBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllIndexCols(
            java.lang.Iterable<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto> values) {
          if (indexColsBuilder_ == null) {
            ensureIndexColsIsMutable();
            super.addAll(values, indexCols_);
            onChanged();
          } else {
            indexColsBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearIndexCols() {
          if (indexColsBuilder_ == null) {
            indexCols_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000080);
            onChanged();
          } else {
            indexColsBuilder_.clear();
          }
          return this;
        }
        public Builder removeIndexCols(int index) {
          if (indexColsBuilder_ == null) {
            ensureIndexColsIsMutable();
            indexCols_.remove(index);
            onChanged();
          } else {
            indexColsBuilder_.remove(index);
          }
          return this;
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder getIndexColsBuilder(
            int index) {
          return getIndexColsFieldBuilder().getBuilder(index);
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder getIndexColsOrBuilder(
            int index) {
          if (indexColsBuilder_ == null) {
            return indexCols_.get(index);  } else {
            return indexColsBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder> 
             getIndexColsOrBuilderList() {
          if (indexColsBuilder_ != null) {
            return indexColsBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(indexCols_);
          }
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder addIndexColsBuilder() {
          return getIndexColsFieldBuilder().addBuilder(
              com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.getDefaultInstance());
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder addIndexColsBuilder(
            int index) {
          return getIndexColsFieldBuilder().addBuilder(
              index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.getDefaultInstance());
        }
        public java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder> 
             getIndexColsBuilderList() {
          return getIndexColsFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder> 
            getIndexColsFieldBuilder() {
          if (indexColsBuilder_ == null) {
            indexColsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder>(
                    indexCols_,
                    ((bitField0_ & 0x00000080) == 0x00000080),
                    getParentForChildren(),
                    isClean());
            indexCols_ = null;
          }
          return indexColsBuilder_;
        }
        
        // optional uint32 batch = 9;
        private int batch_ ;
        public boolean hasBatch() {
          return ((bitField0_ & 0x00000100) == 0x00000100);
        }
        public int getBatch() {
          return batch_;
        }
        public Builder setBatch(int value) {
          bitField0_ |= 0x00000100;
          batch_ = value;
          onChanged();
          return this;
        }
        public Builder clearBatch() {
          bitField0_ = (bitField0_ & ~0x00000100);
          batch_ = 0;
          onChanged();
          return this;
        }
        
        // repeated .ColumnStructProto notIndexConditionCols = 10;
        private java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto> notIndexConditionCols_ =
          java.util.Collections.emptyList();
        private void ensureNotIndexConditionColsIsMutable() {
          if (!((bitField0_ & 0x00000200) == 0x00000200)) {
            notIndexConditionCols_ = new java.util.ArrayList<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto>(notIndexConditionCols_);
            bitField0_ |= 0x00000200;
           }
        }
        
        private com.google.protobuf.RepeatedFieldBuilder<
            com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder> notIndexConditionColsBuilder_;
        
        public java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto> getNotIndexConditionColsList() {
          if (notIndexConditionColsBuilder_ == null) {
            return java.util.Collections.unmodifiableList(notIndexConditionCols_);
          } else {
            return notIndexConditionColsBuilder_.getMessageList();
          }
        }
        public int getNotIndexConditionColsCount() {
          if (notIndexConditionColsBuilder_ == null) {
            return notIndexConditionCols_.size();
          } else {
            return notIndexConditionColsBuilder_.getCount();
          }
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto getNotIndexConditionCols(int index) {
          if (notIndexConditionColsBuilder_ == null) {
            return notIndexConditionCols_.get(index);
          } else {
            return notIndexConditionColsBuilder_.getMessage(index);
          }
        }
        public Builder setNotIndexConditionCols(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto value) {
          if (notIndexConditionColsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureNotIndexConditionColsIsMutable();
            notIndexConditionCols_.set(index, value);
            onChanged();
          } else {
            notIndexConditionColsBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setNotIndexConditionCols(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder builderForValue) {
          if (notIndexConditionColsBuilder_ == null) {
            ensureNotIndexConditionColsIsMutable();
            notIndexConditionCols_.set(index, builderForValue.build());
            onChanged();
          } else {
            notIndexConditionColsBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addNotIndexConditionCols(com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto value) {
          if (notIndexConditionColsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureNotIndexConditionColsIsMutable();
            notIndexConditionCols_.add(value);
            onChanged();
          } else {
            notIndexConditionColsBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addNotIndexConditionCols(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto value) {
          if (notIndexConditionColsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureNotIndexConditionColsIsMutable();
            notIndexConditionCols_.add(index, value);
            onChanged();
          } else {
            notIndexConditionColsBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addNotIndexConditionCols(
            com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder builderForValue) {
          if (notIndexConditionColsBuilder_ == null) {
            ensureNotIndexConditionColsIsMutable();
            notIndexConditionCols_.add(builderForValue.build());
            onChanged();
          } else {
            notIndexConditionColsBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addNotIndexConditionCols(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder builderForValue) {
          if (notIndexConditionColsBuilder_ == null) {
            ensureNotIndexConditionColsIsMutable();
            notIndexConditionCols_.add(index, builderForValue.build());
            onChanged();
          } else {
            notIndexConditionColsBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllNotIndexConditionCols(
            java.lang.Iterable<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto> values) {
          if (notIndexConditionColsBuilder_ == null) {
            ensureNotIndexConditionColsIsMutable();
            super.addAll(values, notIndexConditionCols_);
            onChanged();
          } else {
            notIndexConditionColsBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearNotIndexConditionCols() {
          if (notIndexConditionColsBuilder_ == null) {
            notIndexConditionCols_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000200);
            onChanged();
          } else {
            notIndexConditionColsBuilder_.clear();
          }
          return this;
        }
        public Builder removeNotIndexConditionCols(int index) {
          if (notIndexConditionColsBuilder_ == null) {
            ensureNotIndexConditionColsIsMutable();
            notIndexConditionCols_.remove(index);
            onChanged();
          } else {
            notIndexConditionColsBuilder_.remove(index);
          }
          return this;
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder getNotIndexConditionColsBuilder(
            int index) {
          return getNotIndexConditionColsFieldBuilder().getBuilder(index);
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder getNotIndexConditionColsOrBuilder(
            int index) {
          if (notIndexConditionColsBuilder_ == null) {
            return notIndexConditionCols_.get(index);  } else {
            return notIndexConditionColsBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder> 
             getNotIndexConditionColsOrBuilderList() {
          if (notIndexConditionColsBuilder_ != null) {
            return notIndexConditionColsBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(notIndexConditionCols_);
          }
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder addNotIndexConditionColsBuilder() {
          return getNotIndexConditionColsFieldBuilder().addBuilder(
              com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.getDefaultInstance());
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder addNotIndexConditionColsBuilder(
            int index) {
          return getNotIndexConditionColsFieldBuilder().addBuilder(
              index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.getDefaultInstance());
        }
        public java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder> 
             getNotIndexConditionColsBuilderList() {
          return getNotIndexConditionColsFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder> 
            getNotIndexConditionColsFieldBuilder() {
          if (notIndexConditionColsBuilder_ == null) {
            notIndexConditionColsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder>(
                    notIndexConditionCols_,
                    ((bitField0_ & 0x00000200) == 0x00000200),
                    getParentForChildren(),
                    isClean());
            notIndexConditionCols_ = null;
          }
          return notIndexConditionColsBuilder_;
        }
        
        // @@protoc_insertion_point(builder_scope:ScanActionProto)
      }
      
      static {
        defaultInstance = new ScanActionProto(true);
        defaultInstance.initFields();
      }
      
      // @@protoc_insertion_point(class_scope:ScanActionProto)
    }
    
    public interface DeleteActionProtoOrBuilder
        extends com.google.protobuf.MessageOrBuilder {
      
      // required string tableName = 1;
      boolean hasTableName();
      String getTableName();
      
      // required bytes primayKey = 2;
      boolean hasPrimayKey();
      com.google.protobuf.ByteString getPrimayKey();
    }
    public static final class DeleteActionProto extends
        com.google.protobuf.GeneratedMessage
        implements DeleteActionProtoOrBuilder {
      // Use DeleteActionProto.newBuilder() to construct.
      private DeleteActionProto(Builder builder) {
        super(builder);
      }
      private DeleteActionProto(boolean noInit) {}
      
      private static final DeleteActionProto defaultInstance;
      public static DeleteActionProto getDefaultInstance() {
        return defaultInstance;
      }
      
      public DeleteActionProto getDefaultInstanceForType() {
        return defaultInstance;
      }
      
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_DeleteActionProto_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_DeleteActionProto_fieldAccessorTable;
      }
      
      private int bitField0_;
      // required string tableName = 1;
      public static final int TABLENAME_FIELD_NUMBER = 1;
      private java.lang.Object tableName_;
      public boolean hasTableName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public String getTableName() {
        java.lang.Object ref = tableName_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (com.google.protobuf.Internal.isValidUtf8(bs)) {
            tableName_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getTableNameBytes() {
        java.lang.Object ref = tableName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          tableName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // required bytes primayKey = 2;
      public static final int PRIMAYKEY_FIELD_NUMBER = 2;
      private com.google.protobuf.ByteString primayKey_;
      public boolean hasPrimayKey() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public com.google.protobuf.ByteString getPrimayKey() {
        return primayKey_;
      }
      
      private void initFields() {
        tableName_ = "";
        primayKey_ = com.google.protobuf.ByteString.EMPTY;
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized != -1) return isInitialized == 1;
        
        if (!hasTableName()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasPrimayKey()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
      
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeBytes(1, getTableNameBytes());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeBytes(2, primayKey_);
        }
        getUnknownFields().writeTo(output);
      }
      
      private int memoizedSerializedSize = -1;
      public int getSerializedSize() {
        int size = memoizedSerializedSize;
        if (size != -1) return size;
      
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(1, getTableNameBytes());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(2, primayKey_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSerializedSize = size;
        return size;
      }
      
      private static final long serialVersionUID = 0L;
      @java.lang.Override
      protected java.lang.Object writeReplace()
          throws java.io.ObjectStreamException {
        return super.writeReplace();
      }
      
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto)) {
          return super.equals(obj);
        }
        com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto other = (com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto) obj;
        
        boolean result = true;
        result = result && (hasTableName() == other.hasTableName());
        if (hasTableName()) {
          result = result && getTableName()
              .equals(other.getTableName());
        }
        result = result && (hasPrimayKey() == other.hasPrimayKey());
        if (hasPrimayKey()) {
          result = result && getPrimayKey()
              .equals(other.getPrimayKey());
        }
        result = result &&
            getUnknownFields().equals(other.getUnknownFields());
        return result;
      }
      
      @java.lang.Override
      public int hashCode() {
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (hasTableName()) {
          hash = (37 * hash) + TABLENAME_FIELD_NUMBER;
          hash = (53 * hash) + getTableName().hashCode();
        }
        if (hasPrimayKey()) {
          hash = (37 * hash) + PRIMAYKEY_FIELD_NUMBER;
          hash = (53 * hash) + getPrimayKey().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        return hash;
      }
      
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      
      public static Builder newBuilder() { return Builder.create(); }
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder(com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() { return newBuilder(this); }
      
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder<Builder>
         implements com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProtoOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_DeleteActionProto_descriptor;
        }
        
        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_DeleteActionProto_fieldAccessorTable;
        }
        
        // Construct using com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
        
        private Builder(BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          }
        }
        private static Builder create() {
          return new Builder();
        }
        
        public Builder clear() {
          super.clear();
          tableName_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          primayKey_ = com.google.protobuf.ByteString.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
        
        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }
        
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto.getDescriptor();
        }
        
        public com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto getDefaultInstanceForType() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto.getDefaultInstance();
        }
        
        public com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto build() {
          com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
        
        private com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto buildParsed()
            throws com.google.protobuf.InvalidProtocolBufferException {
          com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(
              result).asInvalidProtocolBufferException();
          }
          return result;
        }
        
        public com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto buildPartial() {
          com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto result = new com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.tableName_ = tableName_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.primayKey_ = primayKey_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
        
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto) {
            return mergeFrom((com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        
        public Builder mergeFrom(com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto other) {
          if (other == com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto.getDefaultInstance()) return this;
          if (other.hasTableName()) {
            setTableName(other.getTableName());
          }
          if (other.hasPrimayKey()) {
            setPrimayKey(other.getPrimayKey());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }
        
        public final boolean isInitialized() {
          if (!hasTableName()) {
            
            return false;
          }
          if (!hasPrimayKey()) {
            
            return false;
          }
          return true;
        }
        
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder(
              this.getUnknownFields());
          while (true) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  this.setUnknownFields(unknownFields.build());
                  onChanged();
                  return this;
                }
                break;
              }
              case 10: {
                bitField0_ |= 0x00000001;
                tableName_ = input.readBytes();
                break;
              }
              case 18: {
                bitField0_ |= 0x00000002;
                primayKey_ = input.readBytes();
                break;
              }
            }
          }
        }
        
        private int bitField0_;
        
        // required string tableName = 1;
        private java.lang.Object tableName_ = "";
        public boolean hasTableName() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        public String getTableName() {
          java.lang.Object ref = tableName_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            tableName_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setTableName(String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000001;
          tableName_ = value;
          onChanged();
          return this;
        }
        public Builder clearTableName() {
          bitField0_ = (bitField0_ & ~0x00000001);
          tableName_ = getDefaultInstance().getTableName();
          onChanged();
          return this;
        }
        void setTableName(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000001;
          tableName_ = value;
          onChanged();
        }
        
        // required bytes primayKey = 2;
        private com.google.protobuf.ByteString primayKey_ = com.google.protobuf.ByteString.EMPTY;
        public boolean hasPrimayKey() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        public com.google.protobuf.ByteString getPrimayKey() {
          return primayKey_;
        }
        public Builder setPrimayKey(com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000002;
          primayKey_ = value;
          onChanged();
          return this;
        }
        public Builder clearPrimayKey() {
          bitField0_ = (bitField0_ & ~0x00000002);
          primayKey_ = getDefaultInstance().getPrimayKey();
          onChanged();
          return this;
        }
        
        // @@protoc_insertion_point(builder_scope:DeleteActionProto)
      }
      
      static {
        defaultInstance = new DeleteActionProto(true);
        defaultInstance.initFields();
      }
      
      // @@protoc_insertion_point(class_scope:DeleteActionProto)
    }
    
    public interface InsertActionProtoOrBuilder
        extends com.google.protobuf.MessageOrBuilder {
      
      // required string tableName = 1;
      boolean hasTableName();
      String getTableName();
      
      // required bytes primayKey = 2;
      boolean hasPrimayKey();
      com.google.protobuf.ByteString getPrimayKey();
      
      // repeated .ColumnStructProto cols = 3;
      java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto> 
          getColsList();
      com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto getCols(int index);
      int getColsCount();
      java.util.List<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder> 
          getColsOrBuilderList();
      com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder getColsOrBuilder(
          int index);
    }
    public static final class InsertActionProto extends
        com.google.protobuf.GeneratedMessage
        implements InsertActionProtoOrBuilder {
      // Use InsertActionProto.newBuilder() to construct.
      private InsertActionProto(Builder builder) {
        super(builder);
      }
      private InsertActionProto(boolean noInit) {}
      
      private static final InsertActionProto defaultInstance;
      public static InsertActionProto getDefaultInstance() {
        return defaultInstance;
      }
      
      public InsertActionProto getDefaultInstanceForType() {
        return defaultInstance;
      }
      
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_InsertActionProto_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_InsertActionProto_fieldAccessorTable;
      }
      
      private int bitField0_;
      // required string tableName = 1;
      public static final int TABLENAME_FIELD_NUMBER = 1;
      private java.lang.Object tableName_;
      public boolean hasTableName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public String getTableName() {
        java.lang.Object ref = tableName_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (com.google.protobuf.Internal.isValidUtf8(bs)) {
            tableName_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getTableNameBytes() {
        java.lang.Object ref = tableName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          tableName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // required bytes primayKey = 2;
      public static final int PRIMAYKEY_FIELD_NUMBER = 2;
      private com.google.protobuf.ByteString primayKey_;
      public boolean hasPrimayKey() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public com.google.protobuf.ByteString getPrimayKey() {
        return primayKey_;
      }
      
      // repeated .ColumnStructProto cols = 3;
      public static final int COLS_FIELD_NUMBER = 3;
      private java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto> cols_;
      public java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto> getColsList() {
        return cols_;
      }
      public java.util.List<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder> 
          getColsOrBuilderList() {
        return cols_;
      }
      public int getColsCount() {
        return cols_.size();
      }
      public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto getCols(int index) {
        return cols_.get(index);
      }
      public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder getColsOrBuilder(
          int index) {
        return cols_.get(index);
      }
      
      private void initFields() {
        tableName_ = "";
        primayKey_ = com.google.protobuf.ByteString.EMPTY;
        cols_ = java.util.Collections.emptyList();
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized != -1) return isInitialized == 1;
        
        if (!hasTableName()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasPrimayKey()) {
          memoizedIsInitialized = 0;
          return false;
        }
        for (int i = 0; i < getColsCount(); i++) {
          if (!getCols(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        memoizedIsInitialized = 1;
        return true;
      }
      
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeBytes(1, getTableNameBytes());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeBytes(2, primayKey_);
        }
        for (int i = 0; i < cols_.size(); i++) {
          output.writeMessage(3, cols_.get(i));
        }
        getUnknownFields().writeTo(output);
      }
      
      private int memoizedSerializedSize = -1;
      public int getSerializedSize() {
        int size = memoizedSerializedSize;
        if (size != -1) return size;
      
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(1, getTableNameBytes());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(2, primayKey_);
        }
        for (int i = 0; i < cols_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, cols_.get(i));
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSerializedSize = size;
        return size;
      }
      
      private static final long serialVersionUID = 0L;
      @java.lang.Override
      protected java.lang.Object writeReplace()
          throws java.io.ObjectStreamException {
        return super.writeReplace();
      }
      
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto)) {
          return super.equals(obj);
        }
        com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto other = (com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto) obj;
        
        boolean result = true;
        result = result && (hasTableName() == other.hasTableName());
        if (hasTableName()) {
          result = result && getTableName()
              .equals(other.getTableName());
        }
        result = result && (hasPrimayKey() == other.hasPrimayKey());
        if (hasPrimayKey()) {
          result = result && getPrimayKey()
              .equals(other.getPrimayKey());
        }
        result = result && getColsList()
            .equals(other.getColsList());
        result = result &&
            getUnknownFields().equals(other.getUnknownFields());
        return result;
      }
      
      @java.lang.Override
      public int hashCode() {
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (hasTableName()) {
          hash = (37 * hash) + TABLENAME_FIELD_NUMBER;
          hash = (53 * hash) + getTableName().hashCode();
        }
        if (hasPrimayKey()) {
          hash = (37 * hash) + PRIMAYKEY_FIELD_NUMBER;
          hash = (53 * hash) + getPrimayKey().hashCode();
        }
        if (getColsCount() > 0) {
          hash = (37 * hash) + COLS_FIELD_NUMBER;
          hash = (53 * hash) + getColsList().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        return hash;
      }
      
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      
      public static Builder newBuilder() { return Builder.create(); }
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder(com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() { return newBuilder(this); }
      
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder<Builder>
         implements com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProtoOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_InsertActionProto_descriptor;
        }
        
        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_InsertActionProto_fieldAccessorTable;
        }
        
        // Construct using com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
        
        private Builder(BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
            getColsFieldBuilder();
          }
        }
        private static Builder create() {
          return new Builder();
        }
        
        public Builder clear() {
          super.clear();
          tableName_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          primayKey_ = com.google.protobuf.ByteString.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000002);
          if (colsBuilder_ == null) {
            cols_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            colsBuilder_.clear();
          }
          return this;
        }
        
        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }
        
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto.getDescriptor();
        }
        
        public com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto getDefaultInstanceForType() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto.getDefaultInstance();
        }
        
        public com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto build() {
          com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
        
        private com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto buildParsed()
            throws com.google.protobuf.InvalidProtocolBufferException {
          com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(
              result).asInvalidProtocolBufferException();
          }
          return result;
        }
        
        public com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto buildPartial() {
          com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto result = new com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.tableName_ = tableName_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.primayKey_ = primayKey_;
          if (colsBuilder_ == null) {
            if (((bitField0_ & 0x00000004) == 0x00000004)) {
              cols_ = java.util.Collections.unmodifiableList(cols_);
              bitField0_ = (bitField0_ & ~0x00000004);
            }
            result.cols_ = cols_;
          } else {
            result.cols_ = colsBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
        
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto) {
            return mergeFrom((com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        
        public Builder mergeFrom(com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto other) {
          if (other == com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto.getDefaultInstance()) return this;
          if (other.hasTableName()) {
            setTableName(other.getTableName());
          }
          if (other.hasPrimayKey()) {
            setPrimayKey(other.getPrimayKey());
          }
          if (colsBuilder_ == null) {
            if (!other.cols_.isEmpty()) {
              if (cols_.isEmpty()) {
                cols_ = other.cols_;
                bitField0_ = (bitField0_ & ~0x00000004);
              } else {
                ensureColsIsMutable();
                cols_.addAll(other.cols_);
              }
              onChanged();
            }
          } else {
            if (!other.cols_.isEmpty()) {
              if (colsBuilder_.isEmpty()) {
                colsBuilder_.dispose();
                colsBuilder_ = null;
                cols_ = other.cols_;
                bitField0_ = (bitField0_ & ~0x00000004);
                colsBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getColsFieldBuilder() : null;
              } else {
                colsBuilder_.addAllMessages(other.cols_);
              }
            }
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }
        
        public final boolean isInitialized() {
          if (!hasTableName()) {
            
            return false;
          }
          if (!hasPrimayKey()) {
            
            return false;
          }
          for (int i = 0; i < getColsCount(); i++) {
            if (!getCols(i).isInitialized()) {
              
              return false;
            }
          }
          return true;
        }
        
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder(
              this.getUnknownFields());
          while (true) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  this.setUnknownFields(unknownFields.build());
                  onChanged();
                  return this;
                }
                break;
              }
              case 10: {
                bitField0_ |= 0x00000001;
                tableName_ = input.readBytes();
                break;
              }
              case 18: {
                bitField0_ |= 0x00000002;
                primayKey_ = input.readBytes();
                break;
              }
              case 26: {
                com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder subBuilder = com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.newBuilder();
                input.readMessage(subBuilder, extensionRegistry);
                addCols(subBuilder.buildPartial());
                break;
              }
            }
          }
        }
        
        private int bitField0_;
        
        // required string tableName = 1;
        private java.lang.Object tableName_ = "";
        public boolean hasTableName() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        public String getTableName() {
          java.lang.Object ref = tableName_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            tableName_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setTableName(String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000001;
          tableName_ = value;
          onChanged();
          return this;
        }
        public Builder clearTableName() {
          bitField0_ = (bitField0_ & ~0x00000001);
          tableName_ = getDefaultInstance().getTableName();
          onChanged();
          return this;
        }
        void setTableName(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000001;
          tableName_ = value;
          onChanged();
        }
        
        // required bytes primayKey = 2;
        private com.google.protobuf.ByteString primayKey_ = com.google.protobuf.ByteString.EMPTY;
        public boolean hasPrimayKey() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        public com.google.protobuf.ByteString getPrimayKey() {
          return primayKey_;
        }
        public Builder setPrimayKey(com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000002;
          primayKey_ = value;
          onChanged();
          return this;
        }
        public Builder clearPrimayKey() {
          bitField0_ = (bitField0_ & ~0x00000002);
          primayKey_ = getDefaultInstance().getPrimayKey();
          onChanged();
          return this;
        }
        
        // repeated .ColumnStructProto cols = 3;
        private java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto> cols_ =
          java.util.Collections.emptyList();
        private void ensureColsIsMutable() {
          if (!((bitField0_ & 0x00000004) == 0x00000004)) {
            cols_ = new java.util.ArrayList<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto>(cols_);
            bitField0_ |= 0x00000004;
           }
        }
        
        private com.google.protobuf.RepeatedFieldBuilder<
            com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder> colsBuilder_;
        
        public java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto> getColsList() {
          if (colsBuilder_ == null) {
            return java.util.Collections.unmodifiableList(cols_);
          } else {
            return colsBuilder_.getMessageList();
          }
        }
        public int getColsCount() {
          if (colsBuilder_ == null) {
            return cols_.size();
          } else {
            return colsBuilder_.getCount();
          }
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto getCols(int index) {
          if (colsBuilder_ == null) {
            return cols_.get(index);
          } else {
            return colsBuilder_.getMessage(index);
          }
        }
        public Builder setCols(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto value) {
          if (colsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureColsIsMutable();
            cols_.set(index, value);
            onChanged();
          } else {
            colsBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setCols(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder builderForValue) {
          if (colsBuilder_ == null) {
            ensureColsIsMutable();
            cols_.set(index, builderForValue.build());
            onChanged();
          } else {
            colsBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addCols(com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto value) {
          if (colsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureColsIsMutable();
            cols_.add(value);
            onChanged();
          } else {
            colsBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addCols(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto value) {
          if (colsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureColsIsMutable();
            cols_.add(index, value);
            onChanged();
          } else {
            colsBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addCols(
            com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder builderForValue) {
          if (colsBuilder_ == null) {
            ensureColsIsMutable();
            cols_.add(builderForValue.build());
            onChanged();
          } else {
            colsBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addCols(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder builderForValue) {
          if (colsBuilder_ == null) {
            ensureColsIsMutable();
            cols_.add(index, builderForValue.build());
            onChanged();
          } else {
            colsBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllCols(
            java.lang.Iterable<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto> values) {
          if (colsBuilder_ == null) {
            ensureColsIsMutable();
            super.addAll(values, cols_);
            onChanged();
          } else {
            colsBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearCols() {
          if (colsBuilder_ == null) {
            cols_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000004);
            onChanged();
          } else {
            colsBuilder_.clear();
          }
          return this;
        }
        public Builder removeCols(int index) {
          if (colsBuilder_ == null) {
            ensureColsIsMutable();
            cols_.remove(index);
            onChanged();
          } else {
            colsBuilder_.remove(index);
          }
          return this;
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder getColsBuilder(
            int index) {
          return getColsFieldBuilder().getBuilder(index);
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder getColsOrBuilder(
            int index) {
          if (colsBuilder_ == null) {
            return cols_.get(index);  } else {
            return colsBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder> 
             getColsOrBuilderList() {
          if (colsBuilder_ != null) {
            return colsBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(cols_);
          }
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder addColsBuilder() {
          return getColsFieldBuilder().addBuilder(
              com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.getDefaultInstance());
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder addColsBuilder(
            int index) {
          return getColsFieldBuilder().addBuilder(
              index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.getDefaultInstance());
        }
        public java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder> 
             getColsBuilderList() {
          return getColsFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder> 
            getColsFieldBuilder() {
          if (colsBuilder_ == null) {
            colsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder>(
                    cols_,
                    ((bitField0_ & 0x00000004) == 0x00000004),
                    getParentForChildren(),
                    isClean());
            cols_ = null;
          }
          return colsBuilder_;
        }
        
        // @@protoc_insertion_point(builder_scope:InsertActionProto)
      }
      
      static {
        defaultInstance = new InsertActionProto(true);
        defaultInstance.initFields();
      }
      
      // @@protoc_insertion_point(class_scope:InsertActionProto)
    }
    
    public interface UpdateActionProtoOrBuilder
        extends com.google.protobuf.MessageOrBuilder {
      
      // required bytes primayKey = 1;
      boolean hasPrimayKey();
      com.google.protobuf.ByteString getPrimayKey();
      
      // required string tableName = 2;
      boolean hasTableName();
      String getTableName();
      
      // repeated .ColumnStructProto cols = 3;
      java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto> 
          getColsList();
      com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto getCols(int index);
      int getColsCount();
      java.util.List<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder> 
          getColsOrBuilderList();
      com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder getColsOrBuilder(
          int index);
      
      // optional string sessionId = 4;
      boolean hasSessionId();
      String getSessionId();
    }
    public static final class UpdateActionProto extends
        com.google.protobuf.GeneratedMessage
        implements UpdateActionProtoOrBuilder {
      // Use UpdateActionProto.newBuilder() to construct.
      private UpdateActionProto(Builder builder) {
        super(builder);
      }
      private UpdateActionProto(boolean noInit) {}
      
      private static final UpdateActionProto defaultInstance;
      public static UpdateActionProto getDefaultInstance() {
        return defaultInstance;
      }
      
      public UpdateActionProto getDefaultInstanceForType() {
        return defaultInstance;
      }
      
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_UpdateActionProto_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_UpdateActionProto_fieldAccessorTable;
      }
      
      private int bitField0_;
      // required bytes primayKey = 1;
      public static final int PRIMAYKEY_FIELD_NUMBER = 1;
      private com.google.protobuf.ByteString primayKey_;
      public boolean hasPrimayKey() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public com.google.protobuf.ByteString getPrimayKey() {
        return primayKey_;
      }
      
      // required string tableName = 2;
      public static final int TABLENAME_FIELD_NUMBER = 2;
      private java.lang.Object tableName_;
      public boolean hasTableName() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public String getTableName() {
        java.lang.Object ref = tableName_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (com.google.protobuf.Internal.isValidUtf8(bs)) {
            tableName_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getTableNameBytes() {
        java.lang.Object ref = tableName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          tableName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // repeated .ColumnStructProto cols = 3;
      public static final int COLS_FIELD_NUMBER = 3;
      private java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto> cols_;
      public java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto> getColsList() {
        return cols_;
      }
      public java.util.List<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder> 
          getColsOrBuilderList() {
        return cols_;
      }
      public int getColsCount() {
        return cols_.size();
      }
      public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto getCols(int index) {
        return cols_.get(index);
      }
      public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder getColsOrBuilder(
          int index) {
        return cols_.get(index);
      }
      
      // optional string sessionId = 4;
      public static final int SESSIONID_FIELD_NUMBER = 4;
      private java.lang.Object sessionId_;
      public boolean hasSessionId() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public String getSessionId() {
        java.lang.Object ref = sessionId_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (com.google.protobuf.Internal.isValidUtf8(bs)) {
            sessionId_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getSessionIdBytes() {
        java.lang.Object ref = sessionId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          sessionId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      private void initFields() {
        primayKey_ = com.google.protobuf.ByteString.EMPTY;
        tableName_ = "";
        cols_ = java.util.Collections.emptyList();
        sessionId_ = "";
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized != -1) return isInitialized == 1;
        
        if (!hasPrimayKey()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasTableName()) {
          memoizedIsInitialized = 0;
          return false;
        }
        for (int i = 0; i < getColsCount(); i++) {
          if (!getCols(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        memoizedIsInitialized = 1;
        return true;
      }
      
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeBytes(1, primayKey_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeBytes(2, getTableNameBytes());
        }
        for (int i = 0; i < cols_.size(); i++) {
          output.writeMessage(3, cols_.get(i));
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeBytes(4, getSessionIdBytes());
        }
        getUnknownFields().writeTo(output);
      }
      
      private int memoizedSerializedSize = -1;
      public int getSerializedSize() {
        int size = memoizedSerializedSize;
        if (size != -1) return size;
      
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(1, primayKey_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(2, getTableNameBytes());
        }
        for (int i = 0; i < cols_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, cols_.get(i));
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(4, getSessionIdBytes());
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSerializedSize = size;
        return size;
      }
      
      private static final long serialVersionUID = 0L;
      @java.lang.Override
      protected java.lang.Object writeReplace()
          throws java.io.ObjectStreamException {
        return super.writeReplace();
      }
      
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto)) {
          return super.equals(obj);
        }
        com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto other = (com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto) obj;
        
        boolean result = true;
        result = result && (hasPrimayKey() == other.hasPrimayKey());
        if (hasPrimayKey()) {
          result = result && getPrimayKey()
              .equals(other.getPrimayKey());
        }
        result = result && (hasTableName() == other.hasTableName());
        if (hasTableName()) {
          result = result && getTableName()
              .equals(other.getTableName());
        }
        result = result && getColsList()
            .equals(other.getColsList());
        result = result && (hasSessionId() == other.hasSessionId());
        if (hasSessionId()) {
          result = result && getSessionId()
              .equals(other.getSessionId());
        }
        result = result &&
            getUnknownFields().equals(other.getUnknownFields());
        return result;
      }
      
      @java.lang.Override
      public int hashCode() {
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (hasPrimayKey()) {
          hash = (37 * hash) + PRIMAYKEY_FIELD_NUMBER;
          hash = (53 * hash) + getPrimayKey().hashCode();
        }
        if (hasTableName()) {
          hash = (37 * hash) + TABLENAME_FIELD_NUMBER;
          hash = (53 * hash) + getTableName().hashCode();
        }
        if (getColsCount() > 0) {
          hash = (37 * hash) + COLS_FIELD_NUMBER;
          hash = (53 * hash) + getColsList().hashCode();
        }
        if (hasSessionId()) {
          hash = (37 * hash) + SESSIONID_FIELD_NUMBER;
          hash = (53 * hash) + getSessionId().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        return hash;
      }
      
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      
      public static Builder newBuilder() { return Builder.create(); }
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder(com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() { return newBuilder(this); }
      
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder<Builder>
         implements com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProtoOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_UpdateActionProto_descriptor;
        }
        
        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_UpdateActionProto_fieldAccessorTable;
        }
        
        // Construct using com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
        
        private Builder(BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
            getColsFieldBuilder();
          }
        }
        private static Builder create() {
          return new Builder();
        }
        
        public Builder clear() {
          super.clear();
          primayKey_ = com.google.protobuf.ByteString.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000001);
          tableName_ = "";
          bitField0_ = (bitField0_ & ~0x00000002);
          if (colsBuilder_ == null) {
            cols_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            colsBuilder_.clear();
          }
          sessionId_ = "";
          bitField0_ = (bitField0_ & ~0x00000008);
          return this;
        }
        
        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }
        
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto.getDescriptor();
        }
        
        public com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto getDefaultInstanceForType() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto.getDefaultInstance();
        }
        
        public com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto build() {
          com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
        
        private com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto buildParsed()
            throws com.google.protobuf.InvalidProtocolBufferException {
          com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(
              result).asInvalidProtocolBufferException();
          }
          return result;
        }
        
        public com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto buildPartial() {
          com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto result = new com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.primayKey_ = primayKey_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.tableName_ = tableName_;
          if (colsBuilder_ == null) {
            if (((bitField0_ & 0x00000004) == 0x00000004)) {
              cols_ = java.util.Collections.unmodifiableList(cols_);
              bitField0_ = (bitField0_ & ~0x00000004);
            }
            result.cols_ = cols_;
          } else {
            result.cols_ = colsBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000004;
          }
          result.sessionId_ = sessionId_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
        
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto) {
            return mergeFrom((com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        
        public Builder mergeFrom(com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto other) {
          if (other == com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto.getDefaultInstance()) return this;
          if (other.hasPrimayKey()) {
            setPrimayKey(other.getPrimayKey());
          }
          if (other.hasTableName()) {
            setTableName(other.getTableName());
          }
          if (colsBuilder_ == null) {
            if (!other.cols_.isEmpty()) {
              if (cols_.isEmpty()) {
                cols_ = other.cols_;
                bitField0_ = (bitField0_ & ~0x00000004);
              } else {
                ensureColsIsMutable();
                cols_.addAll(other.cols_);
              }
              onChanged();
            }
          } else {
            if (!other.cols_.isEmpty()) {
              if (colsBuilder_.isEmpty()) {
                colsBuilder_.dispose();
                colsBuilder_ = null;
                cols_ = other.cols_;
                bitField0_ = (bitField0_ & ~0x00000004);
                colsBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getColsFieldBuilder() : null;
              } else {
                colsBuilder_.addAllMessages(other.cols_);
              }
            }
          }
          if (other.hasSessionId()) {
            setSessionId(other.getSessionId());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }
        
        public final boolean isInitialized() {
          if (!hasPrimayKey()) {
            
            return false;
          }
          if (!hasTableName()) {
            
            return false;
          }
          for (int i = 0; i < getColsCount(); i++) {
            if (!getCols(i).isInitialized()) {
              
              return false;
            }
          }
          return true;
        }
        
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder(
              this.getUnknownFields());
          while (true) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  this.setUnknownFields(unknownFields.build());
                  onChanged();
                  return this;
                }
                break;
              }
              case 10: {
                bitField0_ |= 0x00000001;
                primayKey_ = input.readBytes();
                break;
              }
              case 18: {
                bitField0_ |= 0x00000002;
                tableName_ = input.readBytes();
                break;
              }
              case 26: {
                com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder subBuilder = com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.newBuilder();
                input.readMessage(subBuilder, extensionRegistry);
                addCols(subBuilder.buildPartial());
                break;
              }
              case 34: {
                bitField0_ |= 0x00000008;
                sessionId_ = input.readBytes();
                break;
              }
            }
          }
        }
        
        private int bitField0_;
        
        // required bytes primayKey = 1;
        private com.google.protobuf.ByteString primayKey_ = com.google.protobuf.ByteString.EMPTY;
        public boolean hasPrimayKey() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        public com.google.protobuf.ByteString getPrimayKey() {
          return primayKey_;
        }
        public Builder setPrimayKey(com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000001;
          primayKey_ = value;
          onChanged();
          return this;
        }
        public Builder clearPrimayKey() {
          bitField0_ = (bitField0_ & ~0x00000001);
          primayKey_ = getDefaultInstance().getPrimayKey();
          onChanged();
          return this;
        }
        
        // required string tableName = 2;
        private java.lang.Object tableName_ = "";
        public boolean hasTableName() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        public String getTableName() {
          java.lang.Object ref = tableName_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            tableName_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setTableName(String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000002;
          tableName_ = value;
          onChanged();
          return this;
        }
        public Builder clearTableName() {
          bitField0_ = (bitField0_ & ~0x00000002);
          tableName_ = getDefaultInstance().getTableName();
          onChanged();
          return this;
        }
        void setTableName(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000002;
          tableName_ = value;
          onChanged();
        }
        
        // repeated .ColumnStructProto cols = 3;
        private java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto> cols_ =
          java.util.Collections.emptyList();
        private void ensureColsIsMutable() {
          if (!((bitField0_ & 0x00000004) == 0x00000004)) {
            cols_ = new java.util.ArrayList<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto>(cols_);
            bitField0_ |= 0x00000004;
           }
        }
        
        private com.google.protobuf.RepeatedFieldBuilder<
            com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder> colsBuilder_;
        
        public java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto> getColsList() {
          if (colsBuilder_ == null) {
            return java.util.Collections.unmodifiableList(cols_);
          } else {
            return colsBuilder_.getMessageList();
          }
        }
        public int getColsCount() {
          if (colsBuilder_ == null) {
            return cols_.size();
          } else {
            return colsBuilder_.getCount();
          }
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto getCols(int index) {
          if (colsBuilder_ == null) {
            return cols_.get(index);
          } else {
            return colsBuilder_.getMessage(index);
          }
        }
        public Builder setCols(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto value) {
          if (colsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureColsIsMutable();
            cols_.set(index, value);
            onChanged();
          } else {
            colsBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setCols(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder builderForValue) {
          if (colsBuilder_ == null) {
            ensureColsIsMutable();
            cols_.set(index, builderForValue.build());
            onChanged();
          } else {
            colsBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addCols(com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto value) {
          if (colsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureColsIsMutable();
            cols_.add(value);
            onChanged();
          } else {
            colsBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addCols(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto value) {
          if (colsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureColsIsMutable();
            cols_.add(index, value);
            onChanged();
          } else {
            colsBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addCols(
            com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder builderForValue) {
          if (colsBuilder_ == null) {
            ensureColsIsMutable();
            cols_.add(builderForValue.build());
            onChanged();
          } else {
            colsBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addCols(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder builderForValue) {
          if (colsBuilder_ == null) {
            ensureColsIsMutable();
            cols_.add(index, builderForValue.build());
            onChanged();
          } else {
            colsBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllCols(
            java.lang.Iterable<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto> values) {
          if (colsBuilder_ == null) {
            ensureColsIsMutable();
            super.addAll(values, cols_);
            onChanged();
          } else {
            colsBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearCols() {
          if (colsBuilder_ == null) {
            cols_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000004);
            onChanged();
          } else {
            colsBuilder_.clear();
          }
          return this;
        }
        public Builder removeCols(int index) {
          if (colsBuilder_ == null) {
            ensureColsIsMutable();
            cols_.remove(index);
            onChanged();
          } else {
            colsBuilder_.remove(index);
          }
          return this;
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder getColsBuilder(
            int index) {
          return getColsFieldBuilder().getBuilder(index);
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder getColsOrBuilder(
            int index) {
          if (colsBuilder_ == null) {
            return cols_.get(index);  } else {
            return colsBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder> 
             getColsOrBuilderList() {
          if (colsBuilder_ != null) {
            return colsBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(cols_);
          }
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder addColsBuilder() {
          return getColsFieldBuilder().addBuilder(
              com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.getDefaultInstance());
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder addColsBuilder(
            int index) {
          return getColsFieldBuilder().addBuilder(
              index, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.getDefaultInstance());
        }
        public java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder> 
             getColsBuilderList() {
          return getColsFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder> 
            getColsFieldBuilder() {
          if (colsBuilder_ == null) {
            colsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder>(
                    cols_,
                    ((bitField0_ & 0x00000004) == 0x00000004),
                    getParentForChildren(),
                    isClean());
            cols_ = null;
          }
          return colsBuilder_;
        }
        
        // optional string sessionId = 4;
        private java.lang.Object sessionId_ = "";
        public boolean hasSessionId() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        public String getSessionId() {
          java.lang.Object ref = sessionId_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            sessionId_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setSessionId(String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000008;
          sessionId_ = value;
          onChanged();
          return this;
        }
        public Builder clearSessionId() {
          bitField0_ = (bitField0_ & ~0x00000008);
          sessionId_ = getDefaultInstance().getSessionId();
          onChanged();
          return this;
        }
        void setSessionId(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000008;
          sessionId_ = value;
          onChanged();
        }
        
        // @@protoc_insertion_point(builder_scope:UpdateActionProto)
      }
      
      static {
        defaultInstance = new UpdateActionProto(true);
        defaultInstance.initFields();
      }
      
      // @@protoc_insertion_point(class_scope:UpdateActionProto)
    }
    
    public interface TransactionActionProtoOrBuilder
        extends com.google.protobuf.MessageOrBuilder {
      
      // required string tableName = 1;
      boolean hasTableName();
      String getTableName();
      
      // repeated .InsertActionProto inserts = 2;
      java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto> 
          getInsertsList();
      com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto getInserts(int index);
      int getInsertsCount();
      java.util.List<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProtoOrBuilder> 
          getInsertsOrBuilderList();
      com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProtoOrBuilder getInsertsOrBuilder(
          int index);
      
      // repeated .UpdateActionProto updates = 3;
      java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto> 
          getUpdatesList();
      com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto getUpdates(int index);
      int getUpdatesCount();
      java.util.List<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProtoOrBuilder> 
          getUpdatesOrBuilderList();
      com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProtoOrBuilder getUpdatesOrBuilder(
          int index);
      
      // repeated .DeleteActionProto deletes = 4;
      java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto> 
          getDeletesList();
      com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto getDeletes(int index);
      int getDeletesCount();
      java.util.List<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProtoOrBuilder> 
          getDeletesOrBuilderList();
      com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProtoOrBuilder getDeletesOrBuilder(
          int index);
    }
    public static final class TransactionActionProto extends
        com.google.protobuf.GeneratedMessage
        implements TransactionActionProtoOrBuilder {
      // Use TransactionActionProto.newBuilder() to construct.
      private TransactionActionProto(Builder builder) {
        super(builder);
      }
      private TransactionActionProto(boolean noInit) {}
      
      private static final TransactionActionProto defaultInstance;
      public static TransactionActionProto getDefaultInstance() {
        return defaultInstance;
      }
      
      public TransactionActionProto getDefaultInstanceForType() {
        return defaultInstance;
      }
      
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_TransactionActionProto_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_TransactionActionProto_fieldAccessorTable;
      }
      
      private int bitField0_;
      // required string tableName = 1;
      public static final int TABLENAME_FIELD_NUMBER = 1;
      private java.lang.Object tableName_;
      public boolean hasTableName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public String getTableName() {
        java.lang.Object ref = tableName_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (com.google.protobuf.Internal.isValidUtf8(bs)) {
            tableName_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getTableNameBytes() {
        java.lang.Object ref = tableName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          tableName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // repeated .InsertActionProto inserts = 2;
      public static final int INSERTS_FIELD_NUMBER = 2;
      private java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto> inserts_;
      public java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto> getInsertsList() {
        return inserts_;
      }
      public java.util.List<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProtoOrBuilder> 
          getInsertsOrBuilderList() {
        return inserts_;
      }
      public int getInsertsCount() {
        return inserts_.size();
      }
      public com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto getInserts(int index) {
        return inserts_.get(index);
      }
      public com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProtoOrBuilder getInsertsOrBuilder(
          int index) {
        return inserts_.get(index);
      }
      
      // repeated .UpdateActionProto updates = 3;
      public static final int UPDATES_FIELD_NUMBER = 3;
      private java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto> updates_;
      public java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto> getUpdatesList() {
        return updates_;
      }
      public java.util.List<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProtoOrBuilder> 
          getUpdatesOrBuilderList() {
        return updates_;
      }
      public int getUpdatesCount() {
        return updates_.size();
      }
      public com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto getUpdates(int index) {
        return updates_.get(index);
      }
      public com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProtoOrBuilder getUpdatesOrBuilder(
          int index) {
        return updates_.get(index);
      }
      
      // repeated .DeleteActionProto deletes = 4;
      public static final int DELETES_FIELD_NUMBER = 4;
      private java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto> deletes_;
      public java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto> getDeletesList() {
        return deletes_;
      }
      public java.util.List<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProtoOrBuilder> 
          getDeletesOrBuilderList() {
        return deletes_;
      }
      public int getDeletesCount() {
        return deletes_.size();
      }
      public com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto getDeletes(int index) {
        return deletes_.get(index);
      }
      public com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProtoOrBuilder getDeletesOrBuilder(
          int index) {
        return deletes_.get(index);
      }
      
      private void initFields() {
        tableName_ = "";
        inserts_ = java.util.Collections.emptyList();
        updates_ = java.util.Collections.emptyList();
        deletes_ = java.util.Collections.emptyList();
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized != -1) return isInitialized == 1;
        
        if (!hasTableName()) {
          memoizedIsInitialized = 0;
          return false;
        }
        for (int i = 0; i < getInsertsCount(); i++) {
          if (!getInserts(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        for (int i = 0; i < getUpdatesCount(); i++) {
          if (!getUpdates(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        for (int i = 0; i < getDeletesCount(); i++) {
          if (!getDeletes(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        memoizedIsInitialized = 1;
        return true;
      }
      
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeBytes(1, getTableNameBytes());
        }
        for (int i = 0; i < inserts_.size(); i++) {
          output.writeMessage(2, inserts_.get(i));
        }
        for (int i = 0; i < updates_.size(); i++) {
          output.writeMessage(3, updates_.get(i));
        }
        for (int i = 0; i < deletes_.size(); i++) {
          output.writeMessage(4, deletes_.get(i));
        }
        getUnknownFields().writeTo(output);
      }
      
      private int memoizedSerializedSize = -1;
      public int getSerializedSize() {
        int size = memoizedSerializedSize;
        if (size != -1) return size;
      
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(1, getTableNameBytes());
        }
        for (int i = 0; i < inserts_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, inserts_.get(i));
        }
        for (int i = 0; i < updates_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, updates_.get(i));
        }
        for (int i = 0; i < deletes_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(4, deletes_.get(i));
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSerializedSize = size;
        return size;
      }
      
      private static final long serialVersionUID = 0L;
      @java.lang.Override
      protected java.lang.Object writeReplace()
          throws java.io.ObjectStreamException {
        return super.writeReplace();
      }
      
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto)) {
          return super.equals(obj);
        }
        com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto other = (com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto) obj;
        
        boolean result = true;
        result = result && (hasTableName() == other.hasTableName());
        if (hasTableName()) {
          result = result && getTableName()
              .equals(other.getTableName());
        }
        result = result && getInsertsList()
            .equals(other.getInsertsList());
        result = result && getUpdatesList()
            .equals(other.getUpdatesList());
        result = result && getDeletesList()
            .equals(other.getDeletesList());
        result = result &&
            getUnknownFields().equals(other.getUnknownFields());
        return result;
      }
      
      @java.lang.Override
      public int hashCode() {
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (hasTableName()) {
          hash = (37 * hash) + TABLENAME_FIELD_NUMBER;
          hash = (53 * hash) + getTableName().hashCode();
        }
        if (getInsertsCount() > 0) {
          hash = (37 * hash) + INSERTS_FIELD_NUMBER;
          hash = (53 * hash) + getInsertsList().hashCode();
        }
        if (getUpdatesCount() > 0) {
          hash = (37 * hash) + UPDATES_FIELD_NUMBER;
          hash = (53 * hash) + getUpdatesList().hashCode();
        }
        if (getDeletesCount() > 0) {
          hash = (37 * hash) + DELETES_FIELD_NUMBER;
          hash = (53 * hash) + getDeletesList().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        return hash;
      }
      
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      
      public static Builder newBuilder() { return Builder.create(); }
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder(com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() { return newBuilder(this); }
      
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder<Builder>
         implements com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProtoOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_TransactionActionProto_descriptor;
        }
        
        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_TransactionActionProto_fieldAccessorTable;
        }
        
        // Construct using com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
        
        private Builder(BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
            getInsertsFieldBuilder();
            getUpdatesFieldBuilder();
            getDeletesFieldBuilder();
          }
        }
        private static Builder create() {
          return new Builder();
        }
        
        public Builder clear() {
          super.clear();
          tableName_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          if (insertsBuilder_ == null) {
            inserts_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            insertsBuilder_.clear();
          }
          if (updatesBuilder_ == null) {
            updates_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            updatesBuilder_.clear();
          }
          if (deletesBuilder_ == null) {
            deletes_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            deletesBuilder_.clear();
          }
          return this;
        }
        
        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }
        
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto.getDescriptor();
        }
        
        public com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto getDefaultInstanceForType() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto.getDefaultInstance();
        }
        
        public com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto build() {
          com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
        
        private com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto buildParsed()
            throws com.google.protobuf.InvalidProtocolBufferException {
          com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(
              result).asInvalidProtocolBufferException();
          }
          return result;
        }
        
        public com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto buildPartial() {
          com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto result = new com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.tableName_ = tableName_;
          if (insertsBuilder_ == null) {
            if (((bitField0_ & 0x00000002) == 0x00000002)) {
              inserts_ = java.util.Collections.unmodifiableList(inserts_);
              bitField0_ = (bitField0_ & ~0x00000002);
            }
            result.inserts_ = inserts_;
          } else {
            result.inserts_ = insertsBuilder_.build();
          }
          if (updatesBuilder_ == null) {
            if (((bitField0_ & 0x00000004) == 0x00000004)) {
              updates_ = java.util.Collections.unmodifiableList(updates_);
              bitField0_ = (bitField0_ & ~0x00000004);
            }
            result.updates_ = updates_;
          } else {
            result.updates_ = updatesBuilder_.build();
          }
          if (deletesBuilder_ == null) {
            if (((bitField0_ & 0x00000008) == 0x00000008)) {
              deletes_ = java.util.Collections.unmodifiableList(deletes_);
              bitField0_ = (bitField0_ & ~0x00000008);
            }
            result.deletes_ = deletes_;
          } else {
            result.deletes_ = deletesBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
        
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto) {
            return mergeFrom((com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        
        public Builder mergeFrom(com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto other) {
          if (other == com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto.getDefaultInstance()) return this;
          if (other.hasTableName()) {
            setTableName(other.getTableName());
          }
          if (insertsBuilder_ == null) {
            if (!other.inserts_.isEmpty()) {
              if (inserts_.isEmpty()) {
                inserts_ = other.inserts_;
                bitField0_ = (bitField0_ & ~0x00000002);
              } else {
                ensureInsertsIsMutable();
                inserts_.addAll(other.inserts_);
              }
              onChanged();
            }
          } else {
            if (!other.inserts_.isEmpty()) {
              if (insertsBuilder_.isEmpty()) {
                insertsBuilder_.dispose();
                insertsBuilder_ = null;
                inserts_ = other.inserts_;
                bitField0_ = (bitField0_ & ~0x00000002);
                insertsBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getInsertsFieldBuilder() : null;
              } else {
                insertsBuilder_.addAllMessages(other.inserts_);
              }
            }
          }
          if (updatesBuilder_ == null) {
            if (!other.updates_.isEmpty()) {
              if (updates_.isEmpty()) {
                updates_ = other.updates_;
                bitField0_ = (bitField0_ & ~0x00000004);
              } else {
                ensureUpdatesIsMutable();
                updates_.addAll(other.updates_);
              }
              onChanged();
            }
          } else {
            if (!other.updates_.isEmpty()) {
              if (updatesBuilder_.isEmpty()) {
                updatesBuilder_.dispose();
                updatesBuilder_ = null;
                updates_ = other.updates_;
                bitField0_ = (bitField0_ & ~0x00000004);
                updatesBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getUpdatesFieldBuilder() : null;
              } else {
                updatesBuilder_.addAllMessages(other.updates_);
              }
            }
          }
          if (deletesBuilder_ == null) {
            if (!other.deletes_.isEmpty()) {
              if (deletes_.isEmpty()) {
                deletes_ = other.deletes_;
                bitField0_ = (bitField0_ & ~0x00000008);
              } else {
                ensureDeletesIsMutable();
                deletes_.addAll(other.deletes_);
              }
              onChanged();
            }
          } else {
            if (!other.deletes_.isEmpty()) {
              if (deletesBuilder_.isEmpty()) {
                deletesBuilder_.dispose();
                deletesBuilder_ = null;
                deletes_ = other.deletes_;
                bitField0_ = (bitField0_ & ~0x00000008);
                deletesBuilder_ = 
                  com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                     getDeletesFieldBuilder() : null;
              } else {
                deletesBuilder_.addAllMessages(other.deletes_);
              }
            }
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }
        
        public final boolean isInitialized() {
          if (!hasTableName()) {
            
            return false;
          }
          for (int i = 0; i < getInsertsCount(); i++) {
            if (!getInserts(i).isInitialized()) {
              
              return false;
            }
          }
          for (int i = 0; i < getUpdatesCount(); i++) {
            if (!getUpdates(i).isInitialized()) {
              
              return false;
            }
          }
          for (int i = 0; i < getDeletesCount(); i++) {
            if (!getDeletes(i).isInitialized()) {
              
              return false;
            }
          }
          return true;
        }
        
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder(
              this.getUnknownFields());
          while (true) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  this.setUnknownFields(unknownFields.build());
                  onChanged();
                  return this;
                }
                break;
              }
              case 10: {
                bitField0_ |= 0x00000001;
                tableName_ = input.readBytes();
                break;
              }
              case 18: {
                com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto.Builder subBuilder = com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto.newBuilder();
                input.readMessage(subBuilder, extensionRegistry);
                addInserts(subBuilder.buildPartial());
                break;
              }
              case 26: {
                com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto.Builder subBuilder = com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto.newBuilder();
                input.readMessage(subBuilder, extensionRegistry);
                addUpdates(subBuilder.buildPartial());
                break;
              }
              case 34: {
                com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto.Builder subBuilder = com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto.newBuilder();
                input.readMessage(subBuilder, extensionRegistry);
                addDeletes(subBuilder.buildPartial());
                break;
              }
            }
          }
        }
        
        private int bitField0_;
        
        // required string tableName = 1;
        private java.lang.Object tableName_ = "";
        public boolean hasTableName() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        public String getTableName() {
          java.lang.Object ref = tableName_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            tableName_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setTableName(String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000001;
          tableName_ = value;
          onChanged();
          return this;
        }
        public Builder clearTableName() {
          bitField0_ = (bitField0_ & ~0x00000001);
          tableName_ = getDefaultInstance().getTableName();
          onChanged();
          return this;
        }
        void setTableName(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000001;
          tableName_ = value;
          onChanged();
        }
        
        // repeated .InsertActionProto inserts = 2;
        private java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto> inserts_ =
          java.util.Collections.emptyList();
        private void ensureInsertsIsMutable() {
          if (!((bitField0_ & 0x00000002) == 0x00000002)) {
            inserts_ = new java.util.ArrayList<com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto>(inserts_);
            bitField0_ |= 0x00000002;
           }
        }
        
        private com.google.protobuf.RepeatedFieldBuilder<
            com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto, com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProtoOrBuilder> insertsBuilder_;
        
        public java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto> getInsertsList() {
          if (insertsBuilder_ == null) {
            return java.util.Collections.unmodifiableList(inserts_);
          } else {
            return insertsBuilder_.getMessageList();
          }
        }
        public int getInsertsCount() {
          if (insertsBuilder_ == null) {
            return inserts_.size();
          } else {
            return insertsBuilder_.getCount();
          }
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto getInserts(int index) {
          if (insertsBuilder_ == null) {
            return inserts_.get(index);
          } else {
            return insertsBuilder_.getMessage(index);
          }
        }
        public Builder setInserts(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto value) {
          if (insertsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureInsertsIsMutable();
            inserts_.set(index, value);
            onChanged();
          } else {
            insertsBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setInserts(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto.Builder builderForValue) {
          if (insertsBuilder_ == null) {
            ensureInsertsIsMutable();
            inserts_.set(index, builderForValue.build());
            onChanged();
          } else {
            insertsBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addInserts(com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto value) {
          if (insertsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureInsertsIsMutable();
            inserts_.add(value);
            onChanged();
          } else {
            insertsBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addInserts(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto value) {
          if (insertsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureInsertsIsMutable();
            inserts_.add(index, value);
            onChanged();
          } else {
            insertsBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addInserts(
            com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto.Builder builderForValue) {
          if (insertsBuilder_ == null) {
            ensureInsertsIsMutable();
            inserts_.add(builderForValue.build());
            onChanged();
          } else {
            insertsBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addInserts(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto.Builder builderForValue) {
          if (insertsBuilder_ == null) {
            ensureInsertsIsMutable();
            inserts_.add(index, builderForValue.build());
            onChanged();
          } else {
            insertsBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllInserts(
            java.lang.Iterable<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto> values) {
          if (insertsBuilder_ == null) {
            ensureInsertsIsMutable();
            super.addAll(values, inserts_);
            onChanged();
          } else {
            insertsBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearInserts() {
          if (insertsBuilder_ == null) {
            inserts_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
            onChanged();
          } else {
            insertsBuilder_.clear();
          }
          return this;
        }
        public Builder removeInserts(int index) {
          if (insertsBuilder_ == null) {
            ensureInsertsIsMutable();
            inserts_.remove(index);
            onChanged();
          } else {
            insertsBuilder_.remove(index);
          }
          return this;
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto.Builder getInsertsBuilder(
            int index) {
          return getInsertsFieldBuilder().getBuilder(index);
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProtoOrBuilder getInsertsOrBuilder(
            int index) {
          if (insertsBuilder_ == null) {
            return inserts_.get(index);  } else {
            return insertsBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProtoOrBuilder> 
             getInsertsOrBuilderList() {
          if (insertsBuilder_ != null) {
            return insertsBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(inserts_);
          }
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto.Builder addInsertsBuilder() {
          return getInsertsFieldBuilder().addBuilder(
              com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto.getDefaultInstance());
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto.Builder addInsertsBuilder(
            int index) {
          return getInsertsFieldBuilder().addBuilder(
              index, com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto.getDefaultInstance());
        }
        public java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto.Builder> 
             getInsertsBuilderList() {
          return getInsertsFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto, com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProtoOrBuilder> 
            getInsertsFieldBuilder() {
          if (insertsBuilder_ == null) {
            insertsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto, com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProtoOrBuilder>(
                    inserts_,
                    ((bitField0_ & 0x00000002) == 0x00000002),
                    getParentForChildren(),
                    isClean());
            inserts_ = null;
          }
          return insertsBuilder_;
        }
        
        // repeated .UpdateActionProto updates = 3;
        private java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto> updates_ =
          java.util.Collections.emptyList();
        private void ensureUpdatesIsMutable() {
          if (!((bitField0_ & 0x00000004) == 0x00000004)) {
            updates_ = new java.util.ArrayList<com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto>(updates_);
            bitField0_ |= 0x00000004;
           }
        }
        
        private com.google.protobuf.RepeatedFieldBuilder<
            com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto, com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProtoOrBuilder> updatesBuilder_;
        
        public java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto> getUpdatesList() {
          if (updatesBuilder_ == null) {
            return java.util.Collections.unmodifiableList(updates_);
          } else {
            return updatesBuilder_.getMessageList();
          }
        }
        public int getUpdatesCount() {
          if (updatesBuilder_ == null) {
            return updates_.size();
          } else {
            return updatesBuilder_.getCount();
          }
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto getUpdates(int index) {
          if (updatesBuilder_ == null) {
            return updates_.get(index);
          } else {
            return updatesBuilder_.getMessage(index);
          }
        }
        public Builder setUpdates(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto value) {
          if (updatesBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureUpdatesIsMutable();
            updates_.set(index, value);
            onChanged();
          } else {
            updatesBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setUpdates(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto.Builder builderForValue) {
          if (updatesBuilder_ == null) {
            ensureUpdatesIsMutable();
            updates_.set(index, builderForValue.build());
            onChanged();
          } else {
            updatesBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addUpdates(com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto value) {
          if (updatesBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureUpdatesIsMutable();
            updates_.add(value);
            onChanged();
          } else {
            updatesBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addUpdates(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto value) {
          if (updatesBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureUpdatesIsMutable();
            updates_.add(index, value);
            onChanged();
          } else {
            updatesBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addUpdates(
            com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto.Builder builderForValue) {
          if (updatesBuilder_ == null) {
            ensureUpdatesIsMutable();
            updates_.add(builderForValue.build());
            onChanged();
          } else {
            updatesBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addUpdates(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto.Builder builderForValue) {
          if (updatesBuilder_ == null) {
            ensureUpdatesIsMutable();
            updates_.add(index, builderForValue.build());
            onChanged();
          } else {
            updatesBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllUpdates(
            java.lang.Iterable<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto> values) {
          if (updatesBuilder_ == null) {
            ensureUpdatesIsMutable();
            super.addAll(values, updates_);
            onChanged();
          } else {
            updatesBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearUpdates() {
          if (updatesBuilder_ == null) {
            updates_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000004);
            onChanged();
          } else {
            updatesBuilder_.clear();
          }
          return this;
        }
        public Builder removeUpdates(int index) {
          if (updatesBuilder_ == null) {
            ensureUpdatesIsMutable();
            updates_.remove(index);
            onChanged();
          } else {
            updatesBuilder_.remove(index);
          }
          return this;
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto.Builder getUpdatesBuilder(
            int index) {
          return getUpdatesFieldBuilder().getBuilder(index);
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProtoOrBuilder getUpdatesOrBuilder(
            int index) {
          if (updatesBuilder_ == null) {
            return updates_.get(index);  } else {
            return updatesBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProtoOrBuilder> 
             getUpdatesOrBuilderList() {
          if (updatesBuilder_ != null) {
            return updatesBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(updates_);
          }
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto.Builder addUpdatesBuilder() {
          return getUpdatesFieldBuilder().addBuilder(
              com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto.getDefaultInstance());
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto.Builder addUpdatesBuilder(
            int index) {
          return getUpdatesFieldBuilder().addBuilder(
              index, com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto.getDefaultInstance());
        }
        public java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto.Builder> 
             getUpdatesBuilderList() {
          return getUpdatesFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto, com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProtoOrBuilder> 
            getUpdatesFieldBuilder() {
          if (updatesBuilder_ == null) {
            updatesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto, com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProtoOrBuilder>(
                    updates_,
                    ((bitField0_ & 0x00000004) == 0x00000004),
                    getParentForChildren(),
                    isClean());
            updates_ = null;
          }
          return updatesBuilder_;
        }
        
        // repeated .DeleteActionProto deletes = 4;
        private java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto> deletes_ =
          java.util.Collections.emptyList();
        private void ensureDeletesIsMutable() {
          if (!((bitField0_ & 0x00000008) == 0x00000008)) {
            deletes_ = new java.util.ArrayList<com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto>(deletes_);
            bitField0_ |= 0x00000008;
           }
        }
        
        private com.google.protobuf.RepeatedFieldBuilder<
            com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto, com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProtoOrBuilder> deletesBuilder_;
        
        public java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto> getDeletesList() {
          if (deletesBuilder_ == null) {
            return java.util.Collections.unmodifiableList(deletes_);
          } else {
            return deletesBuilder_.getMessageList();
          }
        }
        public int getDeletesCount() {
          if (deletesBuilder_ == null) {
            return deletes_.size();
          } else {
            return deletesBuilder_.getCount();
          }
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto getDeletes(int index) {
          if (deletesBuilder_ == null) {
            return deletes_.get(index);
          } else {
            return deletesBuilder_.getMessage(index);
          }
        }
        public Builder setDeletes(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto value) {
          if (deletesBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureDeletesIsMutable();
            deletes_.set(index, value);
            onChanged();
          } else {
            deletesBuilder_.setMessage(index, value);
          }
          return this;
        }
        public Builder setDeletes(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto.Builder builderForValue) {
          if (deletesBuilder_ == null) {
            ensureDeletesIsMutable();
            deletes_.set(index, builderForValue.build());
            onChanged();
          } else {
            deletesBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addDeletes(com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto value) {
          if (deletesBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureDeletesIsMutable();
            deletes_.add(value);
            onChanged();
          } else {
            deletesBuilder_.addMessage(value);
          }
          return this;
        }
        public Builder addDeletes(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto value) {
          if (deletesBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureDeletesIsMutable();
            deletes_.add(index, value);
            onChanged();
          } else {
            deletesBuilder_.addMessage(index, value);
          }
          return this;
        }
        public Builder addDeletes(
            com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto.Builder builderForValue) {
          if (deletesBuilder_ == null) {
            ensureDeletesIsMutable();
            deletes_.add(builderForValue.build());
            onChanged();
          } else {
            deletesBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        public Builder addDeletes(
            int index, com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto.Builder builderForValue) {
          if (deletesBuilder_ == null) {
            ensureDeletesIsMutable();
            deletes_.add(index, builderForValue.build());
            onChanged();
          } else {
            deletesBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        public Builder addAllDeletes(
            java.lang.Iterable<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto> values) {
          if (deletesBuilder_ == null) {
            ensureDeletesIsMutable();
            super.addAll(values, deletes_);
            onChanged();
          } else {
            deletesBuilder_.addAllMessages(values);
          }
          return this;
        }
        public Builder clearDeletes() {
          if (deletesBuilder_ == null) {
            deletes_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000008);
            onChanged();
          } else {
            deletesBuilder_.clear();
          }
          return this;
        }
        public Builder removeDeletes(int index) {
          if (deletesBuilder_ == null) {
            ensureDeletesIsMutable();
            deletes_.remove(index);
            onChanged();
          } else {
            deletesBuilder_.remove(index);
          }
          return this;
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto.Builder getDeletesBuilder(
            int index) {
          return getDeletesFieldBuilder().getBuilder(index);
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProtoOrBuilder getDeletesOrBuilder(
            int index) {
          if (deletesBuilder_ == null) {
            return deletes_.get(index);  } else {
            return deletesBuilder_.getMessageOrBuilder(index);
          }
        }
        public java.util.List<? extends com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProtoOrBuilder> 
             getDeletesOrBuilderList() {
          if (deletesBuilder_ != null) {
            return deletesBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(deletes_);
          }
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto.Builder addDeletesBuilder() {
          return getDeletesFieldBuilder().addBuilder(
              com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto.getDefaultInstance());
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto.Builder addDeletesBuilder(
            int index) {
          return getDeletesFieldBuilder().addBuilder(
              index, com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto.getDefaultInstance());
        }
        public java.util.List<com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto.Builder> 
             getDeletesBuilderList() {
          return getDeletesFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilder<
            com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto, com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProtoOrBuilder> 
            getDeletesFieldBuilder() {
          if (deletesBuilder_ == null) {
            deletesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
                com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto, com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProtoOrBuilder>(
                    deletes_,
                    ((bitField0_ & 0x00000008) == 0x00000008),
                    getParentForChildren(),
                    isClean());
            deletes_ = null;
          }
          return deletesBuilder_;
        }
        
        // @@protoc_insertion_point(builder_scope:TransactionActionProto)
      }
      
      static {
        defaultInstance = new TransactionActionProto(true);
        defaultInstance.initFields();
      }
      
      // @@protoc_insertion_point(class_scope:TransactionActionProto)
    }
    
    public interface ColumnStructProtoOrBuilder
        extends com.google.protobuf.MessageOrBuilder {
      
      // required string tableName = 1;
      boolean hasTableName();
      String getTableName();
      
      // required string familyName = 2;
      boolean hasFamilyName();
      String getFamilyName();
      
      // required string columnName = 3;
      boolean hasColumnName();
      String getColumnName();
      
      // optional .DataTypeProtos dataType = 4;
      boolean hasDataType();
      com.alibaba.wasp.protobuf.generated.MetaProtos.DataTypeProtos getDataType();
      
      // optional bytes value = 5;
      boolean hasValue();
      com.google.protobuf.ByteString getValue();
      
      // optional uint32 compareOp = 6;
      boolean hasCompareOp();
      int getCompareOp();
    }
    public static final class ColumnStructProto extends
        com.google.protobuf.GeneratedMessage
        implements ColumnStructProtoOrBuilder {
      // Use ColumnStructProto.newBuilder() to construct.
      private ColumnStructProto(Builder builder) {
        super(builder);
      }
      private ColumnStructProto(boolean noInit) {}
      
      private static final ColumnStructProto defaultInstance;
      public static ColumnStructProto getDefaultInstance() {
        return defaultInstance;
      }
      
      public ColumnStructProto getDefaultInstanceForType() {
        return defaultInstance;
      }
      
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_ColumnStructProto_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_ColumnStructProto_fieldAccessorTable;
      }
      
      private int bitField0_;
      // required string tableName = 1;
      public static final int TABLENAME_FIELD_NUMBER = 1;
      private java.lang.Object tableName_;
      public boolean hasTableName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public String getTableName() {
        java.lang.Object ref = tableName_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (com.google.protobuf.Internal.isValidUtf8(bs)) {
            tableName_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getTableNameBytes() {
        java.lang.Object ref = tableName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          tableName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // required string familyName = 2;
      public static final int FAMILYNAME_FIELD_NUMBER = 2;
      private java.lang.Object familyName_;
      public boolean hasFamilyName() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public String getFamilyName() {
        java.lang.Object ref = familyName_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (com.google.protobuf.Internal.isValidUtf8(bs)) {
            familyName_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getFamilyNameBytes() {
        java.lang.Object ref = familyName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          familyName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // required string columnName = 3;
      public static final int COLUMNNAME_FIELD_NUMBER = 3;
      private java.lang.Object columnName_;
      public boolean hasColumnName() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public String getColumnName() {
        java.lang.Object ref = columnName_;
        if (ref instanceof String) {
          return (String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          String s = bs.toStringUtf8();
          if (com.google.protobuf.Internal.isValidUtf8(bs)) {
            columnName_ = s;
          }
          return s;
        }
      }
      private com.google.protobuf.ByteString getColumnNameBytes() {
        java.lang.Object ref = columnName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8((String) ref);
          columnName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      
      // optional .DataTypeProtos dataType = 4;
      public static final int DATATYPE_FIELD_NUMBER = 4;
      private com.alibaba.wasp.protobuf.generated.MetaProtos.DataTypeProtos dataType_;
      public boolean hasDataType() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      public com.alibaba.wasp.protobuf.generated.MetaProtos.DataTypeProtos getDataType() {
        return dataType_;
      }
      
      // optional bytes value = 5;
      public static final int VALUE_FIELD_NUMBER = 5;
      private com.google.protobuf.ByteString value_;
      public boolean hasValue() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      public com.google.protobuf.ByteString getValue() {
        return value_;
      }
      
      // optional uint32 compareOp = 6;
      public static final int COMPAREOP_FIELD_NUMBER = 6;
      private int compareOp_;
      public boolean hasCompareOp() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      public int getCompareOp() {
        return compareOp_;
      }
      
      private void initFields() {
        tableName_ = "";
        familyName_ = "";
        columnName_ = "";
        dataType_ = com.alibaba.wasp.protobuf.generated.MetaProtos.DataTypeProtos.TYPE_INT32;
        value_ = com.google.protobuf.ByteString.EMPTY;
        compareOp_ = 0;
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized != -1) return isInitialized == 1;
        
        if (!hasTableName()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasFamilyName()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasColumnName()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
      
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeBytes(1, getTableNameBytes());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeBytes(2, getFamilyNameBytes());
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeBytes(3, getColumnNameBytes());
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeEnum(4, dataType_.getNumber());
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          output.writeBytes(5, value_);
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          output.writeUInt32(6, compareOp_);
        }
        getUnknownFields().writeTo(output);
      }
      
      private int memoizedSerializedSize = -1;
      public int getSerializedSize() {
        int size = memoizedSerializedSize;
        if (size != -1) return size;
      
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(1, getTableNameBytes());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(2, getFamilyNameBytes());
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(3, getColumnNameBytes());
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(4, dataType_.getNumber());
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(5, value_);
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(6, compareOp_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSerializedSize = size;
        return size;
      }
      
      private static final long serialVersionUID = 0L;
      @java.lang.Override
      protected java.lang.Object writeReplace()
          throws java.io.ObjectStreamException {
        return super.writeReplace();
      }
      
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto)) {
          return super.equals(obj);
        }
        com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto other = (com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto) obj;
        
        boolean result = true;
        result = result && (hasTableName() == other.hasTableName());
        if (hasTableName()) {
          result = result && getTableName()
              .equals(other.getTableName());
        }
        result = result && (hasFamilyName() == other.hasFamilyName());
        if (hasFamilyName()) {
          result = result && getFamilyName()
              .equals(other.getFamilyName());
        }
        result = result && (hasColumnName() == other.hasColumnName());
        if (hasColumnName()) {
          result = result && getColumnName()
              .equals(other.getColumnName());
        }
        result = result && (hasDataType() == other.hasDataType());
        if (hasDataType()) {
          result = result &&
              (getDataType() == other.getDataType());
        }
        result = result && (hasValue() == other.hasValue());
        if (hasValue()) {
          result = result && getValue()
              .equals(other.getValue());
        }
        result = result && (hasCompareOp() == other.hasCompareOp());
        if (hasCompareOp()) {
          result = result && (getCompareOp()
              == other.getCompareOp());
        }
        result = result &&
            getUnknownFields().equals(other.getUnknownFields());
        return result;
      }
      
      @java.lang.Override
      public int hashCode() {
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (hasTableName()) {
          hash = (37 * hash) + TABLENAME_FIELD_NUMBER;
          hash = (53 * hash) + getTableName().hashCode();
        }
        if (hasFamilyName()) {
          hash = (37 * hash) + FAMILYNAME_FIELD_NUMBER;
          hash = (53 * hash) + getFamilyName().hashCode();
        }
        if (hasColumnName()) {
          hash = (37 * hash) + COLUMNNAME_FIELD_NUMBER;
          hash = (53 * hash) + getColumnName().hashCode();
        }
        if (hasDataType()) {
          hash = (37 * hash) + DATATYPE_FIELD_NUMBER;
          hash = (53 * hash) + hashEnum(getDataType());
        }
        if (hasValue()) {
          hash = (37 * hash) + VALUE_FIELD_NUMBER;
          hash = (53 * hash) + getValue().hashCode();
        }
        if (hasCompareOp()) {
          hash = (37 * hash) + COMPAREOP_FIELD_NUMBER;
          hash = (53 * hash) + getCompareOp();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        return hash;
      }
      
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      
      public static Builder newBuilder() { return Builder.create(); }
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder(com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() { return newBuilder(this); }
      
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder<Builder>
         implements com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProtoOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_ColumnStructProto_descriptor;
        }
        
        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_ColumnStructProto_fieldAccessorTable;
        }
        
        // Construct using com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
        
        private Builder(BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          }
        }
        private static Builder create() {
          return new Builder();
        }
        
        public Builder clear() {
          super.clear();
          tableName_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          familyName_ = "";
          bitField0_ = (bitField0_ & ~0x00000002);
          columnName_ = "";
          bitField0_ = (bitField0_ & ~0x00000004);
          dataType_ = com.alibaba.wasp.protobuf.generated.MetaProtos.DataTypeProtos.TYPE_INT32;
          bitField0_ = (bitField0_ & ~0x00000008);
          value_ = com.google.protobuf.ByteString.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000010);
          compareOp_ = 0;
          bitField0_ = (bitField0_ & ~0x00000020);
          return this;
        }
        
        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }
        
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.getDescriptor();
        }
        
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto getDefaultInstanceForType() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.getDefaultInstance();
        }
        
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto build() {
          com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
        
        private com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto buildParsed()
            throws com.google.protobuf.InvalidProtocolBufferException {
          com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(
              result).asInvalidProtocolBufferException();
          }
          return result;
        }
        
        public com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto buildPartial() {
          com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto result = new com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.tableName_ = tableName_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.familyName_ = familyName_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.columnName_ = columnName_;
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000008;
          }
          result.dataType_ = dataType_;
          if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
            to_bitField0_ |= 0x00000010;
          }
          result.value_ = value_;
          if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
            to_bitField0_ |= 0x00000020;
          }
          result.compareOp_ = compareOp_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
        
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto) {
            return mergeFrom((com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        
        public Builder mergeFrom(com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto other) {
          if (other == com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.getDefaultInstance()) return this;
          if (other.hasTableName()) {
            setTableName(other.getTableName());
          }
          if (other.hasFamilyName()) {
            setFamilyName(other.getFamilyName());
          }
          if (other.hasColumnName()) {
            setColumnName(other.getColumnName());
          }
          if (other.hasDataType()) {
            setDataType(other.getDataType());
          }
          if (other.hasValue()) {
            setValue(other.getValue());
          }
          if (other.hasCompareOp()) {
            setCompareOp(other.getCompareOp());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }
        
        public final boolean isInitialized() {
          if (!hasTableName()) {
            
            return false;
          }
          if (!hasFamilyName()) {
            
            return false;
          }
          if (!hasColumnName()) {
            
            return false;
          }
          return true;
        }
        
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder(
              this.getUnknownFields());
          while (true) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  this.setUnknownFields(unknownFields.build());
                  onChanged();
                  return this;
                }
                break;
              }
              case 10: {
                bitField0_ |= 0x00000001;
                tableName_ = input.readBytes();
                break;
              }
              case 18: {
                bitField0_ |= 0x00000002;
                familyName_ = input.readBytes();
                break;
              }
              case 26: {
                bitField0_ |= 0x00000004;
                columnName_ = input.readBytes();
                break;
              }
              case 32: {
                int rawValue = input.readEnum();
                com.alibaba.wasp.protobuf.generated.MetaProtos.DataTypeProtos value = com.alibaba.wasp.protobuf.generated.MetaProtos.DataTypeProtos.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(4, rawValue);
                } else {
                  bitField0_ |= 0x00000008;
                  dataType_ = value;
                }
                break;
              }
              case 42: {
                bitField0_ |= 0x00000010;
                value_ = input.readBytes();
                break;
              }
              case 48: {
                bitField0_ |= 0x00000020;
                compareOp_ = input.readUInt32();
                break;
              }
            }
          }
        }
        
        private int bitField0_;
        
        // required string tableName = 1;
        private java.lang.Object tableName_ = "";
        public boolean hasTableName() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        public String getTableName() {
          java.lang.Object ref = tableName_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            tableName_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setTableName(String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000001;
          tableName_ = value;
          onChanged();
          return this;
        }
        public Builder clearTableName() {
          bitField0_ = (bitField0_ & ~0x00000001);
          tableName_ = getDefaultInstance().getTableName();
          onChanged();
          return this;
        }
        void setTableName(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000001;
          tableName_ = value;
          onChanged();
        }
        
        // required string familyName = 2;
        private java.lang.Object familyName_ = "";
        public boolean hasFamilyName() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        public String getFamilyName() {
          java.lang.Object ref = familyName_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            familyName_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setFamilyName(String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000002;
          familyName_ = value;
          onChanged();
          return this;
        }
        public Builder clearFamilyName() {
          bitField0_ = (bitField0_ & ~0x00000002);
          familyName_ = getDefaultInstance().getFamilyName();
          onChanged();
          return this;
        }
        void setFamilyName(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000002;
          familyName_ = value;
          onChanged();
        }
        
        // required string columnName = 3;
        private java.lang.Object columnName_ = "";
        public boolean hasColumnName() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        public String getColumnName() {
          java.lang.Object ref = columnName_;
          if (!(ref instanceof String)) {
            String s = ((com.google.protobuf.ByteString) ref).toStringUtf8();
            columnName_ = s;
            return s;
          } else {
            return (String) ref;
          }
        }
        public Builder setColumnName(String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000004;
          columnName_ = value;
          onChanged();
          return this;
        }
        public Builder clearColumnName() {
          bitField0_ = (bitField0_ & ~0x00000004);
          columnName_ = getDefaultInstance().getColumnName();
          onChanged();
          return this;
        }
        void setColumnName(com.google.protobuf.ByteString value) {
          bitField0_ |= 0x00000004;
          columnName_ = value;
          onChanged();
        }
        
        // optional .DataTypeProtos dataType = 4;
        private com.alibaba.wasp.protobuf.generated.MetaProtos.DataTypeProtos dataType_ = com.alibaba.wasp.protobuf.generated.MetaProtos.DataTypeProtos.TYPE_INT32;
        public boolean hasDataType() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.DataTypeProtos getDataType() {
          return dataType_;
        }
        public Builder setDataType(com.alibaba.wasp.protobuf.generated.MetaProtos.DataTypeProtos value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000008;
          dataType_ = value;
          onChanged();
          return this;
        }
        public Builder clearDataType() {
          bitField0_ = (bitField0_ & ~0x00000008);
          dataType_ = com.alibaba.wasp.protobuf.generated.MetaProtos.DataTypeProtos.TYPE_INT32;
          onChanged();
          return this;
        }
        
        // optional bytes value = 5;
        private com.google.protobuf.ByteString value_ = com.google.protobuf.ByteString.EMPTY;
        public boolean hasValue() {
          return ((bitField0_ & 0x00000010) == 0x00000010);
        }
        public com.google.protobuf.ByteString getValue() {
          return value_;
        }
        public Builder setValue(com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000010;
          value_ = value;
          onChanged();
          return this;
        }
        public Builder clearValue() {
          bitField0_ = (bitField0_ & ~0x00000010);
          value_ = getDefaultInstance().getValue();
          onChanged();
          return this;
        }
        
        // optional uint32 compareOp = 6;
        private int compareOp_ ;
        public boolean hasCompareOp() {
          return ((bitField0_ & 0x00000020) == 0x00000020);
        }
        public int getCompareOp() {
          return compareOp_;
        }
        public Builder setCompareOp(int value) {
          bitField0_ |= 0x00000020;
          compareOp_ = value;
          onChanged();
          return this;
        }
        public Builder clearCompareOp() {
          bitField0_ = (bitField0_ & ~0x00000020);
          compareOp_ = 0;
          onChanged();
          return this;
        }
        
        // @@protoc_insertion_point(builder_scope:ColumnStructProto)
      }
      
      static {
        defaultInstance = new ColumnStructProto(true);
        defaultInstance.initFields();
      }
      
      // @@protoc_insertion_point(class_scope:ColumnStructProto)
    }
    
    public interface MessageProtoOrBuilder
        extends com.google.protobuf.MessageOrBuilder {
      
      // required .MessageProto.ActionType type = 1;
      boolean hasType();
      com.alibaba.wasp.protobuf.generated.MetaProtos.MessageProto.ActionType getType();
      
      // optional .DeleteActionProto delete = 2;
      boolean hasDelete();
      com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto getDelete();
      com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProtoOrBuilder getDeleteOrBuilder();
      
      // optional .UpdateActionProto update = 3;
      boolean hasUpdate();
      com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto getUpdate();
      com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProtoOrBuilder getUpdateOrBuilder();
      
      // optional .InsertActionProto insert = 4;
      boolean hasInsert();
      com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto getInsert();
      com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProtoOrBuilder getInsertOrBuilder();
      
      // optional .TransactionActionProto transaction = 5;
      boolean hasTransaction();
      com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto getTransaction();
      com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProtoOrBuilder getTransactionOrBuilder();
    }
    public static final class MessageProto extends
        com.google.protobuf.GeneratedMessage
        implements MessageProtoOrBuilder {
      // Use MessageProto.newBuilder() to construct.
      private MessageProto(Builder builder) {
        super(builder);
      }
      private MessageProto(boolean noInit) {}
      
      private static final MessageProto defaultInstance;
      public static MessageProto getDefaultInstance() {
        return defaultInstance;
      }
      
      public MessageProto getDefaultInstanceForType() {
        return defaultInstance;
      }
      
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_MessageProto_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_MessageProto_fieldAccessorTable;
      }
      
      public enum ActionType
          implements com.google.protobuf.ProtocolMessageEnum {
        UPDATE(0, 0),
        DELETE(1, 1),
        INSERT(2, 2),
        TRANSACTION(3, 3),
        ;
        
        public static final int UPDATE_VALUE = 0;
        public static final int DELETE_VALUE = 1;
        public static final int INSERT_VALUE = 2;
        public static final int TRANSACTION_VALUE = 3;
        
        
        public final int getNumber() { return value; }
        
        public static ActionType valueOf(int value) {
          switch (value) {
            case 0: return UPDATE;
            case 1: return DELETE;
            case 2: return INSERT;
            case 3: return TRANSACTION;
            default: return null;
          }
        }
        
        public static com.google.protobuf.Internal.EnumLiteMap<ActionType>
            internalGetValueMap() {
          return internalValueMap;
        }
        private static com.google.protobuf.Internal.EnumLiteMap<ActionType>
            internalValueMap =
              new com.google.protobuf.Internal.EnumLiteMap<ActionType>() {
                public ActionType findValueByNumber(int number) {
                  return ActionType.valueOf(number);
                }
              };
        
        public final com.google.protobuf.Descriptors.EnumValueDescriptor
            getValueDescriptor() {
          return getDescriptor().getValues().get(index);
        }
        public final com.google.protobuf.Descriptors.EnumDescriptor
            getDescriptorForType() {
          return getDescriptor();
        }
        public static final com.google.protobuf.Descriptors.EnumDescriptor
            getDescriptor() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.MessageProto.getDescriptor().getEnumTypes().get(0);
        }
        
        private static final ActionType[] VALUES = {
          UPDATE, DELETE, INSERT, TRANSACTION, 
        };
        
        public static ActionType valueOf(
            com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
          if (desc.getType() != getDescriptor()) {
            throw new java.lang.IllegalArgumentException(
              "EnumValueDescriptor is not for this type.");
          }
          return VALUES[desc.getIndex()];
        }
        
        private final int index;
        private final int value;
        
        private ActionType(int index, int value) {
          this.index = index;
          this.value = value;
        }
        
        // @@protoc_insertion_point(enum_scope:MessageProto.ActionType)
      }
      
      private int bitField0_;
      // required .MessageProto.ActionType type = 1;
      public static final int TYPE_FIELD_NUMBER = 1;
      private com.alibaba.wasp.protobuf.generated.MetaProtos.MessageProto.ActionType type_;
      public boolean hasType() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      public com.alibaba.wasp.protobuf.generated.MetaProtos.MessageProto.ActionType getType() {
        return type_;
      }
      
      // optional .DeleteActionProto delete = 2;
      public static final int DELETE_FIELD_NUMBER = 2;
      private com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto delete_;
      public boolean hasDelete() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      public com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto getDelete() {
        return delete_;
      }
      public com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProtoOrBuilder getDeleteOrBuilder() {
        return delete_;
      }
      
      // optional .UpdateActionProto update = 3;
      public static final int UPDATE_FIELD_NUMBER = 3;
      private com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto update_;
      public boolean hasUpdate() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      public com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto getUpdate() {
        return update_;
      }
      public com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProtoOrBuilder getUpdateOrBuilder() {
        return update_;
      }
      
      // optional .InsertActionProto insert = 4;
      public static final int INSERT_FIELD_NUMBER = 4;
      private com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto insert_;
      public boolean hasInsert() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      public com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto getInsert() {
        return insert_;
      }
      public com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProtoOrBuilder getInsertOrBuilder() {
        return insert_;
      }
      
      // optional .TransactionActionProto transaction = 5;
      public static final int TRANSACTION_FIELD_NUMBER = 5;
      private com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto transaction_;
      public boolean hasTransaction() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      public com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto getTransaction() {
        return transaction_;
      }
      public com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProtoOrBuilder getTransactionOrBuilder() {
        return transaction_;
      }
      
      private void initFields() {
        type_ = com.alibaba.wasp.protobuf.generated.MetaProtos.MessageProto.ActionType.UPDATE;
        delete_ = com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto.getDefaultInstance();
        update_ = com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto.getDefaultInstance();
        insert_ = com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto.getDefaultInstance();
        transaction_ = com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto.getDefaultInstance();
      }
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized != -1) return isInitialized == 1;
        
        if (!hasType()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (hasDelete()) {
          if (!getDelete().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasUpdate()) {
          if (!getUpdate().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasInsert()) {
          if (!getInsert().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasTransaction()) {
          if (!getTransaction().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        memoizedIsInitialized = 1;
        return true;
      }
      
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeEnum(1, type_.getNumber());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeMessage(2, delete_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeMessage(3, update_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeMessage(4, insert_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          output.writeMessage(5, transaction_);
        }
        getUnknownFields().writeTo(output);
      }
      
      private int memoizedSerializedSize = -1;
      public int getSerializedSize() {
        int size = memoizedSerializedSize;
        if (size != -1) return size;
      
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(1, type_.getNumber());
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, delete_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, update_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(4, insert_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(5, transaction_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSerializedSize = size;
        return size;
      }
      
      private static final long serialVersionUID = 0L;
      @java.lang.Override
      protected java.lang.Object writeReplace()
          throws java.io.ObjectStreamException {
        return super.writeReplace();
      }
      
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.alibaba.wasp.protobuf.generated.MetaProtos.MessageProto)) {
          return super.equals(obj);
        }
        com.alibaba.wasp.protobuf.generated.MetaProtos.MessageProto other = (com.alibaba.wasp.protobuf.generated.MetaProtos.MessageProto) obj;
        
        boolean result = true;
        result = result && (hasType() == other.hasType());
        if (hasType()) {
          result = result &&
              (getType() == other.getType());
        }
        result = result && (hasDelete() == other.hasDelete());
        if (hasDelete()) {
          result = result && getDelete()
              .equals(other.getDelete());
        }
        result = result && (hasUpdate() == other.hasUpdate());
        if (hasUpdate()) {
          result = result && getUpdate()
              .equals(other.getUpdate());
        }
        result = result && (hasInsert() == other.hasInsert());
        if (hasInsert()) {
          result = result && getInsert()
              .equals(other.getInsert());
        }
        result = result && (hasTransaction() == other.hasTransaction());
        if (hasTransaction()) {
          result = result && getTransaction()
              .equals(other.getTransaction());
        }
        result = result &&
            getUnknownFields().equals(other.getUnknownFields());
        return result;
      }
      
      @java.lang.Override
      public int hashCode() {
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (hasType()) {
          hash = (37 * hash) + TYPE_FIELD_NUMBER;
          hash = (53 * hash) + hashEnum(getType());
        }
        if (hasDelete()) {
          hash = (37 * hash) + DELETE_FIELD_NUMBER;
          hash = (53 * hash) + getDelete().hashCode();
        }
        if (hasUpdate()) {
          hash = (37 * hash) + UPDATE_FIELD_NUMBER;
          hash = (53 * hash) + getUpdate().hashCode();
        }
        if (hasInsert()) {
          hash = (37 * hash) + INSERT_FIELD_NUMBER;
          hash = (53 * hash) + getInsert().hashCode();
        }
        if (hasTransaction()) {
          hash = (37 * hash) + TRANSACTION_FIELD_NUMBER;
          hash = (53 * hash) + getTransaction().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        return hash;
      }
      
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.MessageProto parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.MessageProto parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.MessageProto parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.MessageProto parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.MessageProto parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.MessageProto parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.MessageProto parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.MessageProto parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.MessageProto parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static com.alibaba.wasp.protobuf.generated.MetaProtos.MessageProto parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      
      public static Builder newBuilder() { return Builder.create(); }
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder(com.alibaba.wasp.protobuf.generated.MetaProtos.MessageProto prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() { return newBuilder(this); }
      
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder<Builder>
         implements com.alibaba.wasp.protobuf.generated.MetaProtos.MessageProtoOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_MessageProto_descriptor;
        }
        
        protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.internal_static_MessageProto_fieldAccessorTable;
        }
        
        // Construct using com.alibaba.wasp.protobuf.generated.MetaProtos.MessageProto.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
        
        private Builder(BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
            getDeleteFieldBuilder();
            getUpdateFieldBuilder();
            getInsertFieldBuilder();
            getTransactionFieldBuilder();
          }
        }
        private static Builder create() {
          return new Builder();
        }
        
        public Builder clear() {
          super.clear();
          type_ = com.alibaba.wasp.protobuf.generated.MetaProtos.MessageProto.ActionType.UPDATE;
          bitField0_ = (bitField0_ & ~0x00000001);
          if (deleteBuilder_ == null) {
            delete_ = com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto.getDefaultInstance();
          } else {
            deleteBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          if (updateBuilder_ == null) {
            update_ = com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto.getDefaultInstance();
          } else {
            updateBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000004);
          if (insertBuilder_ == null) {
            insert_ = com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto.getDefaultInstance();
          } else {
            insertBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000008);
          if (transactionBuilder_ == null) {
            transaction_ = com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto.getDefaultInstance();
          } else {
            transactionBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000010);
          return this;
        }
        
        public Builder clone() {
          return create().mergeFrom(buildPartial());
        }
        
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.MessageProto.getDescriptor();
        }
        
        public com.alibaba.wasp.protobuf.generated.MetaProtos.MessageProto getDefaultInstanceForType() {
          return com.alibaba.wasp.protobuf.generated.MetaProtos.MessageProto.getDefaultInstance();
        }
        
        public com.alibaba.wasp.protobuf.generated.MetaProtos.MessageProto build() {
          com.alibaba.wasp.protobuf.generated.MetaProtos.MessageProto result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
        
        private com.alibaba.wasp.protobuf.generated.MetaProtos.MessageProto buildParsed()
            throws com.google.protobuf.InvalidProtocolBufferException {
          com.alibaba.wasp.protobuf.generated.MetaProtos.MessageProto result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(
              result).asInvalidProtocolBufferException();
          }
          return result;
        }
        
        public com.alibaba.wasp.protobuf.generated.MetaProtos.MessageProto buildPartial() {
          com.alibaba.wasp.protobuf.generated.MetaProtos.MessageProto result = new com.alibaba.wasp.protobuf.generated.MetaProtos.MessageProto(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.type_ = type_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          if (deleteBuilder_ == null) {
            result.delete_ = delete_;
          } else {
            result.delete_ = deleteBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          if (updateBuilder_ == null) {
            result.update_ = update_;
          } else {
            result.update_ = updateBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000008;
          }
          if (insertBuilder_ == null) {
            result.insert_ = insert_;
          } else {
            result.insert_ = insertBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
            to_bitField0_ |= 0x00000010;
          }
          if (transactionBuilder_ == null) {
            result.transaction_ = transaction_;
          } else {
            result.transaction_ = transactionBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
        
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.alibaba.wasp.protobuf.generated.MetaProtos.MessageProto) {
            return mergeFrom((com.alibaba.wasp.protobuf.generated.MetaProtos.MessageProto)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        
        public Builder mergeFrom(com.alibaba.wasp.protobuf.generated.MetaProtos.MessageProto other) {
          if (other == com.alibaba.wasp.protobuf.generated.MetaProtos.MessageProto.getDefaultInstance()) return this;
          if (other.hasType()) {
            setType(other.getType());
          }
          if (other.hasDelete()) {
            mergeDelete(other.getDelete());
          }
          if (other.hasUpdate()) {
            mergeUpdate(other.getUpdate());
          }
          if (other.hasInsert()) {
            mergeInsert(other.getInsert());
          }
          if (other.hasTransaction()) {
            mergeTransaction(other.getTransaction());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }
        
        public final boolean isInitialized() {
          if (!hasType()) {
            
            return false;
          }
          if (hasDelete()) {
            if (!getDelete().isInitialized()) {
              
              return false;
            }
          }
          if (hasUpdate()) {
            if (!getUpdate().isInitialized()) {
              
              return false;
            }
          }
          if (hasInsert()) {
            if (!getInsert().isInitialized()) {
              
              return false;
            }
          }
          if (hasTransaction()) {
            if (!getTransaction().isInitialized()) {
              
              return false;
            }
          }
          return true;
        }
        
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder(
              this.getUnknownFields());
          while (true) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  this.setUnknownFields(unknownFields.build());
                  onChanged();
                  return this;
                }
                break;
              }
              case 8: {
                int rawValue = input.readEnum();
                com.alibaba.wasp.protobuf.generated.MetaProtos.MessageProto.ActionType value = com.alibaba.wasp.protobuf.generated.MetaProtos.MessageProto.ActionType.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(1, rawValue);
                } else {
                  bitField0_ |= 0x00000001;
                  type_ = value;
                }
                break;
              }
              case 18: {
                com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto.Builder subBuilder = com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto.newBuilder();
                if (hasDelete()) {
                  subBuilder.mergeFrom(getDelete());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setDelete(subBuilder.buildPartial());
                break;
              }
              case 26: {
                com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto.Builder subBuilder = com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto.newBuilder();
                if (hasUpdate()) {
                  subBuilder.mergeFrom(getUpdate());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setUpdate(subBuilder.buildPartial());
                break;
              }
              case 34: {
                com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto.Builder subBuilder = com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto.newBuilder();
                if (hasInsert()) {
                  subBuilder.mergeFrom(getInsert());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setInsert(subBuilder.buildPartial());
                break;
              }
              case 42: {
                com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto.Builder subBuilder = com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto.newBuilder();
                if (hasTransaction()) {
                  subBuilder.mergeFrom(getTransaction());
                }
                input.readMessage(subBuilder, extensionRegistry);
                setTransaction(subBuilder.buildPartial());
                break;
              }
            }
          }
        }
        
        private int bitField0_;
        
        // required .MessageProto.ActionType type = 1;
        private com.alibaba.wasp.protobuf.generated.MetaProtos.MessageProto.ActionType type_ = com.alibaba.wasp.protobuf.generated.MetaProtos.MessageProto.ActionType.UPDATE;
        public boolean hasType() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.MessageProto.ActionType getType() {
          return type_;
        }
        public Builder setType(com.alibaba.wasp.protobuf.generated.MetaProtos.MessageProto.ActionType value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000001;
          type_ = value;
          onChanged();
          return this;
        }
        public Builder clearType() {
          bitField0_ = (bitField0_ & ~0x00000001);
          type_ = com.alibaba.wasp.protobuf.generated.MetaProtos.MessageProto.ActionType.UPDATE;
          onChanged();
          return this;
        }
        
        // optional .DeleteActionProto delete = 2;
        private com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto delete_ = com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto, com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProtoOrBuilder> deleteBuilder_;
        public boolean hasDelete() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto getDelete() {
          if (deleteBuilder_ == null) {
            return delete_;
          } else {
            return deleteBuilder_.getMessage();
          }
        }
        public Builder setDelete(com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto value) {
          if (deleteBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            delete_ = value;
            onChanged();
          } else {
            deleteBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        public Builder setDelete(
            com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto.Builder builderForValue) {
          if (deleteBuilder_ == null) {
            delete_ = builderForValue.build();
            onChanged();
          } else {
            deleteBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        public Builder mergeDelete(com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto value) {
          if (deleteBuilder_ == null) {
            if (((bitField0_ & 0x00000002) == 0x00000002) &&
                delete_ != com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto.getDefaultInstance()) {
              delete_ =
                com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto.newBuilder(delete_).mergeFrom(value).buildPartial();
            } else {
              delete_ = value;
            }
            onChanged();
          } else {
            deleteBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        public Builder clearDelete() {
          if (deleteBuilder_ == null) {
            delete_ = com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto.getDefaultInstance();
            onChanged();
          } else {
            deleteBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto.Builder getDeleteBuilder() {
          bitField0_ |= 0x00000002;
          onChanged();
          return getDeleteFieldBuilder().getBuilder();
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProtoOrBuilder getDeleteOrBuilder() {
          if (deleteBuilder_ != null) {
            return deleteBuilder_.getMessageOrBuilder();
          } else {
            return delete_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto, com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProtoOrBuilder> 
            getDeleteFieldBuilder() {
          if (deleteBuilder_ == null) {
            deleteBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto, com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProtoOrBuilder>(
                    delete_,
                    getParentForChildren(),
                    isClean());
            delete_ = null;
          }
          return deleteBuilder_;
        }
        
        // optional .UpdateActionProto update = 3;
        private com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto update_ = com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto, com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProtoOrBuilder> updateBuilder_;
        public boolean hasUpdate() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto getUpdate() {
          if (updateBuilder_ == null) {
            return update_;
          } else {
            return updateBuilder_.getMessage();
          }
        }
        public Builder setUpdate(com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto value) {
          if (updateBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            update_ = value;
            onChanged();
          } else {
            updateBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000004;
          return this;
        }
        public Builder setUpdate(
            com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto.Builder builderForValue) {
          if (updateBuilder_ == null) {
            update_ = builderForValue.build();
            onChanged();
          } else {
            updateBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000004;
          return this;
        }
        public Builder mergeUpdate(com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto value) {
          if (updateBuilder_ == null) {
            if (((bitField0_ & 0x00000004) == 0x00000004) &&
                update_ != com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto.getDefaultInstance()) {
              update_ =
                com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto.newBuilder(update_).mergeFrom(value).buildPartial();
            } else {
              update_ = value;
            }
            onChanged();
          } else {
            updateBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000004;
          return this;
        }
        public Builder clearUpdate() {
          if (updateBuilder_ == null) {
            update_ = com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto.getDefaultInstance();
            onChanged();
          } else {
            updateBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto.Builder getUpdateBuilder() {
          bitField0_ |= 0x00000004;
          onChanged();
          return getUpdateFieldBuilder().getBuilder();
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProtoOrBuilder getUpdateOrBuilder() {
          if (updateBuilder_ != null) {
            return updateBuilder_.getMessageOrBuilder();
          } else {
            return update_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto, com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProtoOrBuilder> 
            getUpdateFieldBuilder() {
          if (updateBuilder_ == null) {
            updateBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto, com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProtoOrBuilder>(
                    update_,
                    getParentForChildren(),
                    isClean());
            update_ = null;
          }
          return updateBuilder_;
        }
        
        // optional .InsertActionProto insert = 4;
        private com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto insert_ = com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto, com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProtoOrBuilder> insertBuilder_;
        public boolean hasInsert() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto getInsert() {
          if (insertBuilder_ == null) {
            return insert_;
          } else {
            return insertBuilder_.getMessage();
          }
        }
        public Builder setInsert(com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto value) {
          if (insertBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            insert_ = value;
            onChanged();
          } else {
            insertBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000008;
          return this;
        }
        public Builder setInsert(
            com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto.Builder builderForValue) {
          if (insertBuilder_ == null) {
            insert_ = builderForValue.build();
            onChanged();
          } else {
            insertBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000008;
          return this;
        }
        public Builder mergeInsert(com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto value) {
          if (insertBuilder_ == null) {
            if (((bitField0_ & 0x00000008) == 0x00000008) &&
                insert_ != com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto.getDefaultInstance()) {
              insert_ =
                com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto.newBuilder(insert_).mergeFrom(value).buildPartial();
            } else {
              insert_ = value;
            }
            onChanged();
          } else {
            insertBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000008;
          return this;
        }
        public Builder clearInsert() {
          if (insertBuilder_ == null) {
            insert_ = com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto.getDefaultInstance();
            onChanged();
          } else {
            insertBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000008);
          return this;
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto.Builder getInsertBuilder() {
          bitField0_ |= 0x00000008;
          onChanged();
          return getInsertFieldBuilder().getBuilder();
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProtoOrBuilder getInsertOrBuilder() {
          if (insertBuilder_ != null) {
            return insertBuilder_.getMessageOrBuilder();
          } else {
            return insert_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto, com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProtoOrBuilder> 
            getInsertFieldBuilder() {
          if (insertBuilder_ == null) {
            insertBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto, com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProtoOrBuilder>(
                    insert_,
                    getParentForChildren(),
                    isClean());
            insert_ = null;
          }
          return insertBuilder_;
        }
        
        // optional .TransactionActionProto transaction = 5;
        private com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto transaction_ = com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto.getDefaultInstance();
        private com.google.protobuf.SingleFieldBuilder<
            com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto, com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProtoOrBuilder> transactionBuilder_;
        public boolean hasTransaction() {
          return ((bitField0_ & 0x00000010) == 0x00000010);
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto getTransaction() {
          if (transactionBuilder_ == null) {
            return transaction_;
          } else {
            return transactionBuilder_.getMessage();
          }
        }
        public Builder setTransaction(com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto value) {
          if (transactionBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            transaction_ = value;
            onChanged();
          } else {
            transactionBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000010;
          return this;
        }
        public Builder setTransaction(
            com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto.Builder builderForValue) {
          if (transactionBuilder_ == null) {
            transaction_ = builderForValue.build();
            onChanged();
          } else {
            transactionBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000010;
          return this;
        }
        public Builder mergeTransaction(com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto value) {
          if (transactionBuilder_ == null) {
            if (((bitField0_ & 0x00000010) == 0x00000010) &&
                transaction_ != com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto.getDefaultInstance()) {
              transaction_ =
                com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto.newBuilder(transaction_).mergeFrom(value).buildPartial();
            } else {
              transaction_ = value;
            }
            onChanged();
          } else {
            transactionBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000010;
          return this;
        }
        public Builder clearTransaction() {
          if (transactionBuilder_ == null) {
            transaction_ = com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto.getDefaultInstance();
            onChanged();
          } else {
            transactionBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000010);
          return this;
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto.Builder getTransactionBuilder() {
          bitField0_ |= 0x00000010;
          onChanged();
          return getTransactionFieldBuilder().getBuilder();
        }
        public com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProtoOrBuilder getTransactionOrBuilder() {
          if (transactionBuilder_ != null) {
            return transactionBuilder_.getMessageOrBuilder();
          } else {
            return transaction_;
          }
        }
        private com.google.protobuf.SingleFieldBuilder<
            com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto, com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProtoOrBuilder> 
            getTransactionFieldBuilder() {
          if (transactionBuilder_ == null) {
            transactionBuilder_ = new com.google.protobuf.SingleFieldBuilder<
                com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto, com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto.Builder, com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProtoOrBuilder>(
                    transaction_,
                    getParentForChildren(),
                    isClean());
            transaction_ = null;
          }
          return transactionBuilder_;
        }
        
        // @@protoc_insertion_point(builder_scope:MessageProto)
      }
      
      static {
        defaultInstance = new MessageProto(true);
        defaultInstance.initFields();
      }
      
      // @@protoc_insertion_point(class_scope:MessageProto)
    }
    
    private static com.google.protobuf.Descriptors.Descriptor
      internal_static_TableSchema_descriptor;
    private static
      com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_TableSchema_fieldAccessorTable;
    private static com.google.protobuf.Descriptors.Descriptor
      internal_static_ColumnSchema_descriptor;
    private static
      com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_ColumnSchema_fieldAccessorTable;
    private static com.google.protobuf.Descriptors.Descriptor
      internal_static_IndexSchema_descriptor;
    private static
      com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_IndexSchema_fieldAccessorTable;
    private static com.google.protobuf.Descriptors.Descriptor
      internal_static_TransactionProto_descriptor;
    private static
      com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_TransactionProto_fieldAccessorTable;
    private static com.google.protobuf.Descriptors.Descriptor
      internal_static_GetActionProto_descriptor;
    private static
      com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_GetActionProto_fieldAccessorTable;
    private static com.google.protobuf.Descriptors.Descriptor
      internal_static_ScanActionProto_descriptor;
    private static
      com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_ScanActionProto_fieldAccessorTable;
    private static com.google.protobuf.Descriptors.Descriptor
      internal_static_DeleteActionProto_descriptor;
    private static
      com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_DeleteActionProto_fieldAccessorTable;
    private static com.google.protobuf.Descriptors.Descriptor
      internal_static_InsertActionProto_descriptor;
    private static
      com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_InsertActionProto_fieldAccessorTable;
    private static com.google.protobuf.Descriptors.Descriptor
      internal_static_UpdateActionProto_descriptor;
    private static
      com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_UpdateActionProto_fieldAccessorTable;
    private static com.google.protobuf.Descriptors.Descriptor
      internal_static_TransactionActionProto_descriptor;
    private static
      com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_TransactionActionProto_fieldAccessorTable;
    private static com.google.protobuf.Descriptors.Descriptor
      internal_static_ColumnStructProto_descriptor;
    private static
      com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_ColumnStructProto_fieldAccessorTable;
    private static com.google.protobuf.Descriptors.Descriptor
      internal_static_MessageProto_descriptor;
    private static
      com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internal_static_MessageProto_fieldAccessorTable;
    
    public static com.google.protobuf.Descriptors.FileDescriptor
        getDescriptor() {
      return descriptor;
    }
    private static com.google.protobuf.Descriptors.FileDescriptor
        descriptor;
    static {
      java.lang.String[] descriptorData = {
        "\n\nMeta.proto\032\nWasp.proto\"\326\002\n\013TableSchema" +
        "\022\021\n\ttableName\030\001 \002(\t\022\r\n\005owner\030\002 \002(\t\022\022\n\ncr" +
        "eateTime\030\003 \002(\004\022\026\n\016lastAccessTime\030\004 \002(\004\022\036" +
        "\n\007columns\030\005 \003(\0132\r.ColumnSchema\022\"\n\013primar" +
        "yKeys\030\006 \003(\0132\r.ColumnSchema\022/\n\ttableType\030" +
        "\007 \002(\0162\034.TableSchema.TableTypeProtos\022!\n\nf" +
        "oreignKey\030\010 \001(\0132\r.ColumnSchema\022\022\n\nparent" +
        "Name\030\t \001(\t\022%\n\nparameters\030\n \003(\0132\021.StringS" +
        "tringPair\"&\n\017TableTypeProtos\022\010\n\004ROOT\020\000\022\t" +
        "\n\005CHILD\020\001\"\317\001\n\014ColumnSchema\022\016\n\006family\030\001 \002",
        "(\t\022\014\n\004name\030\002 \002(\t\022\035\n\004type\030\003 \002(\0162\017.DataTyp" +
        "eProtos\022\017\n\007comment\030\004 \001(\t\022+\n\007keyWord\030\005 \002(" +
        "\0162\032.ColumnSchema.FieldKeyWord\"D\n\014FieldKe" +
        "yWord\022\020\n\014key_required\020\000\022\020\n\014key_optional\020" +
        "\001\022\020\n\014key_repeated\020\002\"\256\001\n\013IndexSchema\022\021\n\ti" +
        "ndexName\030\001 \002(\t\022 \n\tindexKeys\030\002 \003(\0132\r.Colu" +
        "mnSchema\022%\n\nparameters\030\003 \003(\0132\021.StringStr" +
        "ingPair\022\021\n\ttableName\030\004 \002(\t\022\"\n\013storingKey" +
        "s\030\005 \003(\0132\r.ColumnSchema\022\014\n\004desc\030\006 \003(\t\"9\n\020" +
        "TransactionProto\022\013\n\003tid\030\001 \002(\004\022\030\n\007mutates",
        "\030\002 \003(\0132\007.Mutate\"\241\001\n\016GetActionProto\022!\n\010re" +
        "adMode\030\001 \001(\0162\017.ReadModelProto\022\027\n\017entityT" +
        "ableName\030\002 \002(\t\022\013\n\003row\030\003 \002(\014\022 \n\004cols\030\004 \003(" +
        "\0132\022.ColumnStructProto\022\021\n\tforUpdate\030\005 \001(\010" +
        "\022\021\n\tsessionId\030\006 \001(\t\"\247\002\n\017ScanActionProto\022" +
        "!\n\010readMode\030\001 \001(\0162\017.ReadModelProto\022\026\n\016in" +
        "dexTableName\030\002 \001(\t\022\027\n\017entityTableName\030\003 " +
        "\002(\t\022\020\n\010startKey\030\004 \001(\014\022\016\n\006endKey\030\005 \001(\014\022\r\n" +
        "\005limit\030\006 \001(\r\022&\n\nentityCols\030\007 \003(\0132\022.Colum" +
        "nStructProto\022%\n\tindexCols\030\010 \003(\0132\022.Column",
        "StructProto\022\r\n\005batch\030\t \001(\r\0221\n\025notIndexCo" +
        "nditionCols\030\n \003(\0132\022.ColumnStructProto\"9\n" +
        "\021DeleteActionProto\022\021\n\ttableName\030\001 \002(\t\022\021\n" +
        "\tprimayKey\030\002 \002(\014\"[\n\021InsertActionProto\022\021\n" +
        "\ttableName\030\001 \002(\t\022\021\n\tprimayKey\030\002 \002(\014\022 \n\004c" +
        "ols\030\003 \003(\0132\022.ColumnStructProto\"n\n\021UpdateA" +
        "ctionProto\022\021\n\tprimayKey\030\001 \002(\014\022\021\n\ttableNa" +
        "me\030\002 \002(\t\022 \n\004cols\030\003 \003(\0132\022.ColumnStructPro" +
        "to\022\021\n\tsessionId\030\004 \001(\t\"\232\001\n\026TransactionAct" +
        "ionProto\022\021\n\ttableName\030\001 \002(\t\022#\n\007inserts\030\002",
        " \003(\0132\022.InsertActionProto\022#\n\007updates\030\003 \003(" +
        "\0132\022.UpdateActionProto\022#\n\007deletes\030\004 \003(\0132\022" +
        ".DeleteActionProto\"\223\001\n\021ColumnStructProto" +
        "\022\021\n\ttableName\030\001 \002(\t\022\022\n\nfamilyName\030\002 \002(\t\022" +
        "\022\n\ncolumnName\030\003 \002(\t\022!\n\010dataType\030\004 \001(\0162\017." +
        "DataTypeProtos\022\r\n\005value\030\005 \001(\014\022\021\n\tcompare" +
        "Op\030\006 \001(\r\"\223\002\n\014MessageProto\022&\n\004type\030\001 \002(\0162" +
        "\030.MessageProto.ActionType\022\"\n\006delete\030\002 \001(" +
        "\0132\022.DeleteActionProto\022\"\n\006update\030\003 \001(\0132\022." +
        "UpdateActionProto\022\"\n\006insert\030\004 \001(\0132\022.Inse",
        "rtActionProto\022,\n\013transaction\030\005 \001(\0132\027.Tra" +
        "nsactionActionProto\"A\n\nActionType\022\n\n\006UPD" +
        "ATE\020\000\022\n\n\006DELETE\020\001\022\n\n\006INSERT\020\002\022\017\n\013TRANSAC" +
        "TION\020\003*\210\001\n\016DataTypeProtos\022\016\n\nTYPE_INT32\020" +
        "\000\022\016\n\nTYPE_INT64\020\001\022\017\n\013TYPE_STRING\020\002\022\016\n\nTY" +
        "PE_FLOAT\020\003\022\021\n\rTYPE_PROTOBUF\020\004\022\017\n\013TYPE_DO" +
        "UBLE\020\005\022\021\n\rTYPE_DATETIME\020\006*=\n\016ReadModelPr" +
        "oto\022\013\n\007CURRENT\020\000\022\014\n\010SNAPSHOT\020\001\022\020\n\014INCONS" +
        "ISTENT\020\002B9\n#com.alibaba.wasp.protobuf.ge" +
        "neratedB\nMetaProtosH\001\210\001\001\240\001\001"
      };
      com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
        new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
          public com.google.protobuf.ExtensionRegistry assignDescriptors(
              com.google.protobuf.Descriptors.FileDescriptor root) {
            descriptor = root;
            internal_static_TableSchema_descriptor =
              getDescriptor().getMessageTypes().get(0);
            internal_static_TableSchema_fieldAccessorTable = new
              com.google.protobuf.GeneratedMessage.FieldAccessorTable(
                internal_static_TableSchema_descriptor,
                new java.lang.String[] { "TableName", "Owner", "CreateTime", "LastAccessTime", "Columns", "PrimaryKeys", "TableType", "ForeignKey", "ParentName", "Parameters", },
                com.alibaba.wasp.protobuf.generated.MetaProtos.TableSchema.class,
                com.alibaba.wasp.protobuf.generated.MetaProtos.TableSchema.Builder.class);
            internal_static_ColumnSchema_descriptor =
              getDescriptor().getMessageTypes().get(1);
            internal_static_ColumnSchema_fieldAccessorTable = new
              com.google.protobuf.GeneratedMessage.FieldAccessorTable(
                internal_static_ColumnSchema_descriptor,
                new java.lang.String[] { "Family", "Name", "Type", "Comment", "KeyWord", },
                com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.class,
                com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnSchema.Builder.class);
            internal_static_IndexSchema_descriptor =
              getDescriptor().getMessageTypes().get(2);
            internal_static_IndexSchema_fieldAccessorTable = new
              com.google.protobuf.GeneratedMessage.FieldAccessorTable(
                internal_static_IndexSchema_descriptor,
                new java.lang.String[] { "IndexName", "IndexKeys", "Parameters", "TableName", "StoringKeys", "Desc", },
                com.alibaba.wasp.protobuf.generated.MetaProtos.IndexSchema.class,
                com.alibaba.wasp.protobuf.generated.MetaProtos.IndexSchema.Builder.class);
            internal_static_TransactionProto_descriptor =
              getDescriptor().getMessageTypes().get(3);
            internal_static_TransactionProto_fieldAccessorTable = new
              com.google.protobuf.GeneratedMessage.FieldAccessorTable(
                internal_static_TransactionProto_descriptor,
                new java.lang.String[] { "Tid", "Mutates", },
                com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionProto.class,
                com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionProto.Builder.class);
            internal_static_GetActionProto_descriptor =
              getDescriptor().getMessageTypes().get(4);
            internal_static_GetActionProto_fieldAccessorTable = new
              com.google.protobuf.GeneratedMessage.FieldAccessorTable(
                internal_static_GetActionProto_descriptor,
                new java.lang.String[] { "ReadMode", "EntityTableName", "Row", "Cols", "ForUpdate", "SessionId", },
                com.alibaba.wasp.protobuf.generated.MetaProtos.GetActionProto.class,
                com.alibaba.wasp.protobuf.generated.MetaProtos.GetActionProto.Builder.class);
            internal_static_ScanActionProto_descriptor =
              getDescriptor().getMessageTypes().get(5);
            internal_static_ScanActionProto_fieldAccessorTable = new
              com.google.protobuf.GeneratedMessage.FieldAccessorTable(
                internal_static_ScanActionProto_descriptor,
                new java.lang.String[] { "ReadMode", "IndexTableName", "EntityTableName", "StartKey", "EndKey", "Limit", "EntityCols", "IndexCols", "Batch", "NotIndexConditionCols", },
                com.alibaba.wasp.protobuf.generated.MetaProtos.ScanActionProto.class,
                com.alibaba.wasp.protobuf.generated.MetaProtos.ScanActionProto.Builder.class);
            internal_static_DeleteActionProto_descriptor =
              getDescriptor().getMessageTypes().get(6);
            internal_static_DeleteActionProto_fieldAccessorTable = new
              com.google.protobuf.GeneratedMessage.FieldAccessorTable(
                internal_static_DeleteActionProto_descriptor,
                new java.lang.String[] { "TableName", "PrimayKey", },
                com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto.class,
                com.alibaba.wasp.protobuf.generated.MetaProtos.DeleteActionProto.Builder.class);
            internal_static_InsertActionProto_descriptor =
              getDescriptor().getMessageTypes().get(7);
            internal_static_InsertActionProto_fieldAccessorTable = new
              com.google.protobuf.GeneratedMessage.FieldAccessorTable(
                internal_static_InsertActionProto_descriptor,
                new java.lang.String[] { "TableName", "PrimayKey", "Cols", },
                com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto.class,
                com.alibaba.wasp.protobuf.generated.MetaProtos.InsertActionProto.Builder.class);
            internal_static_UpdateActionProto_descriptor =
              getDescriptor().getMessageTypes().get(8);
            internal_static_UpdateActionProto_fieldAccessorTable = new
              com.google.protobuf.GeneratedMessage.FieldAccessorTable(
                internal_static_UpdateActionProto_descriptor,
                new java.lang.String[] { "PrimayKey", "TableName", "Cols", "SessionId", },
                com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto.class,
                com.alibaba.wasp.protobuf.generated.MetaProtos.UpdateActionProto.Builder.class);
            internal_static_TransactionActionProto_descriptor =
              getDescriptor().getMessageTypes().get(9);
            internal_static_TransactionActionProto_fieldAccessorTable = new
              com.google.protobuf.GeneratedMessage.FieldAccessorTable(
                internal_static_TransactionActionProto_descriptor,
                new java.lang.String[] { "TableName", "Inserts", "Updates", "Deletes", },
                com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto.class,
                com.alibaba.wasp.protobuf.generated.MetaProtos.TransactionActionProto.Builder.class);
            internal_static_ColumnStructProto_descriptor =
              getDescriptor().getMessageTypes().get(10);
            internal_static_ColumnStructProto_fieldAccessorTable = new
              com.google.protobuf.GeneratedMessage.FieldAccessorTable(
                internal_static_ColumnStructProto_descriptor,
                new java.lang.String[] { "TableName", "FamilyName", "ColumnName", "DataType", "Value", "CompareOp", },
                com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.class,
                com.alibaba.wasp.protobuf.generated.MetaProtos.ColumnStructProto.Builder.class);
            internal_static_MessageProto_descriptor =
              getDescriptor().getMessageTypes().get(11);
            internal_static_MessageProto_fieldAccessorTable = new
              com.google.protobuf.GeneratedMessage.FieldAccessorTable(
                internal_static_MessageProto_descriptor,
                new java.lang.String[] { "Type", "Delete", "Update", "Insert", "Transaction", },
                com.alibaba.wasp.protobuf.generated.MetaProtos.MessageProto.class,
                com.alibaba.wasp.protobuf.generated.MetaProtos.MessageProto.Builder.class);
            return null;
          }
        };
      com.google.protobuf.Descriptors.FileDescriptor
        .internalBuildGeneratedFileFrom(descriptorData,
          new com.google.protobuf.Descriptors.FileDescriptor[] {
            com.alibaba.wasp.protobuf.generated.WaspProtos.getDescriptor(),
          }, assigner);
    }
    
    // @@protoc_insertion_point(outer_class_scope)
  }
  