/*
 * Copyright (C) 2016-2020 ActionTech.
 * License: http://www.gnu.org/licenses/gpl.html GPL version 2 or higher.
 */

// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: StructureMeta.proto

package com.actiontech.dble.meta.protocol;

public final class StructureMeta {
  private StructureMeta() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
  }
  public interface IndexMetaOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.actiontech.dble.meta.protocol.IndexMeta)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required string name = 1;</code>
     */
    boolean hasName();
    /**
     * <code>required string name = 1;</code>
     */
    java.lang.String getName();
    /**
     * <code>required string name = 1;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <code>required string type = 2;</code>
     *
     * <pre>
     *PRI,UNI,MUI
     * </pre>
     */
    boolean hasType();
    /**
     * <code>required string type = 2;</code>
     *
     * <pre>
     *PRI,UNI,MUI
     * </pre>
     */
    java.lang.String getType();
    /**
     * <code>required string type = 2;</code>
     *
     * <pre>
     *PRI,UNI,MUI
     * </pre>
     */
    com.google.protobuf.ByteString
        getTypeBytes();

    /**
     * <code>repeated string columns = 3;</code>
     */
    com.google.protobuf.ProtocolStringList
        getColumnsList();
    /**
     * <code>repeated string columns = 3;</code>
     */
    int getColumnsCount();
    /**
     * <code>repeated string columns = 3;</code>
     */
    java.lang.String getColumns(int index);
    /**
     * <code>repeated string columns = 3;</code>
     */
    com.google.protobuf.ByteString
        getColumnsBytes(int index);
  }
  /**
   * Protobuf type {@code com.actiontech.dble.meta.protocol.IndexMeta}
   */
  public static final class IndexMeta extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:com.actiontech.dble.meta.protocol.IndexMeta)
      IndexMetaOrBuilder {
    // Use IndexMeta.newBuilder() to construct.
    private IndexMeta(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private IndexMeta(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final IndexMeta defaultInstance;
    public static IndexMeta getDefaultInstance() {
      return defaultInstance;
    }

    public IndexMeta getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private IndexMeta(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              name_ = bs;
              break;
            }
            case 18: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000002;
              type_ = bs;
              break;
            }
            case 26: {
              com.google.protobuf.ByteString bs = input.readBytes();
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                columns_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000004;
              }
              columns_.add(bs);
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          columns_ = columns_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.actiontech.dble.meta.protocol.StructureMeta.internal_static_com_actiontech_dble_meta_protocol_IndexMeta_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.actiontech.dble.meta.protocol.StructureMeta.internal_static_com_actiontech_dble_meta_protocol_IndexMeta_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.class, com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.Builder.class);
    }

    public static com.google.protobuf.Parser<IndexMeta> PARSER =
        new com.google.protobuf.AbstractParser<IndexMeta>() {
      public IndexMeta parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new IndexMeta(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public com.google.protobuf.Parser<IndexMeta> getParserForType() {
      return PARSER;
    }

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    private java.lang.Object name_;
    /**
     * <code>required string name = 1;</code>
     */
    public boolean hasName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string name = 1;</code>
     */
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          name_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string name = 1;</code>
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TYPE_FIELD_NUMBER = 2;
    private java.lang.Object type_;
    /**
     * <code>required string type = 2;</code>
     *
     * <pre>
     *PRI,UNI,MUI
     * </pre>
     */
    public boolean hasType() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required string type = 2;</code>
     *
     * <pre>
     *PRI,UNI,MUI
     * </pre>
     */
    public java.lang.String getType() {
      java.lang.Object ref = type_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          type_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string type = 2;</code>
     *
     * <pre>
     *PRI,UNI,MUI
     * </pre>
     */
    public com.google.protobuf.ByteString
        getTypeBytes() {
      java.lang.Object ref = type_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        type_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int COLUMNS_FIELD_NUMBER = 3;
    private com.google.protobuf.LazyStringList columns_;
    /**
     * <code>repeated string columns = 3;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getColumnsList() {
      return columns_;
    }
    /**
     * <code>repeated string columns = 3;</code>
     */
    public int getColumnsCount() {
      return columns_.size();
    }
    /**
     * <code>repeated string columns = 3;</code>
     */
    public java.lang.String getColumns(int index) {
      return columns_.get(index);
    }
    /**
     * <code>repeated string columns = 3;</code>
     */
    public com.google.protobuf.ByteString
        getColumnsBytes(int index) {
      return columns_.getByteString(index);
    }

    private void initFields() {
      name_ = "";
      type_ = "";
      columns_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasType()) {
        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, getNameBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getTypeBytes());
      }
      for (int i = 0; i < columns_.size(); i++) {
        output.writeBytes(3, columns_.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, getNameBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getTypeBytes());
      }
      {
        int dataSize = 0;
        for (int i = 0; i < columns_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeBytesSizeNoTag(columns_.getByteString(i));
        }
        size += dataSize;
        size += 1 * getColumnsList().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();
    }

    public static com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta 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;
    }
    /**
     * Protobuf type {@code com.actiontech.dble.meta.protocol.IndexMeta}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:com.actiontech.dble.meta.protocol.IndexMeta)
        com.actiontech.dble.meta.protocol.StructureMeta.IndexMetaOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.actiontech.dble.meta.protocol.StructureMeta.internal_static_com_actiontech_dble_meta_protocol_IndexMeta_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.actiontech.dble.meta.protocol.StructureMeta.internal_static_com_actiontech_dble_meta_protocol_IndexMeta_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.class, com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.Builder.class);
      }

      // Construct using com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.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();
        name_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        type_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        columns_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.actiontech.dble.meta.protocol.StructureMeta.internal_static_com_actiontech_dble_meta_protocol_IndexMeta_descriptor;
      }

      public com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta getDefaultInstanceForType() {
        return com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.getDefaultInstance();
      }

      public com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta build() {
        com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta buildPartial() {
        com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta result = new com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.name_ = name_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.type_ = type_;
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          columns_ = columns_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.columns_ = columns_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta) {
          return mergeFrom((com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta other) {
        if (other == com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.getDefaultInstance()) return this;
        if (other.hasName()) {
          bitField0_ |= 0x00000001;
          name_ = other.name_;
          onChanged();
        }
        if (other.hasType()) {
          bitField0_ |= 0x00000002;
          type_ = other.type_;
          onChanged();
        }
        if (!other.columns_.isEmpty()) {
          if (columns_.isEmpty()) {
            columns_ = other.columns_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureColumnsIsMutable();
            columns_.addAll(other.columns_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasName()) {
          
          return false;
        }
        if (!hasType()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object name_ = "";
      /**
       * <code>required string name = 1;</code>
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string name = 1;</code>
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            name_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string name = 1;</code>
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string name = 1;</code>
       */
      public Builder clearName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <code>required string name = 1;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        name_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object type_ = "";
      /**
       * <code>required string type = 2;</code>
       *
       * <pre>
       *PRI,UNI,MUI
       * </pre>
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required string type = 2;</code>
       *
       * <pre>
       *PRI,UNI,MUI
       * </pre>
       */
      public java.lang.String getType() {
        java.lang.Object ref = type_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            type_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string type = 2;</code>
       *
       * <pre>
       *PRI,UNI,MUI
       * </pre>
       */
      public com.google.protobuf.ByteString
          getTypeBytes() {
        java.lang.Object ref = type_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          type_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string type = 2;</code>
       *
       * <pre>
       *PRI,UNI,MUI
       * </pre>
       */
      public Builder setType(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        type_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string type = 2;</code>
       *
       * <pre>
       *PRI,UNI,MUI
       * </pre>
       */
      public Builder clearType() {
        bitField0_ = (bitField0_ & ~0x00000002);
        type_ = getDefaultInstance().getType();
        onChanged();
        return this;
      }
      /**
       * <code>required string type = 2;</code>
       *
       * <pre>
       *PRI,UNI,MUI
       * </pre>
       */
      public Builder setTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        type_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList columns_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureColumnsIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          columns_ = new com.google.protobuf.LazyStringArrayList(columns_);
          bitField0_ |= 0x00000004;
         }
      }
      /**
       * <code>repeated string columns = 3;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getColumnsList() {
        return columns_.getUnmodifiableView();
      }
      /**
       * <code>repeated string columns = 3;</code>
       */
      public int getColumnsCount() {
        return columns_.size();
      }
      /**
       * <code>repeated string columns = 3;</code>
       */
      public java.lang.String getColumns(int index) {
        return columns_.get(index);
      }
      /**
       * <code>repeated string columns = 3;</code>
       */
      public com.google.protobuf.ByteString
          getColumnsBytes(int index) {
        return columns_.getByteString(index);
      }
      /**
       * <code>repeated string columns = 3;</code>
       */
      public Builder setColumns(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureColumnsIsMutable();
        columns_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string columns = 3;</code>
       */
      public Builder addColumns(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureColumnsIsMutable();
        columns_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string columns = 3;</code>
       */
      public Builder addAllColumns(
          java.lang.Iterable<java.lang.String> values) {
        ensureColumnsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, columns_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string columns = 3;</code>
       */
      public Builder clearColumns() {
        columns_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string columns = 3;</code>
       */
      public Builder addColumnsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureColumnsIsMutable();
        columns_.add(value);
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:com.actiontech.dble.meta.protocol.IndexMeta)
    }

    static {
      defaultInstance = new IndexMeta(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:com.actiontech.dble.meta.protocol.IndexMeta)
  }

  public interface ColumnMetaOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.actiontech.dble.meta.protocol.ColumnMeta)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required string name = 1;</code>
     */
    boolean hasName();
    /**
     * <code>required string name = 1;</code>
     */
    java.lang.String getName();
    /**
     * <code>required string name = 1;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <code>required string dataType = 2;</code>
     */
    boolean hasDataType();
    /**
     * <code>required string dataType = 2;</code>
     */
    java.lang.String getDataType();
    /**
     * <code>required string dataType = 2;</code>
     */
    com.google.protobuf.ByteString
        getDataTypeBytes();

    /**
     * <code>optional bool isUnsigned = 3;</code>
     */
    boolean hasIsUnsigned();
    /**
     * <code>optional bool isUnsigned = 3;</code>
     */
    boolean getIsUnsigned();

    /**
     * <code>optional int32 length = 4;</code>
     */
    boolean hasLength();
    /**
     * <code>optional int32 length = 4;</code>
     */
    int getLength();

    /**
     * <code>optional int32 precision = 5;</code>
     */
    boolean hasPrecision();
    /**
     * <code>optional int32 precision = 5;</code>
     */
    int getPrecision();

    /**
     * <code>optional int32 scale = 6;</code>
     */
    boolean hasScale();
    /**
     * <code>optional int32 scale = 6;</code>
     */
    int getScale();

    /**
     * <code>optional bool canNull = 7;</code>
     */
    boolean hasCanNull();
    /**
     * <code>optional bool canNull = 7;</code>
     */
    boolean getCanNull();

    /**
     * <code>optional string sdefault = 8;</code>
     */
    boolean hasSdefault();
    /**
     * <code>optional string sdefault = 8;</code>
     */
    java.lang.String getSdefault();
    /**
     * <code>optional string sdefault = 8;</code>
     */
    com.google.protobuf.ByteString
        getSdefaultBytes();

    /**
     * <code>optional bool auto_incre = 9;</code>
     */
    boolean hasAutoIncre();
    /**
     * <code>optional bool auto_incre = 9;</code>
     */
    boolean getAutoIncre();

    /**
     * <code>optional string charsetname = 10 [default = "utf8"];</code>
     *
     * <pre>
     *[COMMENT 'string']
     *[COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}]
     *[STORAGE {DISK|MEMORY|DEFAULT}]
     *[reference_definition]
     *[GENERATED ALWAYS] AS (expression)
     * </pre>
     */
    boolean hasCharsetname();
    /**
     * <code>optional string charsetname = 10 [default = "utf8"];</code>
     *
     * <pre>
     *[COMMENT 'string']
     *[COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}]
     *[STORAGE {DISK|MEMORY|DEFAULT}]
     *[reference_definition]
     *[GENERATED ALWAYS] AS (expression)
     * </pre>
     */
    java.lang.String getCharsetname();
    /**
     * <code>optional string charsetname = 10 [default = "utf8"];</code>
     *
     * <pre>
     *[COMMENT 'string']
     *[COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}]
     *[STORAGE {DISK|MEMORY|DEFAULT}]
     *[reference_definition]
     *[GENERATED ALWAYS] AS (expression)
     * </pre>
     */
    com.google.protobuf.ByteString
        getCharsetnameBytes();
  }
  /**
   * Protobuf type {@code com.actiontech.dble.meta.protocol.ColumnMeta}
   */
  public static final class ColumnMeta extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:com.actiontech.dble.meta.protocol.ColumnMeta)
      ColumnMetaOrBuilder {
    // Use ColumnMeta.newBuilder() to construct.
    private ColumnMeta(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private ColumnMeta(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final ColumnMeta defaultInstance;
    public static ColumnMeta getDefaultInstance() {
      return defaultInstance;
    }

    public ColumnMeta getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private ColumnMeta(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              name_ = bs;
              break;
            }
            case 18: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000002;
              dataType_ = bs;
              break;
            }
            case 24: {
              bitField0_ |= 0x00000004;
              isUnsigned_ = input.readBool();
              break;
            }
            case 32: {
              bitField0_ |= 0x00000008;
              length_ = input.readInt32();
              break;
            }
            case 40: {
              bitField0_ |= 0x00000010;
              precision_ = input.readInt32();
              break;
            }
            case 48: {
              bitField0_ |= 0x00000020;
              scale_ = input.readInt32();
              break;
            }
            case 56: {
              bitField0_ |= 0x00000040;
              canNull_ = input.readBool();
              break;
            }
            case 66: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000080;
              sdefault_ = bs;
              break;
            }
            case 72: {
              bitField0_ |= 0x00000100;
              autoIncre_ = input.readBool();
              break;
            }
            case 82: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000200;
              charsetname_ = bs;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.actiontech.dble.meta.protocol.StructureMeta.internal_static_com_actiontech_dble_meta_protocol_ColumnMeta_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.actiontech.dble.meta.protocol.StructureMeta.internal_static_com_actiontech_dble_meta_protocol_ColumnMeta_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta.class, com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta.Builder.class);
    }

    public static com.google.protobuf.Parser<ColumnMeta> PARSER =
        new com.google.protobuf.AbstractParser<ColumnMeta>() {
      public ColumnMeta parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ColumnMeta(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public com.google.protobuf.Parser<ColumnMeta> getParserForType() {
      return PARSER;
    }

    private int bitField0_;
    public static final int NAME_FIELD_NUMBER = 1;
    private java.lang.Object name_;
    /**
     * <code>required string name = 1;</code>
     */
    public boolean hasName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>required string name = 1;</code>
     */
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          name_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string name = 1;</code>
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DATATYPE_FIELD_NUMBER = 2;
    private java.lang.Object dataType_;
    /**
     * <code>required string dataType = 2;</code>
     */
    public boolean hasDataType() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>required string dataType = 2;</code>
     */
    public java.lang.String getDataType() {
      java.lang.Object ref = dataType_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          dataType_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string dataType = 2;</code>
     */
    public com.google.protobuf.ByteString
        getDataTypeBytes() {
      java.lang.Object ref = dataType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        dataType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ISUNSIGNED_FIELD_NUMBER = 3;
    private boolean isUnsigned_;
    /**
     * <code>optional bool isUnsigned = 3;</code>
     */
    public boolean hasIsUnsigned() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional bool isUnsigned = 3;</code>
     */
    public boolean getIsUnsigned() {
      return isUnsigned_;
    }

    public static final int LENGTH_FIELD_NUMBER = 4;
    private int length_;
    /**
     * <code>optional int32 length = 4;</code>
     */
    public boolean hasLength() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional int32 length = 4;</code>
     */
    public int getLength() {
      return length_;
    }

    public static final int PRECISION_FIELD_NUMBER = 5;
    private int precision_;
    /**
     * <code>optional int32 precision = 5;</code>
     */
    public boolean hasPrecision() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>optional int32 precision = 5;</code>
     */
    public int getPrecision() {
      return precision_;
    }

    public static final int SCALE_FIELD_NUMBER = 6;
    private int scale_;
    /**
     * <code>optional int32 scale = 6;</code>
     */
    public boolean hasScale() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * <code>optional int32 scale = 6;</code>
     */
    public int getScale() {
      return scale_;
    }

    public static final int CANNULL_FIELD_NUMBER = 7;
    private boolean canNull_;
    /**
     * <code>optional bool canNull = 7;</code>
     */
    public boolean hasCanNull() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    /**
     * <code>optional bool canNull = 7;</code>
     */
    public boolean getCanNull() {
      return canNull_;
    }

    public static final int SDEFAULT_FIELD_NUMBER = 8;
    private java.lang.Object sdefault_;
    /**
     * <code>optional string sdefault = 8;</code>
     */
    public boolean hasSdefault() {
      return ((bitField0_ & 0x00000080) == 0x00000080);
    }
    /**
     * <code>optional string sdefault = 8;</code>
     */
    public java.lang.String getSdefault() {
      java.lang.Object ref = sdefault_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          sdefault_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string sdefault = 8;</code>
     */
    public com.google.protobuf.ByteString
        getSdefaultBytes() {
      java.lang.Object ref = sdefault_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        sdefault_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int AUTO_INCRE_FIELD_NUMBER = 9;
    private boolean autoIncre_;
    /**
     * <code>optional bool auto_incre = 9;</code>
     */
    public boolean hasAutoIncre() {
      return ((bitField0_ & 0x00000100) == 0x00000100);
    }
    /**
     * <code>optional bool auto_incre = 9;</code>
     */
    public boolean getAutoIncre() {
      return autoIncre_;
    }

    public static final int CHARSETNAME_FIELD_NUMBER = 10;
    private java.lang.Object charsetname_;
    /**
     * <code>optional string charsetname = 10 [default = "utf8"];</code>
     *
     * <pre>
     *[COMMENT 'string']
     *[COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}]
     *[STORAGE {DISK|MEMORY|DEFAULT}]
     *[reference_definition]
     *[GENERATED ALWAYS] AS (expression)
     * </pre>
     */
    public boolean hasCharsetname() {
      return ((bitField0_ & 0x00000200) == 0x00000200);
    }
    /**
     * <code>optional string charsetname = 10 [default = "utf8"];</code>
     *
     * <pre>
     *[COMMENT 'string']
     *[COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}]
     *[STORAGE {DISK|MEMORY|DEFAULT}]
     *[reference_definition]
     *[GENERATED ALWAYS] AS (expression)
     * </pre>
     */
    public java.lang.String getCharsetname() {
      java.lang.Object ref = charsetname_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          charsetname_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string charsetname = 10 [default = "utf8"];</code>
     *
     * <pre>
     *[COMMENT 'string']
     *[COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}]
     *[STORAGE {DISK|MEMORY|DEFAULT}]
     *[reference_definition]
     *[GENERATED ALWAYS] AS (expression)
     * </pre>
     */
    public com.google.protobuf.ByteString
        getCharsetnameBytes() {
      java.lang.Object ref = charsetname_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        charsetname_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private void initFields() {
      name_ = "";
      dataType_ = "";
      isUnsigned_ = false;
      length_ = 0;
      precision_ = 0;
      scale_ = 0;
      canNull_ = false;
      sdefault_ = "";
      autoIncre_ = false;
      charsetname_ = "utf8";
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasDataType()) {
        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, getNameBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getDataTypeBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBool(3, isUnsigned_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeInt32(4, length_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeInt32(5, precision_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeInt32(6, scale_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeBool(7, canNull_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        output.writeBytes(8, getSdefaultBytes());
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        output.writeBool(9, autoIncre_);
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        output.writeBytes(10, getCharsetnameBytes());
      }
      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, getNameBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getDataTypeBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, isUnsigned_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(4, length_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(5, precision_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(6, scale_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(7, canNull_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(8, getSdefaultBytes());
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(9, autoIncre_);
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(10, getCharsetnameBytes());
      }
      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();
    }

    public static com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta 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;
    }
    /**
     * Protobuf type {@code com.actiontech.dble.meta.protocol.ColumnMeta}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:com.actiontech.dble.meta.protocol.ColumnMeta)
        com.actiontech.dble.meta.protocol.StructureMeta.ColumnMetaOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.actiontech.dble.meta.protocol.StructureMeta.internal_static_com_actiontech_dble_meta_protocol_ColumnMeta_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.actiontech.dble.meta.protocol.StructureMeta.internal_static_com_actiontech_dble_meta_protocol_ColumnMeta_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta.class, com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta.Builder.class);
      }

      // Construct using com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.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();
        name_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        dataType_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        isUnsigned_ = false;
        bitField0_ = (bitField0_ & ~0x00000004);
        length_ = 0;
        bitField0_ = (bitField0_ & ~0x00000008);
        precision_ = 0;
        bitField0_ = (bitField0_ & ~0x00000010);
        scale_ = 0;
        bitField0_ = (bitField0_ & ~0x00000020);
        canNull_ = false;
        bitField0_ = (bitField0_ & ~0x00000040);
        sdefault_ = "";
        bitField0_ = (bitField0_ & ~0x00000080);
        autoIncre_ = false;
        bitField0_ = (bitField0_ & ~0x00000100);
        charsetname_ = "utf8";
        bitField0_ = (bitField0_ & ~0x00000200);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.actiontech.dble.meta.protocol.StructureMeta.internal_static_com_actiontech_dble_meta_protocol_ColumnMeta_descriptor;
      }

      public com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta getDefaultInstanceForType() {
        return com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta.getDefaultInstance();
      }

      public com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta build() {
        com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta buildPartial() {
        com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta result = new com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.name_ = name_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.dataType_ = dataType_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.isUnsigned_ = isUnsigned_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.length_ = length_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.precision_ = precision_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000020;
        }
        result.scale_ = scale_;
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000040;
        }
        result.canNull_ = canNull_;
        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
          to_bitField0_ |= 0x00000080;
        }
        result.sdefault_ = sdefault_;
        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
          to_bitField0_ |= 0x00000100;
        }
        result.autoIncre_ = autoIncre_;
        if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
          to_bitField0_ |= 0x00000200;
        }
        result.charsetname_ = charsetname_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta) {
          return mergeFrom((com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta other) {
        if (other == com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta.getDefaultInstance()) return this;
        if (other.hasName()) {
          bitField0_ |= 0x00000001;
          name_ = other.name_;
          onChanged();
        }
        if (other.hasDataType()) {
          bitField0_ |= 0x00000002;
          dataType_ = other.dataType_;
          onChanged();
        }
        if (other.hasIsUnsigned()) {
          setIsUnsigned(other.getIsUnsigned());
        }
        if (other.hasLength()) {
          setLength(other.getLength());
        }
        if (other.hasPrecision()) {
          setPrecision(other.getPrecision());
        }
        if (other.hasScale()) {
          setScale(other.getScale());
        }
        if (other.hasCanNull()) {
          setCanNull(other.getCanNull());
        }
        if (other.hasSdefault()) {
          bitField0_ |= 0x00000080;
          sdefault_ = other.sdefault_;
          onChanged();
        }
        if (other.hasAutoIncre()) {
          setAutoIncre(other.getAutoIncre());
        }
        if (other.hasCharsetname()) {
          bitField0_ |= 0x00000200;
          charsetname_ = other.charsetname_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        if (!hasName()) {
          
          return false;
        }
        if (!hasDataType()) {
          
          return false;
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object name_ = "";
      /**
       * <code>required string name = 1;</code>
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string name = 1;</code>
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            name_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string name = 1;</code>
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string name = 1;</code>
       */
      public Builder clearName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <code>required string name = 1;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        name_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object dataType_ = "";
      /**
       * <code>required string dataType = 2;</code>
       */
      public boolean hasDataType() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required string dataType = 2;</code>
       */
      public java.lang.String getDataType() {
        java.lang.Object ref = dataType_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            dataType_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string dataType = 2;</code>
       */
      public com.google.protobuf.ByteString
          getDataTypeBytes() {
        java.lang.Object ref = dataType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          dataType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string dataType = 2;</code>
       */
      public Builder setDataType(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        dataType_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>required string dataType = 2;</code>
       */
      public Builder clearDataType() {
        bitField0_ = (bitField0_ & ~0x00000002);
        dataType_ = getDefaultInstance().getDataType();
        onChanged();
        return this;
      }
      /**
       * <code>required string dataType = 2;</code>
       */
      public Builder setDataTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        dataType_ = value;
        onChanged();
        return this;
      }

      private boolean isUnsigned_ ;
      /**
       * <code>optional bool isUnsigned = 3;</code>
       */
      public boolean hasIsUnsigned() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional bool isUnsigned = 3;</code>
       */
      public boolean getIsUnsigned() {
        return isUnsigned_;
      }
      /**
       * <code>optional bool isUnsigned = 3;</code>
       */
      public Builder setIsUnsigned(boolean value) {
        bitField0_ |= 0x00000004;
        isUnsigned_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool isUnsigned = 3;</code>
       */
      public Builder clearIsUnsigned() {
        bitField0_ = (bitField0_ & ~0x00000004);
        isUnsigned_ = false;
        onChanged();
        return this;
      }

      private int length_ ;
      /**
       * <code>optional int32 length = 4;</code>
       */
      public boolean hasLength() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional int32 length = 4;</code>
       */
      public int getLength() {
        return length_;
      }
      /**
       * <code>optional int32 length = 4;</code>
       */
      public Builder setLength(int value) {
        bitField0_ |= 0x00000008;
        length_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 length = 4;</code>
       */
      public Builder clearLength() {
        bitField0_ = (bitField0_ & ~0x00000008);
        length_ = 0;
        onChanged();
        return this;
      }

      private int precision_ ;
      /**
       * <code>optional int32 precision = 5;</code>
       */
      public boolean hasPrecision() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional int32 precision = 5;</code>
       */
      public int getPrecision() {
        return precision_;
      }
      /**
       * <code>optional int32 precision = 5;</code>
       */
      public Builder setPrecision(int value) {
        bitField0_ |= 0x00000010;
        precision_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 precision = 5;</code>
       */
      public Builder clearPrecision() {
        bitField0_ = (bitField0_ & ~0x00000010);
        precision_ = 0;
        onChanged();
        return this;
      }

      private int scale_ ;
      /**
       * <code>optional int32 scale = 6;</code>
       */
      public boolean hasScale() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>optional int32 scale = 6;</code>
       */
      public int getScale() {
        return scale_;
      }
      /**
       * <code>optional int32 scale = 6;</code>
       */
      public Builder setScale(int value) {
        bitField0_ |= 0x00000020;
        scale_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 scale = 6;</code>
       */
      public Builder clearScale() {
        bitField0_ = (bitField0_ & ~0x00000020);
        scale_ = 0;
        onChanged();
        return this;
      }

      private boolean canNull_ ;
      /**
       * <code>optional bool canNull = 7;</code>
       */
      public boolean hasCanNull() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * <code>optional bool canNull = 7;</code>
       */
      public boolean getCanNull() {
        return canNull_;
      }
      /**
       * <code>optional bool canNull = 7;</code>
       */
      public Builder setCanNull(boolean value) {
        bitField0_ |= 0x00000040;
        canNull_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool canNull = 7;</code>
       */
      public Builder clearCanNull() {
        bitField0_ = (bitField0_ & ~0x00000040);
        canNull_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object sdefault_ = "";
      /**
       * <code>optional string sdefault = 8;</code>
       */
      public boolean hasSdefault() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      /**
       * <code>optional string sdefault = 8;</code>
       */
      public java.lang.String getSdefault() {
        java.lang.Object ref = sdefault_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            sdefault_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string sdefault = 8;</code>
       */
      public com.google.protobuf.ByteString
          getSdefaultBytes() {
        java.lang.Object ref = sdefault_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          sdefault_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string sdefault = 8;</code>
       */
      public Builder setSdefault(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000080;
        sdefault_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string sdefault = 8;</code>
       */
      public Builder clearSdefault() {
        bitField0_ = (bitField0_ & ~0x00000080);
        sdefault_ = getDefaultInstance().getSdefault();
        onChanged();
        return this;
      }
      /**
       * <code>optional string sdefault = 8;</code>
       */
      public Builder setSdefaultBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000080;
        sdefault_ = value;
        onChanged();
        return this;
      }

      private boolean autoIncre_ ;
      /**
       * <code>optional bool auto_incre = 9;</code>
       */
      public boolean hasAutoIncre() {
        return ((bitField0_ & 0x00000100) == 0x00000100);
      }
      /**
       * <code>optional bool auto_incre = 9;</code>
       */
      public boolean getAutoIncre() {
        return autoIncre_;
      }
      /**
       * <code>optional bool auto_incre = 9;</code>
       */
      public Builder setAutoIncre(boolean value) {
        bitField0_ |= 0x00000100;
        autoIncre_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool auto_incre = 9;</code>
       */
      public Builder clearAutoIncre() {
        bitField0_ = (bitField0_ & ~0x00000100);
        autoIncre_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object charsetname_ = "utf8";
      /**
       * <code>optional string charsetname = 10 [default = "utf8"];</code>
       *
       * <pre>
       *[COMMENT 'string']
       *[COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}]
       *[STORAGE {DISK|MEMORY|DEFAULT}]
       *[reference_definition]
       *[GENERATED ALWAYS] AS (expression)
       * </pre>
       */
      public boolean hasCharsetname() {
        return ((bitField0_ & 0x00000200) == 0x00000200);
      }
      /**
       * <code>optional string charsetname = 10 [default = "utf8"];</code>
       *
       * <pre>
       *[COMMENT 'string']
       *[COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}]
       *[STORAGE {DISK|MEMORY|DEFAULT}]
       *[reference_definition]
       *[GENERATED ALWAYS] AS (expression)
       * </pre>
       */
      public java.lang.String getCharsetname() {
        java.lang.Object ref = charsetname_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            charsetname_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string charsetname = 10 [default = "utf8"];</code>
       *
       * <pre>
       *[COMMENT 'string']
       *[COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}]
       *[STORAGE {DISK|MEMORY|DEFAULT}]
       *[reference_definition]
       *[GENERATED ALWAYS] AS (expression)
       * </pre>
       */
      public com.google.protobuf.ByteString
          getCharsetnameBytes() {
        java.lang.Object ref = charsetname_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          charsetname_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string charsetname = 10 [default = "utf8"];</code>
       *
       * <pre>
       *[COMMENT 'string']
       *[COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}]
       *[STORAGE {DISK|MEMORY|DEFAULT}]
       *[reference_definition]
       *[GENERATED ALWAYS] AS (expression)
       * </pre>
       */
      public Builder setCharsetname(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000200;
        charsetname_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string charsetname = 10 [default = "utf8"];</code>
       *
       * <pre>
       *[COMMENT 'string']
       *[COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}]
       *[STORAGE {DISK|MEMORY|DEFAULT}]
       *[reference_definition]
       *[GENERATED ALWAYS] AS (expression)
       * </pre>
       */
      public Builder clearCharsetname() {
        bitField0_ = (bitField0_ & ~0x00000200);
        charsetname_ = getDefaultInstance().getCharsetname();
        onChanged();
        return this;
      }
      /**
       * <code>optional string charsetname = 10 [default = "utf8"];</code>
       *
       * <pre>
       *[COMMENT 'string']
       *[COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}]
       *[STORAGE {DISK|MEMORY|DEFAULT}]
       *[reference_definition]
       *[GENERATED ALWAYS] AS (expression)
       * </pre>
       */
      public Builder setCharsetnameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000200;
        charsetname_ = value;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:com.actiontech.dble.meta.protocol.ColumnMeta)
    }

    static {
      defaultInstance = new ColumnMeta(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:com.actiontech.dble.meta.protocol.ColumnMeta)
  }

  public interface TableMetaOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.actiontech.dble.meta.protocol.TableMeta)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>optional string tableName = 1;</code>
     *
     * <pre>
     *tableName without dbName
     * </pre>
     */
    boolean hasTableName();
    /**
     * <code>optional string tableName = 1;</code>
     *
     * <pre>
     *tableName without dbName
     * </pre>
     */
    java.lang.String getTableName();
    /**
     * <code>optional string tableName = 1;</code>
     *
     * <pre>
     *tableName without dbName
     * </pre>
     */
    com.google.protobuf.ByteString
        getTableNameBytes();

    /**
     * <code>repeated .com.actiontech.dble.meta.protocol.ColumnMeta columns = 2;</code>
     *
     * <pre>
     *Columns
     * </pre>
     */
    java.util.List<com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta> 
        getColumnsList();
    /**
     * <code>repeated .com.actiontech.dble.meta.protocol.ColumnMeta columns = 2;</code>
     *
     * <pre>
     *Columns
     * </pre>
     */
    com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta getColumns(int index);
    /**
     * <code>repeated .com.actiontech.dble.meta.protocol.ColumnMeta columns = 2;</code>
     *
     * <pre>
     *Columns
     * </pre>
     */
    int getColumnsCount();
    /**
     * <code>repeated .com.actiontech.dble.meta.protocol.ColumnMeta columns = 2;</code>
     *
     * <pre>
     *Columns
     * </pre>
     */
    java.util.List<? extends com.actiontech.dble.meta.protocol.StructureMeta.ColumnMetaOrBuilder> 
        getColumnsOrBuilderList();
    /**
     * <code>repeated .com.actiontech.dble.meta.protocol.ColumnMeta columns = 2;</code>
     *
     * <pre>
     *Columns
     * </pre>
     */
    com.actiontech.dble.meta.protocol.StructureMeta.ColumnMetaOrBuilder getColumnsOrBuilder(
        int index);

    /**
     * <code>optional bool isView = 3 [default = false];</code>
     */
    boolean hasIsView();
    /**
     * <code>optional bool isView = 3 [default = false];</code>
     */
    boolean getIsView();

    /**
     * <code>optional string createSql = 4;</code>
     */
    boolean hasCreateSql();
    /**
     * <code>optional string createSql = 4;</code>
     */
    java.lang.String getCreateSql();
    /**
     * <code>optional string createSql = 4;</code>
     */
    com.google.protobuf.ByteString
        getCreateSqlBytes();

    /**
     * <code>optional int64 version = 5;</code>
     */
    boolean hasVersion();
    /**
     * <code>optional int64 version = 5;</code>
     */
    long getVersion();

    /**
     * <code>optional int64 aiOffset = 6 [default = -1];</code>
     */
    boolean hasAiOffset();
    /**
     * <code>optional int64 aiOffset = 6 [default = -1];</code>
     */
    long getAiOffset();

    /**
     * <code>optional int32 type = 7;</code>
     */
    boolean hasType();
    /**
     * <code>optional int32 type = 7;</code>
     */
    int getType();

    /**
     * <code>optional int32 aiColPos = 8 [default = -1];</code>
     */
    boolean hasAiColPos();
    /**
     * <code>optional int32 aiColPos = 8 [default = -1];</code>
     */
    int getAiColPos();

    /**
     * <code>optional .com.actiontech.dble.meta.protocol.IndexMeta primary = 9;</code>
     */
    boolean hasPrimary();
    /**
     * <code>optional .com.actiontech.dble.meta.protocol.IndexMeta primary = 9;</code>
     */
    com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta getPrimary();
    /**
     * <code>optional .com.actiontech.dble.meta.protocol.IndexMeta primary = 9;</code>
     */
    com.actiontech.dble.meta.protocol.StructureMeta.IndexMetaOrBuilder getPrimaryOrBuilder();

    /**
     * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta uniIndex = 10;</code>
     */
    java.util.List<com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta> 
        getUniIndexList();
    /**
     * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta uniIndex = 10;</code>
     */
    com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta getUniIndex(int index);
    /**
     * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta uniIndex = 10;</code>
     */
    int getUniIndexCount();
    /**
     * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta uniIndex = 10;</code>
     */
    java.util.List<? extends com.actiontech.dble.meta.protocol.StructureMeta.IndexMetaOrBuilder> 
        getUniIndexOrBuilderList();
    /**
     * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta uniIndex = 10;</code>
     */
    com.actiontech.dble.meta.protocol.StructureMeta.IndexMetaOrBuilder getUniIndexOrBuilder(
        int index);

    /**
     * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta index = 11;</code>
     */
    java.util.List<com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta> 
        getIndexList();
    /**
     * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta index = 11;</code>
     */
    com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta getIndex(int index);
    /**
     * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta index = 11;</code>
     */
    int getIndexCount();
    /**
     * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta index = 11;</code>
     */
    java.util.List<? extends com.actiontech.dble.meta.protocol.StructureMeta.IndexMetaOrBuilder> 
        getIndexOrBuilderList();
    /**
     * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta index = 11;</code>
     */
    com.actiontech.dble.meta.protocol.StructureMeta.IndexMetaOrBuilder getIndexOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code com.actiontech.dble.meta.protocol.TableMeta}
   */
  public static final class TableMeta extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:com.actiontech.dble.meta.protocol.TableMeta)
      TableMetaOrBuilder {
    // Use TableMeta.newBuilder() to construct.
    private TableMeta(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private TableMeta(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final TableMeta defaultInstance;
    public static TableMeta getDefaultInstance() {
      return defaultInstance;
    }

    public TableMeta getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private TableMeta(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000001;
              tableName_ = bs;
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                columns_ = new java.util.ArrayList<com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta>();
                mutable_bitField0_ |= 0x00000002;
              }
              columns_.add(input.readMessage(com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta.PARSER, extensionRegistry));
              break;
            }
            case 24: {
              bitField0_ |= 0x00000002;
              isView_ = input.readBool();
              break;
            }
            case 34: {
              com.google.protobuf.ByteString bs = input.readBytes();
              bitField0_ |= 0x00000004;
              createSql_ = bs;
              break;
            }
            case 40: {
              bitField0_ |= 0x00000008;
              version_ = input.readInt64();
              break;
            }
            case 48: {
              bitField0_ |= 0x00000010;
              aiOffset_ = input.readInt64();
              break;
            }
            case 56: {
              bitField0_ |= 0x00000020;
              type_ = input.readInt32();
              break;
            }
            case 64: {
              bitField0_ |= 0x00000040;
              aiColPos_ = input.readInt32();
              break;
            }
            case 74: {
              com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.Builder subBuilder = null;
              if (((bitField0_ & 0x00000080) == 0x00000080)) {
                subBuilder = primary_.toBuilder();
              }
              primary_ = input.readMessage(com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(primary_);
                primary_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000080;
              break;
            }
            case 82: {
              if (!((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
                uniIndex_ = new java.util.ArrayList<com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta>();
                mutable_bitField0_ |= 0x00000200;
              }
              uniIndex_.add(input.readMessage(com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.PARSER, extensionRegistry));
              break;
            }
            case 90: {
              if (!((mutable_bitField0_ & 0x00000400) == 0x00000400)) {
                index_ = new java.util.ArrayList<com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta>();
                mutable_bitField0_ |= 0x00000400;
              }
              index_.add(input.readMessage(com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          columns_ = java.util.Collections.unmodifiableList(columns_);
        }
        if (((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
          uniIndex_ = java.util.Collections.unmodifiableList(uniIndex_);
        }
        if (((mutable_bitField0_ & 0x00000400) == 0x00000400)) {
          index_ = java.util.Collections.unmodifiableList(index_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.actiontech.dble.meta.protocol.StructureMeta.internal_static_com_actiontech_dble_meta_protocol_TableMeta_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.actiontech.dble.meta.protocol.StructureMeta.internal_static_com_actiontech_dble_meta_protocol_TableMeta_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.actiontech.dble.meta.protocol.StructureMeta.TableMeta.class, com.actiontech.dble.meta.protocol.StructureMeta.TableMeta.Builder.class);
    }

    public static com.google.protobuf.Parser<TableMeta> PARSER =
        new com.google.protobuf.AbstractParser<TableMeta>() {
      public TableMeta parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new TableMeta(input, extensionRegistry);
      }
    };

    @java.lang.Override
    public com.google.protobuf.Parser<TableMeta> getParserForType() {
      return PARSER;
    }

    private int bitField0_;
    public static final int TABLENAME_FIELD_NUMBER = 1;
    private java.lang.Object tableName_;
    /**
     * <code>optional string tableName = 1;</code>
     *
     * <pre>
     *tableName without dbName
     * </pre>
     */
    public boolean hasTableName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional string tableName = 1;</code>
     *
     * <pre>
     *tableName without dbName
     * </pre>
     */
    public java.lang.String getTableName() {
      java.lang.Object ref = tableName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          tableName_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string tableName = 1;</code>
     *
     * <pre>
     *tableName without dbName
     * </pre>
     */
    public com.google.protobuf.ByteString
        getTableNameBytes() {
      java.lang.Object ref = tableName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        tableName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int COLUMNS_FIELD_NUMBER = 2;
    private java.util.List<com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta> columns_;
    /**
     * <code>repeated .com.actiontech.dble.meta.protocol.ColumnMeta columns = 2;</code>
     *
     * <pre>
     *Columns
     * </pre>
     */
    public java.util.List<com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta> getColumnsList() {
      return columns_;
    }
    /**
     * <code>repeated .com.actiontech.dble.meta.protocol.ColumnMeta columns = 2;</code>
     *
     * <pre>
     *Columns
     * </pre>
     */
    public java.util.List<? extends com.actiontech.dble.meta.protocol.StructureMeta.ColumnMetaOrBuilder> 
        getColumnsOrBuilderList() {
      return columns_;
    }
    /**
     * <code>repeated .com.actiontech.dble.meta.protocol.ColumnMeta columns = 2;</code>
     *
     * <pre>
     *Columns
     * </pre>
     */
    public int getColumnsCount() {
      return columns_.size();
    }
    /**
     * <code>repeated .com.actiontech.dble.meta.protocol.ColumnMeta columns = 2;</code>
     *
     * <pre>
     *Columns
     * </pre>
     */
    public com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta getColumns(int index) {
      return columns_.get(index);
    }
    /**
     * <code>repeated .com.actiontech.dble.meta.protocol.ColumnMeta columns = 2;</code>
     *
     * <pre>
     *Columns
     * </pre>
     */
    public com.actiontech.dble.meta.protocol.StructureMeta.ColumnMetaOrBuilder getColumnsOrBuilder(
        int index) {
      return columns_.get(index);
    }

    public static final int ISVIEW_FIELD_NUMBER = 3;
    private boolean isView_;
    /**
     * <code>optional bool isView = 3 [default = false];</code>
     */
    public boolean hasIsView() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional bool isView = 3 [default = false];</code>
     */
    public boolean getIsView() {
      return isView_;
    }

    public static final int CREATESQL_FIELD_NUMBER = 4;
    private java.lang.Object createSql_;
    /**
     * <code>optional string createSql = 4;</code>
     */
    public boolean hasCreateSql() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional string createSql = 4;</code>
     */
    public java.lang.String getCreateSql() {
      java.lang.Object ref = createSql_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (bs.isValidUtf8()) {
          createSql_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string createSql = 4;</code>
     */
    public com.google.protobuf.ByteString
        getCreateSqlBytes() {
      java.lang.Object ref = createSql_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        createSql_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VERSION_FIELD_NUMBER = 5;
    private long version_;
    /**
     * <code>optional int64 version = 5;</code>
     */
    public boolean hasVersion() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional int64 version = 5;</code>
     */
    public long getVersion() {
      return version_;
    }

    public static final int AIOFFSET_FIELD_NUMBER = 6;
    private long aiOffset_;
    /**
     * <code>optional int64 aiOffset = 6 [default = -1];</code>
     */
    public boolean hasAiOffset() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>optional int64 aiOffset = 6 [default = -1];</code>
     */
    public long getAiOffset() {
      return aiOffset_;
    }

    public static final int TYPE_FIELD_NUMBER = 7;
    private int type_;
    /**
     * <code>optional int32 type = 7;</code>
     */
    public boolean hasType() {
      return ((bitField0_ & 0x00000020) == 0x00000020);
    }
    /**
     * <code>optional int32 type = 7;</code>
     */
    public int getType() {
      return type_;
    }

    public static final int AICOLPOS_FIELD_NUMBER = 8;
    private int aiColPos_;
    /**
     * <code>optional int32 aiColPos = 8 [default = -1];</code>
     */
    public boolean hasAiColPos() {
      return ((bitField0_ & 0x00000040) == 0x00000040);
    }
    /**
     * <code>optional int32 aiColPos = 8 [default = -1];</code>
     */
    public int getAiColPos() {
      return aiColPos_;
    }

    public static final int PRIMARY_FIELD_NUMBER = 9;
    private com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta primary_;
    /**
     * <code>optional .com.actiontech.dble.meta.protocol.IndexMeta primary = 9;</code>
     */
    public boolean hasPrimary() {
      return ((bitField0_ & 0x00000080) == 0x00000080);
    }
    /**
     * <code>optional .com.actiontech.dble.meta.protocol.IndexMeta primary = 9;</code>
     */
    public com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta getPrimary() {
      return primary_;
    }
    /**
     * <code>optional .com.actiontech.dble.meta.protocol.IndexMeta primary = 9;</code>
     */
    public com.actiontech.dble.meta.protocol.StructureMeta.IndexMetaOrBuilder getPrimaryOrBuilder() {
      return primary_;
    }

    public static final int UNIINDEX_FIELD_NUMBER = 10;
    private java.util.List<com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta> uniIndex_;
    /**
     * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta uniIndex = 10;</code>
     */
    public java.util.List<com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta> getUniIndexList() {
      return uniIndex_;
    }
    /**
     * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta uniIndex = 10;</code>
     */
    public java.util.List<? extends com.actiontech.dble.meta.protocol.StructureMeta.IndexMetaOrBuilder> 
        getUniIndexOrBuilderList() {
      return uniIndex_;
    }
    /**
     * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta uniIndex = 10;</code>
     */
    public int getUniIndexCount() {
      return uniIndex_.size();
    }
    /**
     * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta uniIndex = 10;</code>
     */
    public com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta getUniIndex(int index) {
      return uniIndex_.get(index);
    }
    /**
     * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta uniIndex = 10;</code>
     */
    public com.actiontech.dble.meta.protocol.StructureMeta.IndexMetaOrBuilder getUniIndexOrBuilder(
        int index) {
      return uniIndex_.get(index);
    }

    public static final int INDEX_FIELD_NUMBER = 11;
    private java.util.List<com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta> index_;
    /**
     * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta index = 11;</code>
     */
    public java.util.List<com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta> getIndexList() {
      return index_;
    }
    /**
     * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta index = 11;</code>
     */
    public java.util.List<? extends com.actiontech.dble.meta.protocol.StructureMeta.IndexMetaOrBuilder> 
        getIndexOrBuilderList() {
      return index_;
    }
    /**
     * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta index = 11;</code>
     */
    public int getIndexCount() {
      return index_.size();
    }
    /**
     * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta index = 11;</code>
     */
    public com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta getIndex(int index) {
      return index_.get(index);
    }
    /**
     * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta index = 11;</code>
     */
    public com.actiontech.dble.meta.protocol.StructureMeta.IndexMetaOrBuilder getIndexOrBuilder(
        int index) {
      return index_.get(index);
    }

    private void initFields() {
      tableName_ = "";
      columns_ = java.util.Collections.emptyList();
      isView_ = false;
      createSql_ = "";
      version_ = 0L;
      aiOffset_ = -1L;
      type_ = 0;
      aiColPos_ = -1;
      primary_ = com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.getDefaultInstance();
      uniIndex_ = java.util.Collections.emptyList();
      index_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      for (int i = 0; i < getColumnsCount(); i++) {
        if (!getColumns(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasPrimary()) {
        if (!getPrimary().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getUniIndexCount(); i++) {
        if (!getUniIndex(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getIndexCount(); i++) {
        if (!getIndex(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 < columns_.size(); i++) {
        output.writeMessage(2, columns_.get(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBool(3, isView_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBytes(4, getCreateSqlBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeInt64(5, version_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeInt64(6, aiOffset_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeInt32(7, type_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeInt32(8, aiColPos_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        output.writeMessage(9, primary_);
      }
      for (int i = 0; i < uniIndex_.size(); i++) {
        output.writeMessage(10, uniIndex_.get(i));
      }
      for (int i = 0; i < index_.size(); i++) {
        output.writeMessage(11, index_.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 < columns_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, columns_.get(i));
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, isView_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, getCreateSqlBytes());
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(5, version_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(6, aiOffset_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(7, type_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(8, aiColPos_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, primary_);
      }
      for (int i = 0; i < uniIndex_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, uniIndex_.get(i));
      }
      for (int i = 0; i < index_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(11, index_.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();
    }

    public static com.actiontech.dble.meta.protocol.StructureMeta.TableMeta parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.actiontech.dble.meta.protocol.StructureMeta.TableMeta parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.actiontech.dble.meta.protocol.StructureMeta.TableMeta parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.actiontech.dble.meta.protocol.StructureMeta.TableMeta parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.actiontech.dble.meta.protocol.StructureMeta.TableMeta parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static com.actiontech.dble.meta.protocol.StructureMeta.TableMeta parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static com.actiontech.dble.meta.protocol.StructureMeta.TableMeta parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static com.actiontech.dble.meta.protocol.StructureMeta.TableMeta parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static com.actiontech.dble.meta.protocol.StructureMeta.TableMeta parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static com.actiontech.dble.meta.protocol.StructureMeta.TableMeta parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(com.actiontech.dble.meta.protocol.StructureMeta.TableMeta 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;
    }
    /**
     * Protobuf type {@code com.actiontech.dble.meta.protocol.TableMeta}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:com.actiontech.dble.meta.protocol.TableMeta)
        com.actiontech.dble.meta.protocol.StructureMeta.TableMetaOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.actiontech.dble.meta.protocol.StructureMeta.internal_static_com_actiontech_dble_meta_protocol_TableMeta_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.actiontech.dble.meta.protocol.StructureMeta.internal_static_com_actiontech_dble_meta_protocol_TableMeta_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.actiontech.dble.meta.protocol.StructureMeta.TableMeta.class, com.actiontech.dble.meta.protocol.StructureMeta.TableMeta.Builder.class);
      }

      // Construct using com.actiontech.dble.meta.protocol.StructureMeta.TableMeta.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getColumnsFieldBuilder();
          getPrimaryFieldBuilder();
          getUniIndexFieldBuilder();
          getIndexFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        tableName_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        if (columnsBuilder_ == null) {
          columns_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          columnsBuilder_.clear();
        }
        isView_ = false;
        bitField0_ = (bitField0_ & ~0x00000004);
        createSql_ = "";
        bitField0_ = (bitField0_ & ~0x00000008);
        version_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000010);
        aiOffset_ = -1L;
        bitField0_ = (bitField0_ & ~0x00000020);
        type_ = 0;
        bitField0_ = (bitField0_ & ~0x00000040);
        aiColPos_ = -1;
        bitField0_ = (bitField0_ & ~0x00000080);
        if (primaryBuilder_ == null) {
          primary_ = com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.getDefaultInstance();
        } else {
          primaryBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000100);
        if (uniIndexBuilder_ == null) {
          uniIndex_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000200);
        } else {
          uniIndexBuilder_.clear();
        }
        if (indexBuilder_ == null) {
          index_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000400);
        } else {
          indexBuilder_.clear();
        }
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.actiontech.dble.meta.protocol.StructureMeta.internal_static_com_actiontech_dble_meta_protocol_TableMeta_descriptor;
      }

      public com.actiontech.dble.meta.protocol.StructureMeta.TableMeta getDefaultInstanceForType() {
        return com.actiontech.dble.meta.protocol.StructureMeta.TableMeta.getDefaultInstance();
      }

      public com.actiontech.dble.meta.protocol.StructureMeta.TableMeta build() {
        com.actiontech.dble.meta.protocol.StructureMeta.TableMeta result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public com.actiontech.dble.meta.protocol.StructureMeta.TableMeta buildPartial() {
        com.actiontech.dble.meta.protocol.StructureMeta.TableMeta result = new com.actiontech.dble.meta.protocol.StructureMeta.TableMeta(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.tableName_ = tableName_;
        if (columnsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            columns_ = java.util.Collections.unmodifiableList(columns_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.columns_ = columns_;
        } else {
          result.columns_ = columnsBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000002;
        }
        result.isView_ = isView_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000004;
        }
        result.createSql_ = createSql_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000008;
        }
        result.version_ = version_;
        if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
          to_bitField0_ |= 0x00000010;
        }
        result.aiOffset_ = aiOffset_;
        if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
          to_bitField0_ |= 0x00000020;
        }
        result.type_ = type_;
        if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
          to_bitField0_ |= 0x00000040;
        }
        result.aiColPos_ = aiColPos_;
        if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
          to_bitField0_ |= 0x00000080;
        }
        if (primaryBuilder_ == null) {
          result.primary_ = primary_;
        } else {
          result.primary_ = primaryBuilder_.build();
        }
        if (uniIndexBuilder_ == null) {
          if (((bitField0_ & 0x00000200) == 0x00000200)) {
            uniIndex_ = java.util.Collections.unmodifiableList(uniIndex_);
            bitField0_ = (bitField0_ & ~0x00000200);
          }
          result.uniIndex_ = uniIndex_;
        } else {
          result.uniIndex_ = uniIndexBuilder_.build();
        }
        if (indexBuilder_ == null) {
          if (((bitField0_ & 0x00000400) == 0x00000400)) {
            index_ = java.util.Collections.unmodifiableList(index_);
            bitField0_ = (bitField0_ & ~0x00000400);
          }
          result.index_ = index_;
        } else {
          result.index_ = indexBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.actiontech.dble.meta.protocol.StructureMeta.TableMeta) {
          return mergeFrom((com.actiontech.dble.meta.protocol.StructureMeta.TableMeta)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.actiontech.dble.meta.protocol.StructureMeta.TableMeta other) {
        if (other == com.actiontech.dble.meta.protocol.StructureMeta.TableMeta.getDefaultInstance()) return this;
        if (other.hasTableName()) {
          bitField0_ |= 0x00000001;
          tableName_ = other.tableName_;
          onChanged();
        }
        if (columnsBuilder_ == null) {
          if (!other.columns_.isEmpty()) {
            if (columns_.isEmpty()) {
              columns_ = other.columns_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureColumnsIsMutable();
              columns_.addAll(other.columns_);
            }
            onChanged();
          }
        } else {
          if (!other.columns_.isEmpty()) {
            if (columnsBuilder_.isEmpty()) {
              columnsBuilder_.dispose();
              columnsBuilder_ = null;
              columns_ = other.columns_;
              bitField0_ = (bitField0_ & ~0x00000002);
              columnsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getColumnsFieldBuilder() : null;
            } else {
              columnsBuilder_.addAllMessages(other.columns_);
            }
          }
        }
        if (other.hasIsView()) {
          setIsView(other.getIsView());
        }
        if (other.hasCreateSql()) {
          bitField0_ |= 0x00000008;
          createSql_ = other.createSql_;
          onChanged();
        }
        if (other.hasVersion()) {
          setVersion(other.getVersion());
        }
        if (other.hasAiOffset()) {
          setAiOffset(other.getAiOffset());
        }
        if (other.hasType()) {
          setType(other.getType());
        }
        if (other.hasAiColPos()) {
          setAiColPos(other.getAiColPos());
        }
        if (other.hasPrimary()) {
          mergePrimary(other.getPrimary());
        }
        if (uniIndexBuilder_ == null) {
          if (!other.uniIndex_.isEmpty()) {
            if (uniIndex_.isEmpty()) {
              uniIndex_ = other.uniIndex_;
              bitField0_ = (bitField0_ & ~0x00000200);
            } else {
              ensureUniIndexIsMutable();
              uniIndex_.addAll(other.uniIndex_);
            }
            onChanged();
          }
        } else {
          if (!other.uniIndex_.isEmpty()) {
            if (uniIndexBuilder_.isEmpty()) {
              uniIndexBuilder_.dispose();
              uniIndexBuilder_ = null;
              uniIndex_ = other.uniIndex_;
              bitField0_ = (bitField0_ & ~0x00000200);
              uniIndexBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getUniIndexFieldBuilder() : null;
            } else {
              uniIndexBuilder_.addAllMessages(other.uniIndex_);
            }
          }
        }
        if (indexBuilder_ == null) {
          if (!other.index_.isEmpty()) {
            if (index_.isEmpty()) {
              index_ = other.index_;
              bitField0_ = (bitField0_ & ~0x00000400);
            } else {
              ensureIndexIsMutable();
              index_.addAll(other.index_);
            }
            onChanged();
          }
        } else {
          if (!other.index_.isEmpty()) {
            if (indexBuilder_.isEmpty()) {
              indexBuilder_.dispose();
              indexBuilder_ = null;
              index_ = other.index_;
              bitField0_ = (bitField0_ & ~0x00000400);
              indexBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getIndexFieldBuilder() : null;
            } else {
              indexBuilder_.addAllMessages(other.index_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        for (int i = 0; i < getColumnsCount(); i++) {
          if (!getColumns(i).isInitialized()) {
            
            return false;
          }
        }
        if (hasPrimary()) {
          if (!getPrimary().isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getUniIndexCount(); i++) {
          if (!getUniIndex(i).isInitialized()) {
            
            return false;
          }
        }
        for (int i = 0; i < getIndexCount(); i++) {
          if (!getIndex(i).isInitialized()) {
            
            return false;
          }
        }
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.actiontech.dble.meta.protocol.StructureMeta.TableMeta parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.actiontech.dble.meta.protocol.StructureMeta.TableMeta) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object tableName_ = "";
      /**
       * <code>optional string tableName = 1;</code>
       *
       * <pre>
       *tableName without dbName
       * </pre>
       */
      public boolean hasTableName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional string tableName = 1;</code>
       *
       * <pre>
       *tableName without dbName
       * </pre>
       */
      public java.lang.String getTableName() {
        java.lang.Object ref = tableName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            tableName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string tableName = 1;</code>
       *
       * <pre>
       *tableName without dbName
       * </pre>
       */
      public com.google.protobuf.ByteString
          getTableNameBytes() {
        java.lang.Object ref = tableName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          tableName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string tableName = 1;</code>
       *
       * <pre>
       *tableName without dbName
       * </pre>
       */
      public Builder setTableName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        tableName_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string tableName = 1;</code>
       *
       * <pre>
       *tableName without dbName
       * </pre>
       */
      public Builder clearTableName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        tableName_ = getDefaultInstance().getTableName();
        onChanged();
        return this;
      }
      /**
       * <code>optional string tableName = 1;</code>
       *
       * <pre>
       *tableName without dbName
       * </pre>
       */
      public Builder setTableNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        tableName_ = value;
        onChanged();
        return this;
      }

      private java.util.List<com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta> columns_ =
        java.util.Collections.emptyList();
      private void ensureColumnsIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          columns_ = new java.util.ArrayList<com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta>(columns_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta, com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta.Builder, com.actiontech.dble.meta.protocol.StructureMeta.ColumnMetaOrBuilder> columnsBuilder_;

      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.ColumnMeta columns = 2;</code>
       *
       * <pre>
       *Columns
       * </pre>
       */
      public java.util.List<com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta> getColumnsList() {
        if (columnsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(columns_);
        } else {
          return columnsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.ColumnMeta columns = 2;</code>
       *
       * <pre>
       *Columns
       * </pre>
       */
      public int getColumnsCount() {
        if (columnsBuilder_ == null) {
          return columns_.size();
        } else {
          return columnsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.ColumnMeta columns = 2;</code>
       *
       * <pre>
       *Columns
       * </pre>
       */
      public com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta getColumns(int index) {
        if (columnsBuilder_ == null) {
          return columns_.get(index);
        } else {
          return columnsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.ColumnMeta columns = 2;</code>
       *
       * <pre>
       *Columns
       * </pre>
       */
      public Builder setColumns(
          int index, com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta value) {
        if (columnsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureColumnsIsMutable();
          columns_.set(index, value);
          onChanged();
        } else {
          columnsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.ColumnMeta columns = 2;</code>
       *
       * <pre>
       *Columns
       * </pre>
       */
      public Builder setColumns(
          int index, com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta.Builder builderForValue) {
        if (columnsBuilder_ == null) {
          ensureColumnsIsMutable();
          columns_.set(index, builderForValue.build());
          onChanged();
        } else {
          columnsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.ColumnMeta columns = 2;</code>
       *
       * <pre>
       *Columns
       * </pre>
       */
      public Builder addColumns(com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta value) {
        if (columnsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureColumnsIsMutable();
          columns_.add(value);
          onChanged();
        } else {
          columnsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.ColumnMeta columns = 2;</code>
       *
       * <pre>
       *Columns
       * </pre>
       */
      public Builder addColumns(
          int index, com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta value) {
        if (columnsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureColumnsIsMutable();
          columns_.add(index, value);
          onChanged();
        } else {
          columnsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.ColumnMeta columns = 2;</code>
       *
       * <pre>
       *Columns
       * </pre>
       */
      public Builder addColumns(
          com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta.Builder builderForValue) {
        if (columnsBuilder_ == null) {
          ensureColumnsIsMutable();
          columns_.add(builderForValue.build());
          onChanged();
        } else {
          columnsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.ColumnMeta columns = 2;</code>
       *
       * <pre>
       *Columns
       * </pre>
       */
      public Builder addColumns(
          int index, com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta.Builder builderForValue) {
        if (columnsBuilder_ == null) {
          ensureColumnsIsMutable();
          columns_.add(index, builderForValue.build());
          onChanged();
        } else {
          columnsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.ColumnMeta columns = 2;</code>
       *
       * <pre>
       *Columns
       * </pre>
       */
      public Builder addAllColumns(
          java.lang.Iterable<? extends com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta> values) {
        if (columnsBuilder_ == null) {
          ensureColumnsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, columns_);
          onChanged();
        } else {
          columnsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.ColumnMeta columns = 2;</code>
       *
       * <pre>
       *Columns
       * </pre>
       */
      public Builder clearColumns() {
        if (columnsBuilder_ == null) {
          columns_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          columnsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.ColumnMeta columns = 2;</code>
       *
       * <pre>
       *Columns
       * </pre>
       */
      public Builder removeColumns(int index) {
        if (columnsBuilder_ == null) {
          ensureColumnsIsMutable();
          columns_.remove(index);
          onChanged();
        } else {
          columnsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.ColumnMeta columns = 2;</code>
       *
       * <pre>
       *Columns
       * </pre>
       */
      public com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta.Builder getColumnsBuilder(
          int index) {
        return getColumnsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.ColumnMeta columns = 2;</code>
       *
       * <pre>
       *Columns
       * </pre>
       */
      public com.actiontech.dble.meta.protocol.StructureMeta.ColumnMetaOrBuilder getColumnsOrBuilder(
          int index) {
        if (columnsBuilder_ == null) {
          return columns_.get(index);  } else {
          return columnsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.ColumnMeta columns = 2;</code>
       *
       * <pre>
       *Columns
       * </pre>
       */
      public java.util.List<? extends com.actiontech.dble.meta.protocol.StructureMeta.ColumnMetaOrBuilder> 
           getColumnsOrBuilderList() {
        if (columnsBuilder_ != null) {
          return columnsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(columns_);
        }
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.ColumnMeta columns = 2;</code>
       *
       * <pre>
       *Columns
       * </pre>
       */
      public com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta.Builder addColumnsBuilder() {
        return getColumnsFieldBuilder().addBuilder(
            com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta.getDefaultInstance());
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.ColumnMeta columns = 2;</code>
       *
       * <pre>
       *Columns
       * </pre>
       */
      public com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta.Builder addColumnsBuilder(
          int index) {
        return getColumnsFieldBuilder().addBuilder(
            index, com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta.getDefaultInstance());
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.ColumnMeta columns = 2;</code>
       *
       * <pre>
       *Columns
       * </pre>
       */
      public java.util.List<com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta.Builder> 
           getColumnsBuilderList() {
        return getColumnsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta, com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta.Builder, com.actiontech.dble.meta.protocol.StructureMeta.ColumnMetaOrBuilder> 
          getColumnsFieldBuilder() {
        if (columnsBuilder_ == null) {
          columnsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta, com.actiontech.dble.meta.protocol.StructureMeta.ColumnMeta.Builder, com.actiontech.dble.meta.protocol.StructureMeta.ColumnMetaOrBuilder>(
                  columns_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          columns_ = null;
        }
        return columnsBuilder_;
      }

      private boolean isView_ ;
      /**
       * <code>optional bool isView = 3 [default = false];</code>
       */
      public boolean hasIsView() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional bool isView = 3 [default = false];</code>
       */
      public boolean getIsView() {
        return isView_;
      }
      /**
       * <code>optional bool isView = 3 [default = false];</code>
       */
      public Builder setIsView(boolean value) {
        bitField0_ |= 0x00000004;
        isView_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool isView = 3 [default = false];</code>
       */
      public Builder clearIsView() {
        bitField0_ = (bitField0_ & ~0x00000004);
        isView_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object createSql_ = "";
      /**
       * <code>optional string createSql = 4;</code>
       */
      public boolean hasCreateSql() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional string createSql = 4;</code>
       */
      public java.lang.String getCreateSql() {
        java.lang.Object ref = createSql_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            createSql_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string createSql = 4;</code>
       */
      public com.google.protobuf.ByteString
          getCreateSqlBytes() {
        java.lang.Object ref = createSql_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          createSql_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string createSql = 4;</code>
       */
      public Builder setCreateSql(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        createSql_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string createSql = 4;</code>
       */
      public Builder clearCreateSql() {
        bitField0_ = (bitField0_ & ~0x00000008);
        createSql_ = getDefaultInstance().getCreateSql();
        onChanged();
        return this;
      }
      /**
       * <code>optional string createSql = 4;</code>
       */
      public Builder setCreateSqlBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000008;
        createSql_ = value;
        onChanged();
        return this;
      }

      private long version_ ;
      /**
       * <code>optional int64 version = 5;</code>
       */
      public boolean hasVersion() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional int64 version = 5;</code>
       */
      public long getVersion() {
        return version_;
      }
      /**
       * <code>optional int64 version = 5;</code>
       */
      public Builder setVersion(long value) {
        bitField0_ |= 0x00000010;
        version_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int64 version = 5;</code>
       */
      public Builder clearVersion() {
        bitField0_ = (bitField0_ & ~0x00000010);
        version_ = 0L;
        onChanged();
        return this;
      }

      private long aiOffset_ = -1L;
      /**
       * <code>optional int64 aiOffset = 6 [default = -1];</code>
       */
      public boolean hasAiOffset() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>optional int64 aiOffset = 6 [default = -1];</code>
       */
      public long getAiOffset() {
        return aiOffset_;
      }
      /**
       * <code>optional int64 aiOffset = 6 [default = -1];</code>
       */
      public Builder setAiOffset(long value) {
        bitField0_ |= 0x00000020;
        aiOffset_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int64 aiOffset = 6 [default = -1];</code>
       */
      public Builder clearAiOffset() {
        bitField0_ = (bitField0_ & ~0x00000020);
        aiOffset_ = -1L;
        onChanged();
        return this;
      }

      private int type_ ;
      /**
       * <code>optional int32 type = 7;</code>
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * <code>optional int32 type = 7;</code>
       */
      public int getType() {
        return type_;
      }
      /**
       * <code>optional int32 type = 7;</code>
       */
      public Builder setType(int value) {
        bitField0_ |= 0x00000040;
        type_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 type = 7;</code>
       */
      public Builder clearType() {
        bitField0_ = (bitField0_ & ~0x00000040);
        type_ = 0;
        onChanged();
        return this;
      }

      private int aiColPos_ = -1;
      /**
       * <code>optional int32 aiColPos = 8 [default = -1];</code>
       */
      public boolean hasAiColPos() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      /**
       * <code>optional int32 aiColPos = 8 [default = -1];</code>
       */
      public int getAiColPos() {
        return aiColPos_;
      }
      /**
       * <code>optional int32 aiColPos = 8 [default = -1];</code>
       */
      public Builder setAiColPos(int value) {
        bitField0_ |= 0x00000080;
        aiColPos_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 aiColPos = 8 [default = -1];</code>
       */
      public Builder clearAiColPos() {
        bitField0_ = (bitField0_ & ~0x00000080);
        aiColPos_ = -1;
        onChanged();
        return this;
      }

      private com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta primary_ = com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta, com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.Builder, com.actiontech.dble.meta.protocol.StructureMeta.IndexMetaOrBuilder> primaryBuilder_;
      /**
       * <code>optional .com.actiontech.dble.meta.protocol.IndexMeta primary = 9;</code>
       */
      public boolean hasPrimary() {
        return ((bitField0_ & 0x00000100) == 0x00000100);
      }
      /**
       * <code>optional .com.actiontech.dble.meta.protocol.IndexMeta primary = 9;</code>
       */
      public com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta getPrimary() {
        if (primaryBuilder_ == null) {
          return primary_;
        } else {
          return primaryBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .com.actiontech.dble.meta.protocol.IndexMeta primary = 9;</code>
       */
      public Builder setPrimary(com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta value) {
        if (primaryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          primary_ = value;
          onChanged();
        } else {
          primaryBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000100;
        return this;
      }
      /**
       * <code>optional .com.actiontech.dble.meta.protocol.IndexMeta primary = 9;</code>
       */
      public Builder setPrimary(
          com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.Builder builderForValue) {
        if (primaryBuilder_ == null) {
          primary_ = builderForValue.build();
          onChanged();
        } else {
          primaryBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000100;
        return this;
      }
      /**
       * <code>optional .com.actiontech.dble.meta.protocol.IndexMeta primary = 9;</code>
       */
      public Builder mergePrimary(com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta value) {
        if (primaryBuilder_ == null) {
          if (((bitField0_ & 0x00000100) == 0x00000100) &&
              primary_ != com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.getDefaultInstance()) {
            primary_ =
              com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.newBuilder(primary_).mergeFrom(value).buildPartial();
          } else {
            primary_ = value;
          }
          onChanged();
        } else {
          primaryBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000100;
        return this;
      }
      /**
       * <code>optional .com.actiontech.dble.meta.protocol.IndexMeta primary = 9;</code>
       */
      public Builder clearPrimary() {
        if (primaryBuilder_ == null) {
          primary_ = com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.getDefaultInstance();
          onChanged();
        } else {
          primaryBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000100);
        return this;
      }
      /**
       * <code>optional .com.actiontech.dble.meta.protocol.IndexMeta primary = 9;</code>
       */
      public com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.Builder getPrimaryBuilder() {
        bitField0_ |= 0x00000100;
        onChanged();
        return getPrimaryFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .com.actiontech.dble.meta.protocol.IndexMeta primary = 9;</code>
       */
      public com.actiontech.dble.meta.protocol.StructureMeta.IndexMetaOrBuilder getPrimaryOrBuilder() {
        if (primaryBuilder_ != null) {
          return primaryBuilder_.getMessageOrBuilder();
        } else {
          return primary_;
        }
      }
      /**
       * <code>optional .com.actiontech.dble.meta.protocol.IndexMeta primary = 9;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta, com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.Builder, com.actiontech.dble.meta.protocol.StructureMeta.IndexMetaOrBuilder> 
          getPrimaryFieldBuilder() {
        if (primaryBuilder_ == null) {
          primaryBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta, com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.Builder, com.actiontech.dble.meta.protocol.StructureMeta.IndexMetaOrBuilder>(
                  getPrimary(),
                  getParentForChildren(),
                  isClean());
          primary_ = null;
        }
        return primaryBuilder_;
      }

      private java.util.List<com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta> uniIndex_ =
        java.util.Collections.emptyList();
      private void ensureUniIndexIsMutable() {
        if (!((bitField0_ & 0x00000200) == 0x00000200)) {
          uniIndex_ = new java.util.ArrayList<com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta>(uniIndex_);
          bitField0_ |= 0x00000200;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta, com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.Builder, com.actiontech.dble.meta.protocol.StructureMeta.IndexMetaOrBuilder> uniIndexBuilder_;

      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta uniIndex = 10;</code>
       */
      public java.util.List<com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta> getUniIndexList() {
        if (uniIndexBuilder_ == null) {
          return java.util.Collections.unmodifiableList(uniIndex_);
        } else {
          return uniIndexBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta uniIndex = 10;</code>
       */
      public int getUniIndexCount() {
        if (uniIndexBuilder_ == null) {
          return uniIndex_.size();
        } else {
          return uniIndexBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta uniIndex = 10;</code>
       */
      public com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta getUniIndex(int index) {
        if (uniIndexBuilder_ == null) {
          return uniIndex_.get(index);
        } else {
          return uniIndexBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta uniIndex = 10;</code>
       */
      public Builder setUniIndex(
          int index, com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta value) {
        if (uniIndexBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureUniIndexIsMutable();
          uniIndex_.set(index, value);
          onChanged();
        } else {
          uniIndexBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta uniIndex = 10;</code>
       */
      public Builder setUniIndex(
          int index, com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.Builder builderForValue) {
        if (uniIndexBuilder_ == null) {
          ensureUniIndexIsMutable();
          uniIndex_.set(index, builderForValue.build());
          onChanged();
        } else {
          uniIndexBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta uniIndex = 10;</code>
       */
      public Builder addUniIndex(com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta value) {
        if (uniIndexBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureUniIndexIsMutable();
          uniIndex_.add(value);
          onChanged();
        } else {
          uniIndexBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta uniIndex = 10;</code>
       */
      public Builder addUniIndex(
          int index, com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta value) {
        if (uniIndexBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureUniIndexIsMutable();
          uniIndex_.add(index, value);
          onChanged();
        } else {
          uniIndexBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta uniIndex = 10;</code>
       */
      public Builder addUniIndex(
          com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.Builder builderForValue) {
        if (uniIndexBuilder_ == null) {
          ensureUniIndexIsMutable();
          uniIndex_.add(builderForValue.build());
          onChanged();
        } else {
          uniIndexBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta uniIndex = 10;</code>
       */
      public Builder addUniIndex(
          int index, com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.Builder builderForValue) {
        if (uniIndexBuilder_ == null) {
          ensureUniIndexIsMutable();
          uniIndex_.add(index, builderForValue.build());
          onChanged();
        } else {
          uniIndexBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta uniIndex = 10;</code>
       */
      public Builder addAllUniIndex(
          java.lang.Iterable<? extends com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta> values) {
        if (uniIndexBuilder_ == null) {
          ensureUniIndexIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, uniIndex_);
          onChanged();
        } else {
          uniIndexBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta uniIndex = 10;</code>
       */
      public Builder clearUniIndex() {
        if (uniIndexBuilder_ == null) {
          uniIndex_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000200);
          onChanged();
        } else {
          uniIndexBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta uniIndex = 10;</code>
       */
      public Builder removeUniIndex(int index) {
        if (uniIndexBuilder_ == null) {
          ensureUniIndexIsMutable();
          uniIndex_.remove(index);
          onChanged();
        } else {
          uniIndexBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta uniIndex = 10;</code>
       */
      public com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.Builder getUniIndexBuilder(
          int index) {
        return getUniIndexFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta uniIndex = 10;</code>
       */
      public com.actiontech.dble.meta.protocol.StructureMeta.IndexMetaOrBuilder getUniIndexOrBuilder(
          int index) {
        if (uniIndexBuilder_ == null) {
          return uniIndex_.get(index);  } else {
          return uniIndexBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta uniIndex = 10;</code>
       */
      public java.util.List<? extends com.actiontech.dble.meta.protocol.StructureMeta.IndexMetaOrBuilder> 
           getUniIndexOrBuilderList() {
        if (uniIndexBuilder_ != null) {
          return uniIndexBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(uniIndex_);
        }
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta uniIndex = 10;</code>
       */
      public com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.Builder addUniIndexBuilder() {
        return getUniIndexFieldBuilder().addBuilder(
            com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.getDefaultInstance());
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta uniIndex = 10;</code>
       */
      public com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.Builder addUniIndexBuilder(
          int index) {
        return getUniIndexFieldBuilder().addBuilder(
            index, com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.getDefaultInstance());
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta uniIndex = 10;</code>
       */
      public java.util.List<com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.Builder> 
           getUniIndexBuilderList() {
        return getUniIndexFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta, com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.Builder, com.actiontech.dble.meta.protocol.StructureMeta.IndexMetaOrBuilder> 
          getUniIndexFieldBuilder() {
        if (uniIndexBuilder_ == null) {
          uniIndexBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta, com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.Builder, com.actiontech.dble.meta.protocol.StructureMeta.IndexMetaOrBuilder>(
                  uniIndex_,
                  ((bitField0_ & 0x00000200) == 0x00000200),
                  getParentForChildren(),
                  isClean());
          uniIndex_ = null;
        }
        return uniIndexBuilder_;
      }

      private java.util.List<com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta> index_ =
        java.util.Collections.emptyList();
      private void ensureIndexIsMutable() {
        if (!((bitField0_ & 0x00000400) == 0x00000400)) {
          index_ = new java.util.ArrayList<com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta>(index_);
          bitField0_ |= 0x00000400;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta, com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.Builder, com.actiontech.dble.meta.protocol.StructureMeta.IndexMetaOrBuilder> indexBuilder_;

      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta index = 11;</code>
       */
      public java.util.List<com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta> getIndexList() {
        if (indexBuilder_ == null) {
          return java.util.Collections.unmodifiableList(index_);
        } else {
          return indexBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta index = 11;</code>
       */
      public int getIndexCount() {
        if (indexBuilder_ == null) {
          return index_.size();
        } else {
          return indexBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta index = 11;</code>
       */
      public com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta getIndex(int index) {
        if (indexBuilder_ == null) {
          return index_.get(index);
        } else {
          return indexBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta index = 11;</code>
       */
      public Builder setIndex(
          int index, com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta value) {
        if (indexBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureIndexIsMutable();
          index_.set(index, value);
          onChanged();
        } else {
          indexBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta index = 11;</code>
       */
      public Builder setIndex(
          int index, com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.Builder builderForValue) {
        if (indexBuilder_ == null) {
          ensureIndexIsMutable();
          index_.set(index, builderForValue.build());
          onChanged();
        } else {
          indexBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta index = 11;</code>
       */
      public Builder addIndex(com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta value) {
        if (indexBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureIndexIsMutable();
          index_.add(value);
          onChanged();
        } else {
          indexBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta index = 11;</code>
       */
      public Builder addIndex(
          int index, com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta value) {
        if (indexBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureIndexIsMutable();
          index_.add(index, value);
          onChanged();
        } else {
          indexBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta index = 11;</code>
       */
      public Builder addIndex(
          com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.Builder builderForValue) {
        if (indexBuilder_ == null) {
          ensureIndexIsMutable();
          index_.add(builderForValue.build());
          onChanged();
        } else {
          indexBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta index = 11;</code>
       */
      public Builder addIndex(
          int index, com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.Builder builderForValue) {
        if (indexBuilder_ == null) {
          ensureIndexIsMutable();
          index_.add(index, builderForValue.build());
          onChanged();
        } else {
          indexBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta index = 11;</code>
       */
      public Builder addAllIndex(
          java.lang.Iterable<? extends com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta> values) {
        if (indexBuilder_ == null) {
          ensureIndexIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, index_);
          onChanged();
        } else {
          indexBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta index = 11;</code>
       */
      public Builder clearIndex() {
        if (indexBuilder_ == null) {
          index_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000400);
          onChanged();
        } else {
          indexBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta index = 11;</code>
       */
      public Builder removeIndex(int index) {
        if (indexBuilder_ == null) {
          ensureIndexIsMutable();
          index_.remove(index);
          onChanged();
        } else {
          indexBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta index = 11;</code>
       */
      public com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.Builder getIndexBuilder(
          int index) {
        return getIndexFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta index = 11;</code>
       */
      public com.actiontech.dble.meta.protocol.StructureMeta.IndexMetaOrBuilder getIndexOrBuilder(
          int index) {
        if (indexBuilder_ == null) {
          return index_.get(index);  } else {
          return indexBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta index = 11;</code>
       */
      public java.util.List<? extends com.actiontech.dble.meta.protocol.StructureMeta.IndexMetaOrBuilder> 
           getIndexOrBuilderList() {
        if (indexBuilder_ != null) {
          return indexBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(index_);
        }
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta index = 11;</code>
       */
      public com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.Builder addIndexBuilder() {
        return getIndexFieldBuilder().addBuilder(
            com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.getDefaultInstance());
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta index = 11;</code>
       */
      public com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.Builder addIndexBuilder(
          int index) {
        return getIndexFieldBuilder().addBuilder(
            index, com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.getDefaultInstance());
      }
      /**
       * <code>repeated .com.actiontech.dble.meta.protocol.IndexMeta index = 11;</code>
       */
      public java.util.List<com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.Builder> 
           getIndexBuilderList() {
        return getIndexFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta, com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.Builder, com.actiontech.dble.meta.protocol.StructureMeta.IndexMetaOrBuilder> 
          getIndexFieldBuilder() {
        if (indexBuilder_ == null) {
          indexBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta, com.actiontech.dble.meta.protocol.StructureMeta.IndexMeta.Builder, com.actiontech.dble.meta.protocol.StructureMeta.IndexMetaOrBuilder>(
                  index_,
                  ((bitField0_ & 0x00000400) == 0x00000400),
                  getParentForChildren(),
                  isClean());
          index_ = null;
        }
        return indexBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:com.actiontech.dble.meta.protocol.TableMeta)
    }

    static {
      defaultInstance = new TableMeta(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:com.actiontech.dble.meta.protocol.TableMeta)
  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_actiontech_dble_meta_protocol_IndexMeta_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_com_actiontech_dble_meta_protocol_IndexMeta_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_actiontech_dble_meta_protocol_ColumnMeta_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_com_actiontech_dble_meta_protocol_ColumnMeta_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_actiontech_dble_meta_protocol_TableMeta_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_com_actiontech_dble_meta_protocol_TableMeta_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\023StructureMeta.proto\022!com.actiontech.db" +
      "le.meta.protocol\"8\n\tIndexMeta\022\014\n\004name\030\001 " +
      "\002(\t\022\014\n\004type\030\002 \002(\t\022\017\n\007columns\030\003 \003(\t\"\304\001\n\nC" +
      "olumnMeta\022\014\n\004name\030\001 \002(\t\022\020\n\010dataType\030\002 \002(" +
      "\t\022\022\n\nisUnsigned\030\003 \001(\010\022\016\n\006length\030\004 \001(\005\022\021\n" +
      "\tprecision\030\005 \001(\005\022\r\n\005scale\030\006 \001(\005\022\017\n\007canNu" +
      "ll\030\007 \001(\010\022\020\n\010sdefault\030\010 \001(\t\022\022\n\nauto_incre" +
      "\030\t \001(\010\022\031\n\013charsetname\030\n \001(\t:\004utf8\"\217\003\n\tTa" +
      "bleMeta\022\021\n\ttableName\030\001 \001(\t\022>\n\007columns\030\002 " +
      "\003(\0132-.com.actiontech.dble.meta.protocol.",
      "ColumnMeta\022\025\n\006isView\030\003 \001(\010:\005false\022\021\n\tcre" +
      "ateSql\030\004 \001(\t\022\017\n\007version\030\005 \001(\003\022\024\n\010aiOffse" +
      "t\030\006 \001(\003:\002-1\022\014\n\004type\030\007 \001(\005\022\024\n\010aiColPos\030\010 " +
      "\001(\005:\002-1\022=\n\007primary\030\t \001(\0132,.com.actiontec" +
      "h.dble.meta.protocol.IndexMeta\022>\n\010uniInd" +
      "ex\030\n \003(\0132,.com.actiontech.dble.meta.prot" +
      "ocol.IndexMeta\022;\n\005index\030\013 \003(\0132,.com.acti" +
      "ontech.dble.meta.protocol.IndexMetaB4\n!c" +
      "om.actiontech.dble.meta.protocolB\rStruct" +
      "ureMetaH\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;
            return null;
          }
        };
    com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        }, assigner);
    internal_static_com_actiontech_dble_meta_protocol_IndexMeta_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_com_actiontech_dble_meta_protocol_IndexMeta_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_com_actiontech_dble_meta_protocol_IndexMeta_descriptor,
        new java.lang.String[] { "Name", "Type", "Columns", });
    internal_static_com_actiontech_dble_meta_protocol_ColumnMeta_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_com_actiontech_dble_meta_protocol_ColumnMeta_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_com_actiontech_dble_meta_protocol_ColumnMeta_descriptor,
        new java.lang.String[] { "Name", "DataType", "IsUnsigned", "Length", "Precision", "Scale", "CanNull", "Sdefault", "AutoIncre", "Charsetname", });
    internal_static_com_actiontech_dble_meta_protocol_TableMeta_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_com_actiontech_dble_meta_protocol_TableMeta_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_com_actiontech_dble_meta_protocol_TableMeta_descriptor,
        new java.lang.String[] { "TableName", "Columns", "IsView", "CreateSql", "Version", "AiOffset", "Type", "AiColPos", "Primary", "UniIndex", "Index", });
  }

  // @@protoc_insertion_point(outer_class_scope)
}
