Descriptors.java

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

package org.apache.doris.proto;

public final class Descriptors {
  private Descriptors() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  /**
   * Protobuf enum {@code doris.PAccessPathType}
   */
  public enum PAccessPathType
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>DATA = 1;</code>
     */
    DATA(1),
    /**
     * <pre>
     * use to prune `where s.data is not null` by only scan the meta of s.data
     * </pre>
     *
     * <code>META = 2;</code>
     */
    META(2),
    ;

    /**
     * <code>DATA = 1;</code>
     */
    public static final int DATA_VALUE = 1;
    /**
     * <pre>
     * use to prune `where s.data is not null` by only scan the meta of s.data
     * </pre>
     *
     * <code>META = 2;</code>
     */
    public static final int META_VALUE = 2;


    public final int getNumber() {
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static PAccessPathType valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static PAccessPathType forNumber(int value) {
      switch (value) {
        case 1: return DATA;
        case 2: return META;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<PAccessPathType>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        PAccessPathType> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<PAccessPathType>() {
            public PAccessPathType findValueByNumber(int number) {
              return PAccessPathType.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return org.apache.doris.proto.Descriptors.getDescriptor().getEnumTypes().get(0);
    }

    private static final PAccessPathType[] VALUES = values();

    public static PAccessPathType valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private PAccessPathType(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:doris.PAccessPathType)
  }

  public interface PDataAccessPathOrBuilder extends
      // @@protoc_insertion_point(interface_extends:doris.PDataAccessPath)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * the specification of special path:
     *   &lt;empty&gt;: access the whole complex column
     *   *:
     *     1. access every items when the type is array
     *     2. access key and value when the type is map
     *   KEYS: only access the keys of map
     *   VALUES: only access the keys of map
     *
     * example:
     *  s: struct&lt;
     *    data: array&lt;
     *      map&lt;
     *        int,
     *        struct&lt;
     *          a: id
     *          b: double
     *        &gt;
     *      &gt;
     *    &gt;
     *  &gt;
     * if we want to access `map_keys(s.data[0])`, the path will be: ['s', 'data', '*', 'KEYS'],
     * if we want to access `map_values(s.data[0])[0].b`, the path will be: ['s', 'data', '*', 'VALUES', 'b'],
     * if we want to access `s.data[0]['k'].b`, the path will be ['s', 'data', '*', '*', 'b']
     * if we want to access the whole struct of s, the path will be: ['s'],
     * </pre>
     *
     * <code>repeated string path = 1;</code>
     * @return A list containing the path.
     */
    java.util.List<java.lang.String>
        getPathList();
    /**
     * <pre>
     * the specification of special path:
     *   &lt;empty&gt;: access the whole complex column
     *   *:
     *     1. access every items when the type is array
     *     2. access key and value when the type is map
     *   KEYS: only access the keys of map
     *   VALUES: only access the keys of map
     *
     * example:
     *  s: struct&lt;
     *    data: array&lt;
     *      map&lt;
     *        int,
     *        struct&lt;
     *          a: id
     *          b: double
     *        &gt;
     *      &gt;
     *    &gt;
     *  &gt;
     * if we want to access `map_keys(s.data[0])`, the path will be: ['s', 'data', '*', 'KEYS'],
     * if we want to access `map_values(s.data[0])[0].b`, the path will be: ['s', 'data', '*', 'VALUES', 'b'],
     * if we want to access `s.data[0]['k'].b`, the path will be ['s', 'data', '*', '*', 'b']
     * if we want to access the whole struct of s, the path will be: ['s'],
     * </pre>
     *
     * <code>repeated string path = 1;</code>
     * @return The count of path.
     */
    int getPathCount();
    /**
     * <pre>
     * the specification of special path:
     *   &lt;empty&gt;: access the whole complex column
     *   *:
     *     1. access every items when the type is array
     *     2. access key and value when the type is map
     *   KEYS: only access the keys of map
     *   VALUES: only access the keys of map
     *
     * example:
     *  s: struct&lt;
     *    data: array&lt;
     *      map&lt;
     *        int,
     *        struct&lt;
     *          a: id
     *          b: double
     *        &gt;
     *      &gt;
     *    &gt;
     *  &gt;
     * if we want to access `map_keys(s.data[0])`, the path will be: ['s', 'data', '*', 'KEYS'],
     * if we want to access `map_values(s.data[0])[0].b`, the path will be: ['s', 'data', '*', 'VALUES', 'b'],
     * if we want to access `s.data[0]['k'].b`, the path will be ['s', 'data', '*', '*', 'b']
     * if we want to access the whole struct of s, the path will be: ['s'],
     * </pre>
     *
     * <code>repeated string path = 1;</code>
     * @param index The index of the element to return.
     * @return The path at the given index.
     */
    java.lang.String getPath(int index);
    /**
     * <pre>
     * the specification of special path:
     *   &lt;empty&gt;: access the whole complex column
     *   *:
     *     1. access every items when the type is array
     *     2. access key and value when the type is map
     *   KEYS: only access the keys of map
     *   VALUES: only access the keys of map
     *
     * example:
     *  s: struct&lt;
     *    data: array&lt;
     *      map&lt;
     *        int,
     *        struct&lt;
     *          a: id
     *          b: double
     *        &gt;
     *      &gt;
     *    &gt;
     *  &gt;
     * if we want to access `map_keys(s.data[0])`, the path will be: ['s', 'data', '*', 'KEYS'],
     * if we want to access `map_values(s.data[0])[0].b`, the path will be: ['s', 'data', '*', 'VALUES', 'b'],
     * if we want to access `s.data[0]['k'].b`, the path will be ['s', 'data', '*', '*', 'b']
     * if we want to access the whole struct of s, the path will be: ['s'],
     * </pre>
     *
     * <code>repeated string path = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the path at the given index.
     */
    com.google.protobuf.ByteString
        getPathBytes(int index);
  }
  /**
   * Protobuf type {@code doris.PDataAccessPath}
   */
  public static final class PDataAccessPath extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:doris.PDataAccessPath)
      PDataAccessPathOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PDataAccessPath.newBuilder() to construct.
    private PDataAccessPath(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PDataAccessPath() {
      path_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new PDataAccessPath();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.doris.proto.Descriptors.internal_static_doris_PDataAccessPath_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.doris.proto.Descriptors.internal_static_doris_PDataAccessPath_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.doris.proto.Descriptors.PDataAccessPath.class, org.apache.doris.proto.Descriptors.PDataAccessPath.Builder.class);
    }

    public static final int PATH_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList path_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * the specification of special path:
     *   &lt;empty&gt;: access the whole complex column
     *   *:
     *     1. access every items when the type is array
     *     2. access key and value when the type is map
     *   KEYS: only access the keys of map
     *   VALUES: only access the keys of map
     *
     * example:
     *  s: struct&lt;
     *    data: array&lt;
     *      map&lt;
     *        int,
     *        struct&lt;
     *          a: id
     *          b: double
     *        &gt;
     *      &gt;
     *    &gt;
     *  &gt;
     * if we want to access `map_keys(s.data[0])`, the path will be: ['s', 'data', '*', 'KEYS'],
     * if we want to access `map_values(s.data[0])[0].b`, the path will be: ['s', 'data', '*', 'VALUES', 'b'],
     * if we want to access `s.data[0]['k'].b`, the path will be ['s', 'data', '*', '*', 'b']
     * if we want to access the whole struct of s, the path will be: ['s'],
     * </pre>
     *
     * <code>repeated string path = 1;</code>
     * @return A list containing the path.
     */
    public com.google.protobuf.ProtocolStringList
        getPathList() {
      return path_;
    }
    /**
     * <pre>
     * the specification of special path:
     *   &lt;empty&gt;: access the whole complex column
     *   *:
     *     1. access every items when the type is array
     *     2. access key and value when the type is map
     *   KEYS: only access the keys of map
     *   VALUES: only access the keys of map
     *
     * example:
     *  s: struct&lt;
     *    data: array&lt;
     *      map&lt;
     *        int,
     *        struct&lt;
     *          a: id
     *          b: double
     *        &gt;
     *      &gt;
     *    &gt;
     *  &gt;
     * if we want to access `map_keys(s.data[0])`, the path will be: ['s', 'data', '*', 'KEYS'],
     * if we want to access `map_values(s.data[0])[0].b`, the path will be: ['s', 'data', '*', 'VALUES', 'b'],
     * if we want to access `s.data[0]['k'].b`, the path will be ['s', 'data', '*', '*', 'b']
     * if we want to access the whole struct of s, the path will be: ['s'],
     * </pre>
     *
     * <code>repeated string path = 1;</code>
     * @return The count of path.
     */
    public int getPathCount() {
      return path_.size();
    }
    /**
     * <pre>
     * the specification of special path:
     *   &lt;empty&gt;: access the whole complex column
     *   *:
     *     1. access every items when the type is array
     *     2. access key and value when the type is map
     *   KEYS: only access the keys of map
     *   VALUES: only access the keys of map
     *
     * example:
     *  s: struct&lt;
     *    data: array&lt;
     *      map&lt;
     *        int,
     *        struct&lt;
     *          a: id
     *          b: double
     *        &gt;
     *      &gt;
     *    &gt;
     *  &gt;
     * if we want to access `map_keys(s.data[0])`, the path will be: ['s', 'data', '*', 'KEYS'],
     * if we want to access `map_values(s.data[0])[0].b`, the path will be: ['s', 'data', '*', 'VALUES', 'b'],
     * if we want to access `s.data[0]['k'].b`, the path will be ['s', 'data', '*', '*', 'b']
     * if we want to access the whole struct of s, the path will be: ['s'],
     * </pre>
     *
     * <code>repeated string path = 1;</code>
     * @param index The index of the element to return.
     * @return The path at the given index.
     */
    public java.lang.String getPath(int index) {
      return path_.get(index);
    }
    /**
     * <pre>
     * the specification of special path:
     *   &lt;empty&gt;: access the whole complex column
     *   *:
     *     1. access every items when the type is array
     *     2. access key and value when the type is map
     *   KEYS: only access the keys of map
     *   VALUES: only access the keys of map
     *
     * example:
     *  s: struct&lt;
     *    data: array&lt;
     *      map&lt;
     *        int,
     *        struct&lt;
     *          a: id
     *          b: double
     *        &gt;
     *      &gt;
     *    &gt;
     *  &gt;
     * if we want to access `map_keys(s.data[0])`, the path will be: ['s', 'data', '*', 'KEYS'],
     * if we want to access `map_values(s.data[0])[0].b`, the path will be: ['s', 'data', '*', 'VALUES', 'b'],
     * if we want to access `s.data[0]['k'].b`, the path will be ['s', 'data', '*', '*', 'b']
     * if we want to access the whole struct of s, the path will be: ['s'],
     * </pre>
     *
     * <code>repeated string path = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the path at the given index.
     */
    public com.google.protobuf.ByteString
        getPathBytes(int index) {
      return path_.getByteString(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < path_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, path_.getRaw(i));
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < path_.size(); i++) {
          dataSize += computeStringSizeNoTag(path_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getPathList().size();
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.doris.proto.Descriptors.PDataAccessPath)) {
        return super.equals(obj);
      }
      org.apache.doris.proto.Descriptors.PDataAccessPath other = (org.apache.doris.proto.Descriptors.PDataAccessPath) obj;

      if (!getPathList()
          .equals(other.getPathList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getPathCount() > 0) {
        hash = (37 * hash) + PATH_FIELD_NUMBER;
        hash = (53 * hash) + getPathList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.doris.proto.Descriptors.PDataAccessPath parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.doris.proto.Descriptors.PDataAccessPath parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.doris.proto.Descriptors.PDataAccessPath parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.doris.proto.Descriptors.PDataAccessPath parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.doris.proto.Descriptors.PDataAccessPath parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.doris.proto.Descriptors.PDataAccessPath parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.doris.proto.Descriptors.PDataAccessPath parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.doris.proto.Descriptors.PDataAccessPath parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.apache.doris.proto.Descriptors.PDataAccessPath parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.doris.proto.Descriptors.PDataAccessPath parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.apache.doris.proto.Descriptors.PDataAccessPath parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.doris.proto.Descriptors.PDataAccessPath parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.doris.proto.Descriptors.PDataAccessPath prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code doris.PDataAccessPath}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:doris.PDataAccessPath)
        org.apache.doris.proto.Descriptors.PDataAccessPathOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.doris.proto.Descriptors.internal_static_doris_PDataAccessPath_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.doris.proto.Descriptors.internal_static_doris_PDataAccessPath_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.doris.proto.Descriptors.PDataAccessPath.class, org.apache.doris.proto.Descriptors.PDataAccessPath.Builder.class);
      }

      // Construct using org.apache.doris.proto.Descriptors.PDataAccessPath.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        path_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.doris.proto.Descriptors.internal_static_doris_PDataAccessPath_descriptor;
      }

      @java.lang.Override
      public org.apache.doris.proto.Descriptors.PDataAccessPath getDefaultInstanceForType() {
        return org.apache.doris.proto.Descriptors.PDataAccessPath.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.doris.proto.Descriptors.PDataAccessPath build() {
        org.apache.doris.proto.Descriptors.PDataAccessPath result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.doris.proto.Descriptors.PDataAccessPath buildPartial() {
        org.apache.doris.proto.Descriptors.PDataAccessPath result = new org.apache.doris.proto.Descriptors.PDataAccessPath(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.doris.proto.Descriptors.PDataAccessPath result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          path_.makeImmutable();
          result.path_ = path_;
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.doris.proto.Descriptors.PDataAccessPath) {
          return mergeFrom((org.apache.doris.proto.Descriptors.PDataAccessPath)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.doris.proto.Descriptors.PDataAccessPath other) {
        if (other == org.apache.doris.proto.Descriptors.PDataAccessPath.getDefaultInstance()) return this;
        if (!other.path_.isEmpty()) {
          if (path_.isEmpty()) {
            path_ = other.path_;
            bitField0_ |= 0x00000001;
          } else {
            ensurePathIsMutable();
            path_.addAll(other.path_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensurePathIsMutable();
                path_.add(bs);
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.LazyStringArrayList path_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensurePathIsMutable() {
        if (!path_.isModifiable()) {
          path_ = new com.google.protobuf.LazyStringArrayList(path_);
        }
        bitField0_ |= 0x00000001;
      }
      /**
       * <pre>
       * the specification of special path:
       *   &lt;empty&gt;: access the whole complex column
       *   *:
       *     1. access every items when the type is array
       *     2. access key and value when the type is map
       *   KEYS: only access the keys of map
       *   VALUES: only access the keys of map
       *
       * example:
       *  s: struct&lt;
       *    data: array&lt;
       *      map&lt;
       *        int,
       *        struct&lt;
       *          a: id
       *          b: double
       *        &gt;
       *      &gt;
       *    &gt;
       *  &gt;
       * if we want to access `map_keys(s.data[0])`, the path will be: ['s', 'data', '*', 'KEYS'],
       * if we want to access `map_values(s.data[0])[0].b`, the path will be: ['s', 'data', '*', 'VALUES', 'b'],
       * if we want to access `s.data[0]['k'].b`, the path will be ['s', 'data', '*', '*', 'b']
       * if we want to access the whole struct of s, the path will be: ['s'],
       * </pre>
       *
       * <code>repeated string path = 1;</code>
       * @return A list containing the path.
       */
      public com.google.protobuf.ProtocolStringList
          getPathList() {
        path_.makeImmutable();
        return path_;
      }
      /**
       * <pre>
       * the specification of special path:
       *   &lt;empty&gt;: access the whole complex column
       *   *:
       *     1. access every items when the type is array
       *     2. access key and value when the type is map
       *   KEYS: only access the keys of map
       *   VALUES: only access the keys of map
       *
       * example:
       *  s: struct&lt;
       *    data: array&lt;
       *      map&lt;
       *        int,
       *        struct&lt;
       *          a: id
       *          b: double
       *        &gt;
       *      &gt;
       *    &gt;
       *  &gt;
       * if we want to access `map_keys(s.data[0])`, the path will be: ['s', 'data', '*', 'KEYS'],
       * if we want to access `map_values(s.data[0])[0].b`, the path will be: ['s', 'data', '*', 'VALUES', 'b'],
       * if we want to access `s.data[0]['k'].b`, the path will be ['s', 'data', '*', '*', 'b']
       * if we want to access the whole struct of s, the path will be: ['s'],
       * </pre>
       *
       * <code>repeated string path = 1;</code>
       * @return The count of path.
       */
      public int getPathCount() {
        return path_.size();
      }
      /**
       * <pre>
       * the specification of special path:
       *   &lt;empty&gt;: access the whole complex column
       *   *:
       *     1. access every items when the type is array
       *     2. access key and value when the type is map
       *   KEYS: only access the keys of map
       *   VALUES: only access the keys of map
       *
       * example:
       *  s: struct&lt;
       *    data: array&lt;
       *      map&lt;
       *        int,
       *        struct&lt;
       *          a: id
       *          b: double
       *        &gt;
       *      &gt;
       *    &gt;
       *  &gt;
       * if we want to access `map_keys(s.data[0])`, the path will be: ['s', 'data', '*', 'KEYS'],
       * if we want to access `map_values(s.data[0])[0].b`, the path will be: ['s', 'data', '*', 'VALUES', 'b'],
       * if we want to access `s.data[0]['k'].b`, the path will be ['s', 'data', '*', '*', 'b']
       * if we want to access the whole struct of s, the path will be: ['s'],
       * </pre>
       *
       * <code>repeated string path = 1;</code>
       * @param index The index of the element to return.
       * @return The path at the given index.
       */
      public java.lang.String getPath(int index) {
        return path_.get(index);
      }
      /**
       * <pre>
       * the specification of special path:
       *   &lt;empty&gt;: access the whole complex column
       *   *:
       *     1. access every items when the type is array
       *     2. access key and value when the type is map
       *   KEYS: only access the keys of map
       *   VALUES: only access the keys of map
       *
       * example:
       *  s: struct&lt;
       *    data: array&lt;
       *      map&lt;
       *        int,
       *        struct&lt;
       *          a: id
       *          b: double
       *        &gt;
       *      &gt;
       *    &gt;
       *  &gt;
       * if we want to access `map_keys(s.data[0])`, the path will be: ['s', 'data', '*', 'KEYS'],
       * if we want to access `map_values(s.data[0])[0].b`, the path will be: ['s', 'data', '*', 'VALUES', 'b'],
       * if we want to access `s.data[0]['k'].b`, the path will be ['s', 'data', '*', '*', 'b']
       * if we want to access the whole struct of s, the path will be: ['s'],
       * </pre>
       *
       * <code>repeated string path = 1;</code>
       * @param index The index of the value to return.
       * @return The bytes of the path at the given index.
       */
      public com.google.protobuf.ByteString
          getPathBytes(int index) {
        return path_.getByteString(index);
      }
      /**
       * <pre>
       * the specification of special path:
       *   &lt;empty&gt;: access the whole complex column
       *   *:
       *     1. access every items when the type is array
       *     2. access key and value when the type is map
       *   KEYS: only access the keys of map
       *   VALUES: only access the keys of map
       *
       * example:
       *  s: struct&lt;
       *    data: array&lt;
       *      map&lt;
       *        int,
       *        struct&lt;
       *          a: id
       *          b: double
       *        &gt;
       *      &gt;
       *    &gt;
       *  &gt;
       * if we want to access `map_keys(s.data[0])`, the path will be: ['s', 'data', '*', 'KEYS'],
       * if we want to access `map_values(s.data[0])[0].b`, the path will be: ['s', 'data', '*', 'VALUES', 'b'],
       * if we want to access `s.data[0]['k'].b`, the path will be ['s', 'data', '*', '*', 'b']
       * if we want to access the whole struct of s, the path will be: ['s'],
       * </pre>
       *
       * <code>repeated string path = 1;</code>
       * @param index The index to set the value at.
       * @param value The path to set.
       * @return This builder for chaining.
       */
      public Builder setPath(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensurePathIsMutable();
        path_.set(index, value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * the specification of special path:
       *   &lt;empty&gt;: access the whole complex column
       *   *:
       *     1. access every items when the type is array
       *     2. access key and value when the type is map
       *   KEYS: only access the keys of map
       *   VALUES: only access the keys of map
       *
       * example:
       *  s: struct&lt;
       *    data: array&lt;
       *      map&lt;
       *        int,
       *        struct&lt;
       *          a: id
       *          b: double
       *        &gt;
       *      &gt;
       *    &gt;
       *  &gt;
       * if we want to access `map_keys(s.data[0])`, the path will be: ['s', 'data', '*', 'KEYS'],
       * if we want to access `map_values(s.data[0])[0].b`, the path will be: ['s', 'data', '*', 'VALUES', 'b'],
       * if we want to access `s.data[0]['k'].b`, the path will be ['s', 'data', '*', '*', 'b']
       * if we want to access the whole struct of s, the path will be: ['s'],
       * </pre>
       *
       * <code>repeated string path = 1;</code>
       * @param value The path to add.
       * @return This builder for chaining.
       */
      public Builder addPath(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensurePathIsMutable();
        path_.add(value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * the specification of special path:
       *   &lt;empty&gt;: access the whole complex column
       *   *:
       *     1. access every items when the type is array
       *     2. access key and value when the type is map
       *   KEYS: only access the keys of map
       *   VALUES: only access the keys of map
       *
       * example:
       *  s: struct&lt;
       *    data: array&lt;
       *      map&lt;
       *        int,
       *        struct&lt;
       *          a: id
       *          b: double
       *        &gt;
       *      &gt;
       *    &gt;
       *  &gt;
       * if we want to access `map_keys(s.data[0])`, the path will be: ['s', 'data', '*', 'KEYS'],
       * if we want to access `map_values(s.data[0])[0].b`, the path will be: ['s', 'data', '*', 'VALUES', 'b'],
       * if we want to access `s.data[0]['k'].b`, the path will be ['s', 'data', '*', '*', 'b']
       * if we want to access the whole struct of s, the path will be: ['s'],
       * </pre>
       *
       * <code>repeated string path = 1;</code>
       * @param values The path to add.
       * @return This builder for chaining.
       */
      public Builder addAllPath(
          java.lang.Iterable<java.lang.String> values) {
        ensurePathIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, path_);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * the specification of special path:
       *   &lt;empty&gt;: access the whole complex column
       *   *:
       *     1. access every items when the type is array
       *     2. access key and value when the type is map
       *   KEYS: only access the keys of map
       *   VALUES: only access the keys of map
       *
       * example:
       *  s: struct&lt;
       *    data: array&lt;
       *      map&lt;
       *        int,
       *        struct&lt;
       *          a: id
       *          b: double
       *        &gt;
       *      &gt;
       *    &gt;
       *  &gt;
       * if we want to access `map_keys(s.data[0])`, the path will be: ['s', 'data', '*', 'KEYS'],
       * if we want to access `map_values(s.data[0])[0].b`, the path will be: ['s', 'data', '*', 'VALUES', 'b'],
       * if we want to access `s.data[0]['k'].b`, the path will be ['s', 'data', '*', '*', 'b']
       * if we want to access the whole struct of s, the path will be: ['s'],
       * </pre>
       *
       * <code>repeated string path = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearPath() {
        path_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * the specification of special path:
       *   &lt;empty&gt;: access the whole complex column
       *   *:
       *     1. access every items when the type is array
       *     2. access key and value when the type is map
       *   KEYS: only access the keys of map
       *   VALUES: only access the keys of map
       *
       * example:
       *  s: struct&lt;
       *    data: array&lt;
       *      map&lt;
       *        int,
       *        struct&lt;
       *          a: id
       *          b: double
       *        &gt;
       *      &gt;
       *    &gt;
       *  &gt;
       * if we want to access `map_keys(s.data[0])`, the path will be: ['s', 'data', '*', 'KEYS'],
       * if we want to access `map_values(s.data[0])[0].b`, the path will be: ['s', 'data', '*', 'VALUES', 'b'],
       * if we want to access `s.data[0]['k'].b`, the path will be ['s', 'data', '*', '*', 'b']
       * if we want to access the whole struct of s, the path will be: ['s'],
       * </pre>
       *
       * <code>repeated string path = 1;</code>
       * @param value The bytes of the path to add.
       * @return This builder for chaining.
       */
      public Builder addPathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensurePathIsMutable();
        path_.add(value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:doris.PDataAccessPath)
    }

    // @@protoc_insertion_point(class_scope:doris.PDataAccessPath)
    private static final org.apache.doris.proto.Descriptors.PDataAccessPath DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.doris.proto.Descriptors.PDataAccessPath();
    }

    public static org.apache.doris.proto.Descriptors.PDataAccessPath getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<PDataAccessPath>
        PARSER = new com.google.protobuf.AbstractParser<PDataAccessPath>() {
      @java.lang.Override
      public PDataAccessPath parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<PDataAccessPath> parser() {
      return PARSER;
    }

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

    @java.lang.Override
    public org.apache.doris.proto.Descriptors.PDataAccessPath getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PMetaAccessPathOrBuilder extends
      // @@protoc_insertion_point(interface_extends:doris.PMetaAccessPath)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated string path = 1;</code>
     * @return A list containing the path.
     */
    java.util.List<java.lang.String>
        getPathList();
    /**
     * <code>repeated string path = 1;</code>
     * @return The count of path.
     */
    int getPathCount();
    /**
     * <code>repeated string path = 1;</code>
     * @param index The index of the element to return.
     * @return The path at the given index.
     */
    java.lang.String getPath(int index);
    /**
     * <code>repeated string path = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the path at the given index.
     */
    com.google.protobuf.ByteString
        getPathBytes(int index);
  }
  /**
   * Protobuf type {@code doris.PMetaAccessPath}
   */
  public static final class PMetaAccessPath extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:doris.PMetaAccessPath)
      PMetaAccessPathOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PMetaAccessPath.newBuilder() to construct.
    private PMetaAccessPath(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PMetaAccessPath() {
      path_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new PMetaAccessPath();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.doris.proto.Descriptors.internal_static_doris_PMetaAccessPath_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.doris.proto.Descriptors.internal_static_doris_PMetaAccessPath_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.doris.proto.Descriptors.PMetaAccessPath.class, org.apache.doris.proto.Descriptors.PMetaAccessPath.Builder.class);
    }

    public static final int PATH_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList path_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <code>repeated string path = 1;</code>
     * @return A list containing the path.
     */
    public com.google.protobuf.ProtocolStringList
        getPathList() {
      return path_;
    }
    /**
     * <code>repeated string path = 1;</code>
     * @return The count of path.
     */
    public int getPathCount() {
      return path_.size();
    }
    /**
     * <code>repeated string path = 1;</code>
     * @param index The index of the element to return.
     * @return The path at the given index.
     */
    public java.lang.String getPath(int index) {
      return path_.get(index);
    }
    /**
     * <code>repeated string path = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the path at the given index.
     */
    public com.google.protobuf.ByteString
        getPathBytes(int index) {
      return path_.getByteString(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < path_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, path_.getRaw(i));
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < path_.size(); i++) {
          dataSize += computeStringSizeNoTag(path_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getPathList().size();
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.doris.proto.Descriptors.PMetaAccessPath)) {
        return super.equals(obj);
      }
      org.apache.doris.proto.Descriptors.PMetaAccessPath other = (org.apache.doris.proto.Descriptors.PMetaAccessPath) obj;

      if (!getPathList()
          .equals(other.getPathList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getPathCount() > 0) {
        hash = (37 * hash) + PATH_FIELD_NUMBER;
        hash = (53 * hash) + getPathList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.doris.proto.Descriptors.PMetaAccessPath parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.doris.proto.Descriptors.PMetaAccessPath parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.doris.proto.Descriptors.PMetaAccessPath parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.doris.proto.Descriptors.PMetaAccessPath parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.doris.proto.Descriptors.PMetaAccessPath parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.doris.proto.Descriptors.PMetaAccessPath parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.doris.proto.Descriptors.PMetaAccessPath parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.doris.proto.Descriptors.PMetaAccessPath parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.apache.doris.proto.Descriptors.PMetaAccessPath parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.doris.proto.Descriptors.PMetaAccessPath parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.apache.doris.proto.Descriptors.PMetaAccessPath parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.doris.proto.Descriptors.PMetaAccessPath parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.doris.proto.Descriptors.PMetaAccessPath prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code doris.PMetaAccessPath}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:doris.PMetaAccessPath)
        org.apache.doris.proto.Descriptors.PMetaAccessPathOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.doris.proto.Descriptors.internal_static_doris_PMetaAccessPath_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.doris.proto.Descriptors.internal_static_doris_PMetaAccessPath_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.doris.proto.Descriptors.PMetaAccessPath.class, org.apache.doris.proto.Descriptors.PMetaAccessPath.Builder.class);
      }

      // Construct using org.apache.doris.proto.Descriptors.PMetaAccessPath.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        path_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.doris.proto.Descriptors.internal_static_doris_PMetaAccessPath_descriptor;
      }

      @java.lang.Override
      public org.apache.doris.proto.Descriptors.PMetaAccessPath getDefaultInstanceForType() {
        return org.apache.doris.proto.Descriptors.PMetaAccessPath.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.doris.proto.Descriptors.PMetaAccessPath build() {
        org.apache.doris.proto.Descriptors.PMetaAccessPath result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.doris.proto.Descriptors.PMetaAccessPath buildPartial() {
        org.apache.doris.proto.Descriptors.PMetaAccessPath result = new org.apache.doris.proto.Descriptors.PMetaAccessPath(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.doris.proto.Descriptors.PMetaAccessPath result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          path_.makeImmutable();
          result.path_ = path_;
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.doris.proto.Descriptors.PMetaAccessPath) {
          return mergeFrom((org.apache.doris.proto.Descriptors.PMetaAccessPath)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.doris.proto.Descriptors.PMetaAccessPath other) {
        if (other == org.apache.doris.proto.Descriptors.PMetaAccessPath.getDefaultInstance()) return this;
        if (!other.path_.isEmpty()) {
          if (path_.isEmpty()) {
            path_ = other.path_;
            bitField0_ |= 0x00000001;
          } else {
            ensurePathIsMutable();
            path_.addAll(other.path_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensurePathIsMutable();
                path_.add(bs);
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.LazyStringArrayList path_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensurePathIsMutable() {
        if (!path_.isModifiable()) {
          path_ = new com.google.protobuf.LazyStringArrayList(path_);
        }
        bitField0_ |= 0x00000001;
      }
      /**
       * <code>repeated string path = 1;</code>
       * @return A list containing the path.
       */
      public com.google.protobuf.ProtocolStringList
          getPathList() {
        path_.makeImmutable();
        return path_;
      }
      /**
       * <code>repeated string path = 1;</code>
       * @return The count of path.
       */
      public int getPathCount() {
        return path_.size();
      }
      /**
       * <code>repeated string path = 1;</code>
       * @param index The index of the element to return.
       * @return The path at the given index.
       */
      public java.lang.String getPath(int index) {
        return path_.get(index);
      }
      /**
       * <code>repeated string path = 1;</code>
       * @param index The index of the value to return.
       * @return The bytes of the path at the given index.
       */
      public com.google.protobuf.ByteString
          getPathBytes(int index) {
        return path_.getByteString(index);
      }
      /**
       * <code>repeated string path = 1;</code>
       * @param index The index to set the value at.
       * @param value The path to set.
       * @return This builder for chaining.
       */
      public Builder setPath(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensurePathIsMutable();
        path_.set(index, value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>repeated string path = 1;</code>
       * @param value The path to add.
       * @return This builder for chaining.
       */
      public Builder addPath(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensurePathIsMutable();
        path_.add(value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>repeated string path = 1;</code>
       * @param values The path to add.
       * @return This builder for chaining.
       */
      public Builder addAllPath(
          java.lang.Iterable<java.lang.String> values) {
        ensurePathIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, path_);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>repeated string path = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearPath() {
        path_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);;
        onChanged();
        return this;
      }
      /**
       * <code>repeated string path = 1;</code>
       * @param value The bytes of the path to add.
       * @return This builder for chaining.
       */
      public Builder addPathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensurePathIsMutable();
        path_.add(value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:doris.PMetaAccessPath)
    }

    // @@protoc_insertion_point(class_scope:doris.PMetaAccessPath)
    private static final org.apache.doris.proto.Descriptors.PMetaAccessPath DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.doris.proto.Descriptors.PMetaAccessPath();
    }

    public static org.apache.doris.proto.Descriptors.PMetaAccessPath getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<PMetaAccessPath>
        PARSER = new com.google.protobuf.AbstractParser<PMetaAccessPath>() {
      @java.lang.Override
      public PMetaAccessPath parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<PMetaAccessPath> parser() {
      return PARSER;
    }

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

    @java.lang.Override
    public org.apache.doris.proto.Descriptors.PMetaAccessPath getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PColumnAccessPathOrBuilder extends
      // @@protoc_insertion_point(interface_extends:doris.PColumnAccessPath)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required .doris.PAccessPathType type = 1;</code>
     * @return Whether the type field is set.
     */
    boolean hasType();
    /**
     * <code>required .doris.PAccessPathType type = 1;</code>
     * @return The type.
     */
    org.apache.doris.proto.Descriptors.PAccessPathType getType();

    /**
     * <code>optional .doris.PDataAccessPath data_access_path = 2;</code>
     * @return Whether the dataAccessPath field is set.
     */
    boolean hasDataAccessPath();
    /**
     * <code>optional .doris.PDataAccessPath data_access_path = 2;</code>
     * @return The dataAccessPath.
     */
    org.apache.doris.proto.Descriptors.PDataAccessPath getDataAccessPath();
    /**
     * <code>optional .doris.PDataAccessPath data_access_path = 2;</code>
     */
    org.apache.doris.proto.Descriptors.PDataAccessPathOrBuilder getDataAccessPathOrBuilder();

    /**
     * <code>optional .doris.PMetaAccessPath meta_access_path = 3;</code>
     * @return Whether the metaAccessPath field is set.
     */
    boolean hasMetaAccessPath();
    /**
     * <code>optional .doris.PMetaAccessPath meta_access_path = 3;</code>
     * @return The metaAccessPath.
     */
    org.apache.doris.proto.Descriptors.PMetaAccessPath getMetaAccessPath();
    /**
     * <code>optional .doris.PMetaAccessPath meta_access_path = 3;</code>
     */
    org.apache.doris.proto.Descriptors.PMetaAccessPathOrBuilder getMetaAccessPathOrBuilder();
  }
  /**
   * Protobuf type {@code doris.PColumnAccessPath}
   */
  public static final class PColumnAccessPath extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:doris.PColumnAccessPath)
      PColumnAccessPathOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PColumnAccessPath.newBuilder() to construct.
    private PColumnAccessPath(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PColumnAccessPath() {
      type_ = 1;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new PColumnAccessPath();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.doris.proto.Descriptors.internal_static_doris_PColumnAccessPath_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.doris.proto.Descriptors.internal_static_doris_PColumnAccessPath_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.doris.proto.Descriptors.PColumnAccessPath.class, org.apache.doris.proto.Descriptors.PColumnAccessPath.Builder.class);
    }

    private int bitField0_;
    public static final int TYPE_FIELD_NUMBER = 1;
    private int type_ = 1;
    /**
     * <code>required .doris.PAccessPathType type = 1;</code>
     * @return Whether the type field is set.
     */
    @java.lang.Override public boolean hasType() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required .doris.PAccessPathType type = 1;</code>
     * @return The type.
     */
    @java.lang.Override public org.apache.doris.proto.Descriptors.PAccessPathType getType() {
      org.apache.doris.proto.Descriptors.PAccessPathType result = org.apache.doris.proto.Descriptors.PAccessPathType.forNumber(type_);
      return result == null ? org.apache.doris.proto.Descriptors.PAccessPathType.DATA : result;
    }

    public static final int DATA_ACCESS_PATH_FIELD_NUMBER = 2;
    private org.apache.doris.proto.Descriptors.PDataAccessPath dataAccessPath_;
    /**
     * <code>optional .doris.PDataAccessPath data_access_path = 2;</code>
     * @return Whether the dataAccessPath field is set.
     */
    @java.lang.Override
    public boolean hasDataAccessPath() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>optional .doris.PDataAccessPath data_access_path = 2;</code>
     * @return The dataAccessPath.
     */
    @java.lang.Override
    public org.apache.doris.proto.Descriptors.PDataAccessPath getDataAccessPath() {
      return dataAccessPath_ == null ? org.apache.doris.proto.Descriptors.PDataAccessPath.getDefaultInstance() : dataAccessPath_;
    }
    /**
     * <code>optional .doris.PDataAccessPath data_access_path = 2;</code>
     */
    @java.lang.Override
    public org.apache.doris.proto.Descriptors.PDataAccessPathOrBuilder getDataAccessPathOrBuilder() {
      return dataAccessPath_ == null ? org.apache.doris.proto.Descriptors.PDataAccessPath.getDefaultInstance() : dataAccessPath_;
    }

    public static final int META_ACCESS_PATH_FIELD_NUMBER = 3;
    private org.apache.doris.proto.Descriptors.PMetaAccessPath metaAccessPath_;
    /**
     * <code>optional .doris.PMetaAccessPath meta_access_path = 3;</code>
     * @return Whether the metaAccessPath field is set.
     */
    @java.lang.Override
    public boolean hasMetaAccessPath() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>optional .doris.PMetaAccessPath meta_access_path = 3;</code>
     * @return The metaAccessPath.
     */
    @java.lang.Override
    public org.apache.doris.proto.Descriptors.PMetaAccessPath getMetaAccessPath() {
      return metaAccessPath_ == null ? org.apache.doris.proto.Descriptors.PMetaAccessPath.getDefaultInstance() : metaAccessPath_;
    }
    /**
     * <code>optional .doris.PMetaAccessPath meta_access_path = 3;</code>
     */
    @java.lang.Override
    public org.apache.doris.proto.Descriptors.PMetaAccessPathOrBuilder getMetaAccessPathOrBuilder() {
      return metaAccessPath_ == null ? org.apache.doris.proto.Descriptors.PMetaAccessPath.getDefaultInstance() : metaAccessPath_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasType()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeEnum(1, type_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getDataAccessPath());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(3, getMetaAccessPath());
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, type_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getDataAccessPath());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getMetaAccessPath());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.doris.proto.Descriptors.PColumnAccessPath)) {
        return super.equals(obj);
      }
      org.apache.doris.proto.Descriptors.PColumnAccessPath other = (org.apache.doris.proto.Descriptors.PColumnAccessPath) obj;

      if (hasType() != other.hasType()) return false;
      if (hasType()) {
        if (type_ != other.type_) return false;
      }
      if (hasDataAccessPath() != other.hasDataAccessPath()) return false;
      if (hasDataAccessPath()) {
        if (!getDataAccessPath()
            .equals(other.getDataAccessPath())) return false;
      }
      if (hasMetaAccessPath() != other.hasMetaAccessPath()) return false;
      if (hasMetaAccessPath()) {
        if (!getMetaAccessPath()
            .equals(other.getMetaAccessPath())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasType()) {
        hash = (37 * hash) + TYPE_FIELD_NUMBER;
        hash = (53 * hash) + type_;
      }
      if (hasDataAccessPath()) {
        hash = (37 * hash) + DATA_ACCESS_PATH_FIELD_NUMBER;
        hash = (53 * hash) + getDataAccessPath().hashCode();
      }
      if (hasMetaAccessPath()) {
        hash = (37 * hash) + META_ACCESS_PATH_FIELD_NUMBER;
        hash = (53 * hash) + getMetaAccessPath().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.doris.proto.Descriptors.PColumnAccessPath parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.doris.proto.Descriptors.PColumnAccessPath parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.doris.proto.Descriptors.PColumnAccessPath parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.doris.proto.Descriptors.PColumnAccessPath parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.doris.proto.Descriptors.PColumnAccessPath parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.doris.proto.Descriptors.PColumnAccessPath parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.doris.proto.Descriptors.PColumnAccessPath parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.doris.proto.Descriptors.PColumnAccessPath parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.apache.doris.proto.Descriptors.PColumnAccessPath parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.doris.proto.Descriptors.PColumnAccessPath parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.apache.doris.proto.Descriptors.PColumnAccessPath parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.doris.proto.Descriptors.PColumnAccessPath parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.doris.proto.Descriptors.PColumnAccessPath prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code doris.PColumnAccessPath}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:doris.PColumnAccessPath)
        org.apache.doris.proto.Descriptors.PColumnAccessPathOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.doris.proto.Descriptors.internal_static_doris_PColumnAccessPath_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.doris.proto.Descriptors.internal_static_doris_PColumnAccessPath_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.doris.proto.Descriptors.PColumnAccessPath.class, org.apache.doris.proto.Descriptors.PColumnAccessPath.Builder.class);
      }

      // Construct using org.apache.doris.proto.Descriptors.PColumnAccessPath.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getDataAccessPathFieldBuilder();
          getMetaAccessPathFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        type_ = 1;
        dataAccessPath_ = null;
        if (dataAccessPathBuilder_ != null) {
          dataAccessPathBuilder_.dispose();
          dataAccessPathBuilder_ = null;
        }
        metaAccessPath_ = null;
        if (metaAccessPathBuilder_ != null) {
          metaAccessPathBuilder_.dispose();
          metaAccessPathBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.doris.proto.Descriptors.internal_static_doris_PColumnAccessPath_descriptor;
      }

      @java.lang.Override
      public org.apache.doris.proto.Descriptors.PColumnAccessPath getDefaultInstanceForType() {
        return org.apache.doris.proto.Descriptors.PColumnAccessPath.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.doris.proto.Descriptors.PColumnAccessPath build() {
        org.apache.doris.proto.Descriptors.PColumnAccessPath result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.doris.proto.Descriptors.PColumnAccessPath buildPartial() {
        org.apache.doris.proto.Descriptors.PColumnAccessPath result = new org.apache.doris.proto.Descriptors.PColumnAccessPath(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.doris.proto.Descriptors.PColumnAccessPath result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.type_ = type_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.dataAccessPath_ = dataAccessPathBuilder_ == null
              ? dataAccessPath_
              : dataAccessPathBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.metaAccessPath_ = metaAccessPathBuilder_ == null
              ? metaAccessPath_
              : metaAccessPathBuilder_.build();
          to_bitField0_ |= 0x00000004;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.doris.proto.Descriptors.PColumnAccessPath) {
          return mergeFrom((org.apache.doris.proto.Descriptors.PColumnAccessPath)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.doris.proto.Descriptors.PColumnAccessPath other) {
        if (other == org.apache.doris.proto.Descriptors.PColumnAccessPath.getDefaultInstance()) return this;
        if (other.hasType()) {
          setType(other.getType());
        }
        if (other.hasDataAccessPath()) {
          mergeDataAccessPath(other.getDataAccessPath());
        }
        if (other.hasMetaAccessPath()) {
          mergeMetaAccessPath(other.getMetaAccessPath());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasType()) {
          return false;
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                int tmpRaw = input.readEnum();
                org.apache.doris.proto.Descriptors.PAccessPathType tmpValue =
                    org.apache.doris.proto.Descriptors.PAccessPathType.forNumber(tmpRaw);
                if (tmpValue == null) {
                  mergeUnknownVarintField(1, tmpRaw);
                } else {
                  type_ = tmpRaw;
                  bitField0_ |= 0x00000001;
                }
                break;
              } // case 8
              case 18: {
                input.readMessage(
                    getDataAccessPathFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getMetaAccessPathFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private int type_ = 1;
      /**
       * <code>required .doris.PAccessPathType type = 1;</code>
       * @return Whether the type field is set.
       */
      @java.lang.Override public boolean hasType() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required .doris.PAccessPathType type = 1;</code>
       * @return The type.
       */
      @java.lang.Override
      public org.apache.doris.proto.Descriptors.PAccessPathType getType() {
        org.apache.doris.proto.Descriptors.PAccessPathType result = org.apache.doris.proto.Descriptors.PAccessPathType.forNumber(type_);
        return result == null ? org.apache.doris.proto.Descriptors.PAccessPathType.DATA : result;
      }
      /**
       * <code>required .doris.PAccessPathType type = 1;</code>
       * @param value The type to set.
       * @return This builder for chaining.
       */
      public Builder setType(org.apache.doris.proto.Descriptors.PAccessPathType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        type_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>required .doris.PAccessPathType type = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearType() {
        bitField0_ = (bitField0_ & ~0x00000001);
        type_ = 1;
        onChanged();
        return this;
      }

      private org.apache.doris.proto.Descriptors.PDataAccessPath dataAccessPath_;
      private com.google.protobuf.SingleFieldBuilderV3<
          org.apache.doris.proto.Descriptors.PDataAccessPath, org.apache.doris.proto.Descriptors.PDataAccessPath.Builder, org.apache.doris.proto.Descriptors.PDataAccessPathOrBuilder> dataAccessPathBuilder_;
      /**
       * <code>optional .doris.PDataAccessPath data_access_path = 2;</code>
       * @return Whether the dataAccessPath field is set.
       */
      public boolean hasDataAccessPath() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional .doris.PDataAccessPath data_access_path = 2;</code>
       * @return The dataAccessPath.
       */
      public org.apache.doris.proto.Descriptors.PDataAccessPath getDataAccessPath() {
        if (dataAccessPathBuilder_ == null) {
          return dataAccessPath_ == null ? org.apache.doris.proto.Descriptors.PDataAccessPath.getDefaultInstance() : dataAccessPath_;
        } else {
          return dataAccessPathBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .doris.PDataAccessPath data_access_path = 2;</code>
       */
      public Builder setDataAccessPath(org.apache.doris.proto.Descriptors.PDataAccessPath value) {
        if (dataAccessPathBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          dataAccessPath_ = value;
        } else {
          dataAccessPathBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>optional .doris.PDataAccessPath data_access_path = 2;</code>
       */
      public Builder setDataAccessPath(
          org.apache.doris.proto.Descriptors.PDataAccessPath.Builder builderForValue) {
        if (dataAccessPathBuilder_ == null) {
          dataAccessPath_ = builderForValue.build();
        } else {
          dataAccessPathBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>optional .doris.PDataAccessPath data_access_path = 2;</code>
       */
      public Builder mergeDataAccessPath(org.apache.doris.proto.Descriptors.PDataAccessPath value) {
        if (dataAccessPathBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            dataAccessPath_ != null &&
            dataAccessPath_ != org.apache.doris.proto.Descriptors.PDataAccessPath.getDefaultInstance()) {
            getDataAccessPathBuilder().mergeFrom(value);
          } else {
            dataAccessPath_ = value;
          }
        } else {
          dataAccessPathBuilder_.mergeFrom(value);
        }
        if (dataAccessPath_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <code>optional .doris.PDataAccessPath data_access_path = 2;</code>
       */
      public Builder clearDataAccessPath() {
        bitField0_ = (bitField0_ & ~0x00000002);
        dataAccessPath_ = null;
        if (dataAccessPathBuilder_ != null) {
          dataAccessPathBuilder_.dispose();
          dataAccessPathBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>optional .doris.PDataAccessPath data_access_path = 2;</code>
       */
      public org.apache.doris.proto.Descriptors.PDataAccessPath.Builder getDataAccessPathBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getDataAccessPathFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .doris.PDataAccessPath data_access_path = 2;</code>
       */
      public org.apache.doris.proto.Descriptors.PDataAccessPathOrBuilder getDataAccessPathOrBuilder() {
        if (dataAccessPathBuilder_ != null) {
          return dataAccessPathBuilder_.getMessageOrBuilder();
        } else {
          return dataAccessPath_ == null ?
              org.apache.doris.proto.Descriptors.PDataAccessPath.getDefaultInstance() : dataAccessPath_;
        }
      }
      /**
       * <code>optional .doris.PDataAccessPath data_access_path = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          org.apache.doris.proto.Descriptors.PDataAccessPath, org.apache.doris.proto.Descriptors.PDataAccessPath.Builder, org.apache.doris.proto.Descriptors.PDataAccessPathOrBuilder> 
          getDataAccessPathFieldBuilder() {
        if (dataAccessPathBuilder_ == null) {
          dataAccessPathBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              org.apache.doris.proto.Descriptors.PDataAccessPath, org.apache.doris.proto.Descriptors.PDataAccessPath.Builder, org.apache.doris.proto.Descriptors.PDataAccessPathOrBuilder>(
                  getDataAccessPath(),
                  getParentForChildren(),
                  isClean());
          dataAccessPath_ = null;
        }
        return dataAccessPathBuilder_;
      }

      private org.apache.doris.proto.Descriptors.PMetaAccessPath metaAccessPath_;
      private com.google.protobuf.SingleFieldBuilderV3<
          org.apache.doris.proto.Descriptors.PMetaAccessPath, org.apache.doris.proto.Descriptors.PMetaAccessPath.Builder, org.apache.doris.proto.Descriptors.PMetaAccessPathOrBuilder> metaAccessPathBuilder_;
      /**
       * <code>optional .doris.PMetaAccessPath meta_access_path = 3;</code>
       * @return Whether the metaAccessPath field is set.
       */
      public boolean hasMetaAccessPath() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>optional .doris.PMetaAccessPath meta_access_path = 3;</code>
       * @return The metaAccessPath.
       */
      public org.apache.doris.proto.Descriptors.PMetaAccessPath getMetaAccessPath() {
        if (metaAccessPathBuilder_ == null) {
          return metaAccessPath_ == null ? org.apache.doris.proto.Descriptors.PMetaAccessPath.getDefaultInstance() : metaAccessPath_;
        } else {
          return metaAccessPathBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .doris.PMetaAccessPath meta_access_path = 3;</code>
       */
      public Builder setMetaAccessPath(org.apache.doris.proto.Descriptors.PMetaAccessPath value) {
        if (metaAccessPathBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          metaAccessPath_ = value;
        } else {
          metaAccessPathBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>optional .doris.PMetaAccessPath meta_access_path = 3;</code>
       */
      public Builder setMetaAccessPath(
          org.apache.doris.proto.Descriptors.PMetaAccessPath.Builder builderForValue) {
        if (metaAccessPathBuilder_ == null) {
          metaAccessPath_ = builderForValue.build();
        } else {
          metaAccessPathBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>optional .doris.PMetaAccessPath meta_access_path = 3;</code>
       */
      public Builder mergeMetaAccessPath(org.apache.doris.proto.Descriptors.PMetaAccessPath value) {
        if (metaAccessPathBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            metaAccessPath_ != null &&
            metaAccessPath_ != org.apache.doris.proto.Descriptors.PMetaAccessPath.getDefaultInstance()) {
            getMetaAccessPathBuilder().mergeFrom(value);
          } else {
            metaAccessPath_ = value;
          }
        } else {
          metaAccessPathBuilder_.mergeFrom(value);
        }
        if (metaAccessPath_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <code>optional .doris.PMetaAccessPath meta_access_path = 3;</code>
       */
      public Builder clearMetaAccessPath() {
        bitField0_ = (bitField0_ & ~0x00000004);
        metaAccessPath_ = null;
        if (metaAccessPathBuilder_ != null) {
          metaAccessPathBuilder_.dispose();
          metaAccessPathBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>optional .doris.PMetaAccessPath meta_access_path = 3;</code>
       */
      public org.apache.doris.proto.Descriptors.PMetaAccessPath.Builder getMetaAccessPathBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getMetaAccessPathFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .doris.PMetaAccessPath meta_access_path = 3;</code>
       */
      public org.apache.doris.proto.Descriptors.PMetaAccessPathOrBuilder getMetaAccessPathOrBuilder() {
        if (metaAccessPathBuilder_ != null) {
          return metaAccessPathBuilder_.getMessageOrBuilder();
        } else {
          return metaAccessPath_ == null ?
              org.apache.doris.proto.Descriptors.PMetaAccessPath.getDefaultInstance() : metaAccessPath_;
        }
      }
      /**
       * <code>optional .doris.PMetaAccessPath meta_access_path = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          org.apache.doris.proto.Descriptors.PMetaAccessPath, org.apache.doris.proto.Descriptors.PMetaAccessPath.Builder, org.apache.doris.proto.Descriptors.PMetaAccessPathOrBuilder> 
          getMetaAccessPathFieldBuilder() {
        if (metaAccessPathBuilder_ == null) {
          metaAccessPathBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              org.apache.doris.proto.Descriptors.PMetaAccessPath, org.apache.doris.proto.Descriptors.PMetaAccessPath.Builder, org.apache.doris.proto.Descriptors.PMetaAccessPathOrBuilder>(
                  getMetaAccessPath(),
                  getParentForChildren(),
                  isClean());
          metaAccessPath_ = null;
        }
        return metaAccessPathBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:doris.PColumnAccessPath)
    }

    // @@protoc_insertion_point(class_scope:doris.PColumnAccessPath)
    private static final org.apache.doris.proto.Descriptors.PColumnAccessPath DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.doris.proto.Descriptors.PColumnAccessPath();
    }

    public static org.apache.doris.proto.Descriptors.PColumnAccessPath getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<PColumnAccessPath>
        PARSER = new com.google.protobuf.AbstractParser<PColumnAccessPath>() {
      @java.lang.Override
      public PColumnAccessPath parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<PColumnAccessPath> parser() {
      return PARSER;
    }

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

    @java.lang.Override
    public org.apache.doris.proto.Descriptors.PColumnAccessPath getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PSlotDescriptorOrBuilder extends
      // @@protoc_insertion_point(interface_extends:doris.PSlotDescriptor)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required int32 id = 1;</code>
     * @return Whether the id field is set.
     */
    boolean hasId();
    /**
     * <code>required int32 id = 1;</code>
     * @return The id.
     */
    int getId();

    /**
     * <pre>
     * tuple id which this slot is belong to
     * </pre>
     *
     * <code>required int32 parent = 2;</code>
     * @return Whether the parent field is set.
     */
    boolean hasParent();
    /**
     * <pre>
     * tuple id which this slot is belong to
     * </pre>
     *
     * <code>required int32 parent = 2;</code>
     * @return The parent.
     */
    int getParent();

    /**
     * <code>required .doris.PTypeDesc slot_type = 3;</code>
     * @return Whether the slotType field is set.
     */
    boolean hasSlotType();
    /**
     * <code>required .doris.PTypeDesc slot_type = 3;</code>
     * @return The slotType.
     */
    org.apache.doris.proto.Types.PTypeDesc getSlotType();
    /**
     * <code>required .doris.PTypeDesc slot_type = 3;</code>
     */
    org.apache.doris.proto.Types.PTypeDescOrBuilder getSlotTypeOrBuilder();

    /**
     * <pre>
     * in originating table
     * </pre>
     *
     * <code>required int32 column_pos = 4;</code>
     * @return Whether the columnPos field is set.
     */
    boolean hasColumnPos();
    /**
     * <pre>
     * in originating table
     * </pre>
     *
     * <code>required int32 column_pos = 4;</code>
     * @return The columnPos.
     */
    int getColumnPos();

    /**
     * <pre>
     * // deprecated
     * </pre>
     *
     * <code>required int32 byte_offset = 5;</code>
     * @return Whether the byteOffset field is set.
     */
    boolean hasByteOffset();
    /**
     * <pre>
     * // deprecated
     * </pre>
     *
     * <code>required int32 byte_offset = 5;</code>
     * @return The byteOffset.
     */
    int getByteOffset();

    /**
     * <code>required int32 null_indicator_byte = 6;</code>
     * @return Whether the nullIndicatorByte field is set.
     */
    boolean hasNullIndicatorByte();
    /**
     * <code>required int32 null_indicator_byte = 6;</code>
     * @return The nullIndicatorByte.
     */
    int getNullIndicatorByte();

    /**
     * <code>required int32 null_indicator_bit = 7;</code>
     * @return Whether the nullIndicatorBit field is set.
     */
    boolean hasNullIndicatorBit();
    /**
     * <code>required int32 null_indicator_bit = 7;</code>
     * @return The nullIndicatorBit.
     */
    int getNullIndicatorBit();

    /**
     * <code>required string col_name = 8;</code>
     * @return Whether the colName field is set.
     */
    boolean hasColName();
    /**
     * <code>required string col_name = 8;</code>
     * @return The colName.
     */
    java.lang.String getColName();
    /**
     * <code>required string col_name = 8;</code>
     * @return The bytes for colName.
     */
    com.google.protobuf.ByteString
        getColNameBytes();

    /**
     * <code>required int32 slot_idx = 9;</code>
     * @return Whether the slotIdx field is set.
     */
    boolean hasSlotIdx();
    /**
     * <code>required int32 slot_idx = 9;</code>
     * @return The slotIdx.
     */
    int getSlotIdx();

    /**
     * <code>optional bool is_materialized = 10 [deprecated = true];</code>
     * @deprecated doris.PSlotDescriptor.is_materialized is deprecated.
     *     See descriptors.proto;l=78
     * @return Whether the isMaterialized field is set.
     */
    @java.lang.Deprecated boolean hasIsMaterialized();
    /**
     * <code>optional bool is_materialized = 10 [deprecated = true];</code>
     * @deprecated doris.PSlotDescriptor.is_materialized is deprecated.
     *     See descriptors.proto;l=78
     * @return The isMaterialized.
     */
    @java.lang.Deprecated boolean getIsMaterialized();

    /**
     * <code>optional int32 col_unique_id = 11;</code>
     * @return Whether the colUniqueId field is set.
     */
    boolean hasColUniqueId();
    /**
     * <code>optional int32 col_unique_id = 11;</code>
     * @return The colUniqueId.
     */
    int getColUniqueId();

    /**
     * <code>optional bool is_key = 12;</code>
     * @return Whether the isKey field is set.
     */
    boolean hasIsKey();
    /**
     * <code>optional bool is_key = 12;</code>
     * @return The isKey.
     */
    boolean getIsKey();

    /**
     * <code>optional bool is_auto_increment = 13;</code>
     * @return Whether the isAutoIncrement field is set.
     */
    boolean hasIsAutoIncrement();
    /**
     * <code>optional bool is_auto_increment = 13;</code>
     * @return The isAutoIncrement.
     */
    boolean getIsAutoIncrement();

    /**
     * <code>optional int32 col_type = 14 [default = 0];</code>
     * @return Whether the colType field is set.
     */
    boolean hasColType();
    /**
     * <code>optional int32 col_type = 14 [default = 0];</code>
     * @return The colType.
     */
    int getColType();

    /**
     * <code>repeated string column_paths = 15;</code>
     * @return A list containing the columnPaths.
     */
    java.util.List<java.lang.String>
        getColumnPathsList();
    /**
     * <code>repeated string column_paths = 15;</code>
     * @return The count of columnPaths.
     */
    int getColumnPathsCount();
    /**
     * <code>repeated string column_paths = 15;</code>
     * @param index The index of the element to return.
     * @return The columnPaths at the given index.
     */
    java.lang.String getColumnPaths(int index);
    /**
     * <code>repeated string column_paths = 15;</code>
     * @param index The index of the value to return.
     * @return The bytes of the columnPaths at the given index.
     */
    com.google.protobuf.ByteString
        getColumnPathsBytes(int index);

    /**
     * <code>repeated .doris.PColumnAccessPath all_access_paths = 16;</code>
     */
    java.util.List<org.apache.doris.proto.Descriptors.PColumnAccessPath> 
        getAllAccessPathsList();
    /**
     * <code>repeated .doris.PColumnAccessPath all_access_paths = 16;</code>
     */
    org.apache.doris.proto.Descriptors.PColumnAccessPath getAllAccessPaths(int index);
    /**
     * <code>repeated .doris.PColumnAccessPath all_access_paths = 16;</code>
     */
    int getAllAccessPathsCount();
    /**
     * <code>repeated .doris.PColumnAccessPath all_access_paths = 16;</code>
     */
    java.util.List<? extends org.apache.doris.proto.Descriptors.PColumnAccessPathOrBuilder> 
        getAllAccessPathsOrBuilderList();
    /**
     * <code>repeated .doris.PColumnAccessPath all_access_paths = 16;</code>
     */
    org.apache.doris.proto.Descriptors.PColumnAccessPathOrBuilder getAllAccessPathsOrBuilder(
        int index);

    /**
     * <code>repeated .doris.PColumnAccessPath predicate_access_paths = 17;</code>
     */
    java.util.List<org.apache.doris.proto.Descriptors.PColumnAccessPath> 
        getPredicateAccessPathsList();
    /**
     * <code>repeated .doris.PColumnAccessPath predicate_access_paths = 17;</code>
     */
    org.apache.doris.proto.Descriptors.PColumnAccessPath getPredicateAccessPaths(int index);
    /**
     * <code>repeated .doris.PColumnAccessPath predicate_access_paths = 17;</code>
     */
    int getPredicateAccessPathsCount();
    /**
     * <code>repeated .doris.PColumnAccessPath predicate_access_paths = 17;</code>
     */
    java.util.List<? extends org.apache.doris.proto.Descriptors.PColumnAccessPathOrBuilder> 
        getPredicateAccessPathsOrBuilderList();
    /**
     * <code>repeated .doris.PColumnAccessPath predicate_access_paths = 17;</code>
     */
    org.apache.doris.proto.Descriptors.PColumnAccessPathOrBuilder getPredicateAccessPathsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code doris.PSlotDescriptor}
   */
  public static final class PSlotDescriptor extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:doris.PSlotDescriptor)
      PSlotDescriptorOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PSlotDescriptor.newBuilder() to construct.
    private PSlotDescriptor(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PSlotDescriptor() {
      colName_ = "";
      columnPaths_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      allAccessPaths_ = java.util.Collections.emptyList();
      predicateAccessPaths_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new PSlotDescriptor();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.doris.proto.Descriptors.internal_static_doris_PSlotDescriptor_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.doris.proto.Descriptors.internal_static_doris_PSlotDescriptor_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.doris.proto.Descriptors.PSlotDescriptor.class, org.apache.doris.proto.Descriptors.PSlotDescriptor.Builder.class);
    }

    private int bitField0_;
    public static final int ID_FIELD_NUMBER = 1;
    private int id_ = 0;
    /**
     * <code>required int32 id = 1;</code>
     * @return Whether the id field is set.
     */
    @java.lang.Override
    public boolean hasId() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required int32 id = 1;</code>
     * @return The id.
     */
    @java.lang.Override
    public int getId() {
      return id_;
    }

    public static final int PARENT_FIELD_NUMBER = 2;
    private int parent_ = 0;
    /**
     * <pre>
     * tuple id which this slot is belong to
     * </pre>
     *
     * <code>required int32 parent = 2;</code>
     * @return Whether the parent field is set.
     */
    @java.lang.Override
    public boolean hasParent() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * tuple id which this slot is belong to
     * </pre>
     *
     * <code>required int32 parent = 2;</code>
     * @return The parent.
     */
    @java.lang.Override
    public int getParent() {
      return parent_;
    }

    public static final int SLOT_TYPE_FIELD_NUMBER = 3;
    private org.apache.doris.proto.Types.PTypeDesc slotType_;
    /**
     * <code>required .doris.PTypeDesc slot_type = 3;</code>
     * @return Whether the slotType field is set.
     */
    @java.lang.Override
    public boolean hasSlotType() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>required .doris.PTypeDesc slot_type = 3;</code>
     * @return The slotType.
     */
    @java.lang.Override
    public org.apache.doris.proto.Types.PTypeDesc getSlotType() {
      return slotType_ == null ? org.apache.doris.proto.Types.PTypeDesc.getDefaultInstance() : slotType_;
    }
    /**
     * <code>required .doris.PTypeDesc slot_type = 3;</code>
     */
    @java.lang.Override
    public org.apache.doris.proto.Types.PTypeDescOrBuilder getSlotTypeOrBuilder() {
      return slotType_ == null ? org.apache.doris.proto.Types.PTypeDesc.getDefaultInstance() : slotType_;
    }

    public static final int COLUMN_POS_FIELD_NUMBER = 4;
    private int columnPos_ = 0;
    /**
     * <pre>
     * in originating table
     * </pre>
     *
     * <code>required int32 column_pos = 4;</code>
     * @return Whether the columnPos field is set.
     */
    @java.lang.Override
    public boolean hasColumnPos() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * in originating table
     * </pre>
     *
     * <code>required int32 column_pos = 4;</code>
     * @return The columnPos.
     */
    @java.lang.Override
    public int getColumnPos() {
      return columnPos_;
    }

    public static final int BYTE_OFFSET_FIELD_NUMBER = 5;
    private int byteOffset_ = 0;
    /**
     * <pre>
     * // deprecated
     * </pre>
     *
     * <code>required int32 byte_offset = 5;</code>
     * @return Whether the byteOffset field is set.
     */
    @java.lang.Override
    public boolean hasByteOffset() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * // deprecated
     * </pre>
     *
     * <code>required int32 byte_offset = 5;</code>
     * @return The byteOffset.
     */
    @java.lang.Override
    public int getByteOffset() {
      return byteOffset_;
    }

    public static final int NULL_INDICATOR_BYTE_FIELD_NUMBER = 6;
    private int nullIndicatorByte_ = 0;
    /**
     * <code>required int32 null_indicator_byte = 6;</code>
     * @return Whether the nullIndicatorByte field is set.
     */
    @java.lang.Override
    public boolean hasNullIndicatorByte() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <code>required int32 null_indicator_byte = 6;</code>
     * @return The nullIndicatorByte.
     */
    @java.lang.Override
    public int getNullIndicatorByte() {
      return nullIndicatorByte_;
    }

    public static final int NULL_INDICATOR_BIT_FIELD_NUMBER = 7;
    private int nullIndicatorBit_ = 0;
    /**
     * <code>required int32 null_indicator_bit = 7;</code>
     * @return Whether the nullIndicatorBit field is set.
     */
    @java.lang.Override
    public boolean hasNullIndicatorBit() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <code>required int32 null_indicator_bit = 7;</code>
     * @return The nullIndicatorBit.
     */
    @java.lang.Override
    public int getNullIndicatorBit() {
      return nullIndicatorBit_;
    }

    public static final int COL_NAME_FIELD_NUMBER = 8;
    @SuppressWarnings("serial")
    private volatile java.lang.Object colName_ = "";
    /**
     * <code>required string col_name = 8;</code>
     * @return Whether the colName field is set.
     */
    @java.lang.Override
    public boolean hasColName() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * <code>required string col_name = 8;</code>
     * @return The colName.
     */
    @java.lang.Override
    public java.lang.String getColName() {
      java.lang.Object ref = colName_;
      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()) {
          colName_ = s;
        }
        return s;
      }
    }
    /**
     * <code>required string col_name = 8;</code>
     * @return The bytes for colName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getColNameBytes() {
      java.lang.Object ref = colName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        colName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SLOT_IDX_FIELD_NUMBER = 9;
    private int slotIdx_ = 0;
    /**
     * <code>required int32 slot_idx = 9;</code>
     * @return Whether the slotIdx field is set.
     */
    @java.lang.Override
    public boolean hasSlotIdx() {
      return ((bitField0_ & 0x00000100) != 0);
    }
    /**
     * <code>required int32 slot_idx = 9;</code>
     * @return The slotIdx.
     */
    @java.lang.Override
    public int getSlotIdx() {
      return slotIdx_;
    }

    public static final int IS_MATERIALIZED_FIELD_NUMBER = 10;
    private boolean isMaterialized_ = false;
    /**
     * <code>optional bool is_materialized = 10 [deprecated = true];</code>
     * @deprecated doris.PSlotDescriptor.is_materialized is deprecated.
     *     See descriptors.proto;l=78
     * @return Whether the isMaterialized field is set.
     */
    @java.lang.Override
    @java.lang.Deprecated public boolean hasIsMaterialized() {
      return ((bitField0_ & 0x00000200) != 0);
    }
    /**
     * <code>optional bool is_materialized = 10 [deprecated = true];</code>
     * @deprecated doris.PSlotDescriptor.is_materialized is deprecated.
     *     See descriptors.proto;l=78
     * @return The isMaterialized.
     */
    @java.lang.Override
    @java.lang.Deprecated public boolean getIsMaterialized() {
      return isMaterialized_;
    }

    public static final int COL_UNIQUE_ID_FIELD_NUMBER = 11;
    private int colUniqueId_ = 0;
    /**
     * <code>optional int32 col_unique_id = 11;</code>
     * @return Whether the colUniqueId field is set.
     */
    @java.lang.Override
    public boolean hasColUniqueId() {
      return ((bitField0_ & 0x00000400) != 0);
    }
    /**
     * <code>optional int32 col_unique_id = 11;</code>
     * @return The colUniqueId.
     */
    @java.lang.Override
    public int getColUniqueId() {
      return colUniqueId_;
    }

    public static final int IS_KEY_FIELD_NUMBER = 12;
    private boolean isKey_ = false;
    /**
     * <code>optional bool is_key = 12;</code>
     * @return Whether the isKey field is set.
     */
    @java.lang.Override
    public boolean hasIsKey() {
      return ((bitField0_ & 0x00000800) != 0);
    }
    /**
     * <code>optional bool is_key = 12;</code>
     * @return The isKey.
     */
    @java.lang.Override
    public boolean getIsKey() {
      return isKey_;
    }

    public static final int IS_AUTO_INCREMENT_FIELD_NUMBER = 13;
    private boolean isAutoIncrement_ = false;
    /**
     * <code>optional bool is_auto_increment = 13;</code>
     * @return Whether the isAutoIncrement field is set.
     */
    @java.lang.Override
    public boolean hasIsAutoIncrement() {
      return ((bitField0_ & 0x00001000) != 0);
    }
    /**
     * <code>optional bool is_auto_increment = 13;</code>
     * @return The isAutoIncrement.
     */
    @java.lang.Override
    public boolean getIsAutoIncrement() {
      return isAutoIncrement_;
    }

    public static final int COL_TYPE_FIELD_NUMBER = 14;
    private int colType_ = 0;
    /**
     * <code>optional int32 col_type = 14 [default = 0];</code>
     * @return Whether the colType field is set.
     */
    @java.lang.Override
    public boolean hasColType() {
      return ((bitField0_ & 0x00002000) != 0);
    }
    /**
     * <code>optional int32 col_type = 14 [default = 0];</code>
     * @return The colType.
     */
    @java.lang.Override
    public int getColType() {
      return colType_;
    }

    public static final int COLUMN_PATHS_FIELD_NUMBER = 15;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList columnPaths_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <code>repeated string column_paths = 15;</code>
     * @return A list containing the columnPaths.
     */
    public com.google.protobuf.ProtocolStringList
        getColumnPathsList() {
      return columnPaths_;
    }
    /**
     * <code>repeated string column_paths = 15;</code>
     * @return The count of columnPaths.
     */
    public int getColumnPathsCount() {
      return columnPaths_.size();
    }
    /**
     * <code>repeated string column_paths = 15;</code>
     * @param index The index of the element to return.
     * @return The columnPaths at the given index.
     */
    public java.lang.String getColumnPaths(int index) {
      return columnPaths_.get(index);
    }
    /**
     * <code>repeated string column_paths = 15;</code>
     * @param index The index of the value to return.
     * @return The bytes of the columnPaths at the given index.
     */
    public com.google.protobuf.ByteString
        getColumnPathsBytes(int index) {
      return columnPaths_.getByteString(index);
    }

    public static final int ALL_ACCESS_PATHS_FIELD_NUMBER = 16;
    @SuppressWarnings("serial")
    private java.util.List<org.apache.doris.proto.Descriptors.PColumnAccessPath> allAccessPaths_;
    /**
     * <code>repeated .doris.PColumnAccessPath all_access_paths = 16;</code>
     */
    @java.lang.Override
    public java.util.List<org.apache.doris.proto.Descriptors.PColumnAccessPath> getAllAccessPathsList() {
      return allAccessPaths_;
    }
    /**
     * <code>repeated .doris.PColumnAccessPath all_access_paths = 16;</code>
     */
    @java.lang.Override
    public java.util.List<? extends org.apache.doris.proto.Descriptors.PColumnAccessPathOrBuilder> 
        getAllAccessPathsOrBuilderList() {
      return allAccessPaths_;
    }
    /**
     * <code>repeated .doris.PColumnAccessPath all_access_paths = 16;</code>
     */
    @java.lang.Override
    public int getAllAccessPathsCount() {
      return allAccessPaths_.size();
    }
    /**
     * <code>repeated .doris.PColumnAccessPath all_access_paths = 16;</code>
     */
    @java.lang.Override
    public org.apache.doris.proto.Descriptors.PColumnAccessPath getAllAccessPaths(int index) {
      return allAccessPaths_.get(index);
    }
    /**
     * <code>repeated .doris.PColumnAccessPath all_access_paths = 16;</code>
     */
    @java.lang.Override
    public org.apache.doris.proto.Descriptors.PColumnAccessPathOrBuilder getAllAccessPathsOrBuilder(
        int index) {
      return allAccessPaths_.get(index);
    }

    public static final int PREDICATE_ACCESS_PATHS_FIELD_NUMBER = 17;
    @SuppressWarnings("serial")
    private java.util.List<org.apache.doris.proto.Descriptors.PColumnAccessPath> predicateAccessPaths_;
    /**
     * <code>repeated .doris.PColumnAccessPath predicate_access_paths = 17;</code>
     */
    @java.lang.Override
    public java.util.List<org.apache.doris.proto.Descriptors.PColumnAccessPath> getPredicateAccessPathsList() {
      return predicateAccessPaths_;
    }
    /**
     * <code>repeated .doris.PColumnAccessPath predicate_access_paths = 17;</code>
     */
    @java.lang.Override
    public java.util.List<? extends org.apache.doris.proto.Descriptors.PColumnAccessPathOrBuilder> 
        getPredicateAccessPathsOrBuilderList() {
      return predicateAccessPaths_;
    }
    /**
     * <code>repeated .doris.PColumnAccessPath predicate_access_paths = 17;</code>
     */
    @java.lang.Override
    public int getPredicateAccessPathsCount() {
      return predicateAccessPaths_.size();
    }
    /**
     * <code>repeated .doris.PColumnAccessPath predicate_access_paths = 17;</code>
     */
    @java.lang.Override
    public org.apache.doris.proto.Descriptors.PColumnAccessPath getPredicateAccessPaths(int index) {
      return predicateAccessPaths_.get(index);
    }
    /**
     * <code>repeated .doris.PColumnAccessPath predicate_access_paths = 17;</code>
     */
    @java.lang.Override
    public org.apache.doris.proto.Descriptors.PColumnAccessPathOrBuilder getPredicateAccessPathsOrBuilder(
        int index) {
      return predicateAccessPaths_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasParent()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasSlotType()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasColumnPos()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasByteOffset()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasNullIndicatorByte()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasNullIndicatorBit()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasColName()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasSlotIdx()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!getSlotType().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getAllAccessPathsCount(); i++) {
        if (!getAllAccessPaths(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getPredicateAccessPathsCount(); i++) {
        if (!getPredicateAccessPaths(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeInt32(1, id_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeInt32(2, parent_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(3, getSlotType());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeInt32(4, columnPos_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeInt32(5, byteOffset_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeInt32(6, nullIndicatorByte_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        output.writeInt32(7, nullIndicatorBit_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 8, colName_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        output.writeInt32(9, slotIdx_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        output.writeBool(10, isMaterialized_);
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        output.writeInt32(11, colUniqueId_);
      }
      if (((bitField0_ & 0x00000800) != 0)) {
        output.writeBool(12, isKey_);
      }
      if (((bitField0_ & 0x00001000) != 0)) {
        output.writeBool(13, isAutoIncrement_);
      }
      if (((bitField0_ & 0x00002000) != 0)) {
        output.writeInt32(14, colType_);
      }
      for (int i = 0; i < columnPaths_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 15, columnPaths_.getRaw(i));
      }
      for (int i = 0; i < allAccessPaths_.size(); i++) {
        output.writeMessage(16, allAccessPaths_.get(i));
      }
      for (int i = 0; i < predicateAccessPaths_.size(); i++) {
        output.writeMessage(17, predicateAccessPaths_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, id_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, parent_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getSlotType());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(4, columnPos_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(5, byteOffset_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(6, nullIndicatorByte_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(7, nullIndicatorBit_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(8, colName_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(9, slotIdx_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(10, isMaterialized_);
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(11, colUniqueId_);
      }
      if (((bitField0_ & 0x00000800) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(12, isKey_);
      }
      if (((bitField0_ & 0x00001000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(13, isAutoIncrement_);
      }
      if (((bitField0_ & 0x00002000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(14, colType_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < columnPaths_.size(); i++) {
          dataSize += computeStringSizeNoTag(columnPaths_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getColumnPathsList().size();
      }
      for (int i = 0; i < allAccessPaths_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(16, allAccessPaths_.get(i));
      }
      for (int i = 0; i < predicateAccessPaths_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(17, predicateAccessPaths_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.doris.proto.Descriptors.PSlotDescriptor)) {
        return super.equals(obj);
      }
      org.apache.doris.proto.Descriptors.PSlotDescriptor other = (org.apache.doris.proto.Descriptors.PSlotDescriptor) obj;

      if (hasId() != other.hasId()) return false;
      if (hasId()) {
        if (getId()
            != other.getId()) return false;
      }
      if (hasParent() != other.hasParent()) return false;
      if (hasParent()) {
        if (getParent()
            != other.getParent()) return false;
      }
      if (hasSlotType() != other.hasSlotType()) return false;
      if (hasSlotType()) {
        if (!getSlotType()
            .equals(other.getSlotType())) return false;
      }
      if (hasColumnPos() != other.hasColumnPos()) return false;
      if (hasColumnPos()) {
        if (getColumnPos()
            != other.getColumnPos()) return false;
      }
      if (hasByteOffset() != other.hasByteOffset()) return false;
      if (hasByteOffset()) {
        if (getByteOffset()
            != other.getByteOffset()) return false;
      }
      if (hasNullIndicatorByte() != other.hasNullIndicatorByte()) return false;
      if (hasNullIndicatorByte()) {
        if (getNullIndicatorByte()
            != other.getNullIndicatorByte()) return false;
      }
      if (hasNullIndicatorBit() != other.hasNullIndicatorBit()) return false;
      if (hasNullIndicatorBit()) {
        if (getNullIndicatorBit()
            != other.getNullIndicatorBit()) return false;
      }
      if (hasColName() != other.hasColName()) return false;
      if (hasColName()) {
        if (!getColName()
            .equals(other.getColName())) return false;
      }
      if (hasSlotIdx() != other.hasSlotIdx()) return false;
      if (hasSlotIdx()) {
        if (getSlotIdx()
            != other.getSlotIdx()) return false;
      }
      if (hasIsMaterialized() != other.hasIsMaterialized()) return false;
      if (hasIsMaterialized()) {
        if (getIsMaterialized()
            != other.getIsMaterialized()) return false;
      }
      if (hasColUniqueId() != other.hasColUniqueId()) return false;
      if (hasColUniqueId()) {
        if (getColUniqueId()
            != other.getColUniqueId()) return false;
      }
      if (hasIsKey() != other.hasIsKey()) return false;
      if (hasIsKey()) {
        if (getIsKey()
            != other.getIsKey()) return false;
      }
      if (hasIsAutoIncrement() != other.hasIsAutoIncrement()) return false;
      if (hasIsAutoIncrement()) {
        if (getIsAutoIncrement()
            != other.getIsAutoIncrement()) return false;
      }
      if (hasColType() != other.hasColType()) return false;
      if (hasColType()) {
        if (getColType()
            != other.getColType()) return false;
      }
      if (!getColumnPathsList()
          .equals(other.getColumnPathsList())) return false;
      if (!getAllAccessPathsList()
          .equals(other.getAllAccessPathsList())) return false;
      if (!getPredicateAccessPathsList()
          .equals(other.getPredicateAccessPathsList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasId()) {
        hash = (37 * hash) + ID_FIELD_NUMBER;
        hash = (53 * hash) + getId();
      }
      if (hasParent()) {
        hash = (37 * hash) + PARENT_FIELD_NUMBER;
        hash = (53 * hash) + getParent();
      }
      if (hasSlotType()) {
        hash = (37 * hash) + SLOT_TYPE_FIELD_NUMBER;
        hash = (53 * hash) + getSlotType().hashCode();
      }
      if (hasColumnPos()) {
        hash = (37 * hash) + COLUMN_POS_FIELD_NUMBER;
        hash = (53 * hash) + getColumnPos();
      }
      if (hasByteOffset()) {
        hash = (37 * hash) + BYTE_OFFSET_FIELD_NUMBER;
        hash = (53 * hash) + getByteOffset();
      }
      if (hasNullIndicatorByte()) {
        hash = (37 * hash) + NULL_INDICATOR_BYTE_FIELD_NUMBER;
        hash = (53 * hash) + getNullIndicatorByte();
      }
      if (hasNullIndicatorBit()) {
        hash = (37 * hash) + NULL_INDICATOR_BIT_FIELD_NUMBER;
        hash = (53 * hash) + getNullIndicatorBit();
      }
      if (hasColName()) {
        hash = (37 * hash) + COL_NAME_FIELD_NUMBER;
        hash = (53 * hash) + getColName().hashCode();
      }
      if (hasSlotIdx()) {
        hash = (37 * hash) + SLOT_IDX_FIELD_NUMBER;
        hash = (53 * hash) + getSlotIdx();
      }
      if (hasIsMaterialized()) {
        hash = (37 * hash) + IS_MATERIALIZED_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getIsMaterialized());
      }
      if (hasColUniqueId()) {
        hash = (37 * hash) + COL_UNIQUE_ID_FIELD_NUMBER;
        hash = (53 * hash) + getColUniqueId();
      }
      if (hasIsKey()) {
        hash = (37 * hash) + IS_KEY_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getIsKey());
      }
      if (hasIsAutoIncrement()) {
        hash = (37 * hash) + IS_AUTO_INCREMENT_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getIsAutoIncrement());
      }
      if (hasColType()) {
        hash = (37 * hash) + COL_TYPE_FIELD_NUMBER;
        hash = (53 * hash) + getColType();
      }
      if (getColumnPathsCount() > 0) {
        hash = (37 * hash) + COLUMN_PATHS_FIELD_NUMBER;
        hash = (53 * hash) + getColumnPathsList().hashCode();
      }
      if (getAllAccessPathsCount() > 0) {
        hash = (37 * hash) + ALL_ACCESS_PATHS_FIELD_NUMBER;
        hash = (53 * hash) + getAllAccessPathsList().hashCode();
      }
      if (getPredicateAccessPathsCount() > 0) {
        hash = (37 * hash) + PREDICATE_ACCESS_PATHS_FIELD_NUMBER;
        hash = (53 * hash) + getPredicateAccessPathsList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.doris.proto.Descriptors.PSlotDescriptor parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.doris.proto.Descriptors.PSlotDescriptor parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.doris.proto.Descriptors.PSlotDescriptor parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.doris.proto.Descriptors.PSlotDescriptor parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.doris.proto.Descriptors.PSlotDescriptor parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.doris.proto.Descriptors.PSlotDescriptor parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.doris.proto.Descriptors.PSlotDescriptor parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.doris.proto.Descriptors.PSlotDescriptor parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.apache.doris.proto.Descriptors.PSlotDescriptor parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.doris.proto.Descriptors.PSlotDescriptor parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.apache.doris.proto.Descriptors.PSlotDescriptor parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.doris.proto.Descriptors.PSlotDescriptor parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.doris.proto.Descriptors.PSlotDescriptor prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code doris.PSlotDescriptor}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:doris.PSlotDescriptor)
        org.apache.doris.proto.Descriptors.PSlotDescriptorOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.doris.proto.Descriptors.internal_static_doris_PSlotDescriptor_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.doris.proto.Descriptors.internal_static_doris_PSlotDescriptor_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.doris.proto.Descriptors.PSlotDescriptor.class, org.apache.doris.proto.Descriptors.PSlotDescriptor.Builder.class);
      }

      // Construct using org.apache.doris.proto.Descriptors.PSlotDescriptor.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getSlotTypeFieldBuilder();
          getAllAccessPathsFieldBuilder();
          getPredicateAccessPathsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        id_ = 0;
        parent_ = 0;
        slotType_ = null;
        if (slotTypeBuilder_ != null) {
          slotTypeBuilder_.dispose();
          slotTypeBuilder_ = null;
        }
        columnPos_ = 0;
        byteOffset_ = 0;
        nullIndicatorByte_ = 0;
        nullIndicatorBit_ = 0;
        colName_ = "";
        slotIdx_ = 0;
        isMaterialized_ = false;
        colUniqueId_ = 0;
        isKey_ = false;
        isAutoIncrement_ = false;
        colType_ = 0;
        columnPaths_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        if (allAccessPathsBuilder_ == null) {
          allAccessPaths_ = java.util.Collections.emptyList();
        } else {
          allAccessPaths_ = null;
          allAccessPathsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00008000);
        if (predicateAccessPathsBuilder_ == null) {
          predicateAccessPaths_ = java.util.Collections.emptyList();
        } else {
          predicateAccessPaths_ = null;
          predicateAccessPathsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00010000);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.doris.proto.Descriptors.internal_static_doris_PSlotDescriptor_descriptor;
      }

      @java.lang.Override
      public org.apache.doris.proto.Descriptors.PSlotDescriptor getDefaultInstanceForType() {
        return org.apache.doris.proto.Descriptors.PSlotDescriptor.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.doris.proto.Descriptors.PSlotDescriptor build() {
        org.apache.doris.proto.Descriptors.PSlotDescriptor result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.doris.proto.Descriptors.PSlotDescriptor buildPartial() {
        org.apache.doris.proto.Descriptors.PSlotDescriptor result = new org.apache.doris.proto.Descriptors.PSlotDescriptor(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(org.apache.doris.proto.Descriptors.PSlotDescriptor result) {
        if (allAccessPathsBuilder_ == null) {
          if (((bitField0_ & 0x00008000) != 0)) {
            allAccessPaths_ = java.util.Collections.unmodifiableList(allAccessPaths_);
            bitField0_ = (bitField0_ & ~0x00008000);
          }
          result.allAccessPaths_ = allAccessPaths_;
        } else {
          result.allAccessPaths_ = allAccessPathsBuilder_.build();
        }
        if (predicateAccessPathsBuilder_ == null) {
          if (((bitField0_ & 0x00010000) != 0)) {
            predicateAccessPaths_ = java.util.Collections.unmodifiableList(predicateAccessPaths_);
            bitField0_ = (bitField0_ & ~0x00010000);
          }
          result.predicateAccessPaths_ = predicateAccessPaths_;
        } else {
          result.predicateAccessPaths_ = predicateAccessPathsBuilder_.build();
        }
      }

      private void buildPartial0(org.apache.doris.proto.Descriptors.PSlotDescriptor result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.id_ = id_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.parent_ = parent_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.slotType_ = slotTypeBuilder_ == null
              ? slotType_
              : slotTypeBuilder_.build();
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.columnPos_ = columnPos_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.byteOffset_ = byteOffset_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.nullIndicatorByte_ = nullIndicatorByte_;
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.nullIndicatorBit_ = nullIndicatorBit_;
          to_bitField0_ |= 0x00000040;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.colName_ = colName_;
          to_bitField0_ |= 0x00000080;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.slotIdx_ = slotIdx_;
          to_bitField0_ |= 0x00000100;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          result.isMaterialized_ = isMaterialized_;
          to_bitField0_ |= 0x00000200;
        }
        if (((from_bitField0_ & 0x00000400) != 0)) {
          result.colUniqueId_ = colUniqueId_;
          to_bitField0_ |= 0x00000400;
        }
        if (((from_bitField0_ & 0x00000800) != 0)) {
          result.isKey_ = isKey_;
          to_bitField0_ |= 0x00000800;
        }
        if (((from_bitField0_ & 0x00001000) != 0)) {
          result.isAutoIncrement_ = isAutoIncrement_;
          to_bitField0_ |= 0x00001000;
        }
        if (((from_bitField0_ & 0x00002000) != 0)) {
          result.colType_ = colType_;
          to_bitField0_ |= 0x00002000;
        }
        if (((from_bitField0_ & 0x00004000) != 0)) {
          columnPaths_.makeImmutable();
          result.columnPaths_ = columnPaths_;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.doris.proto.Descriptors.PSlotDescriptor) {
          return mergeFrom((org.apache.doris.proto.Descriptors.PSlotDescriptor)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.doris.proto.Descriptors.PSlotDescriptor other) {
        if (other == org.apache.doris.proto.Descriptors.PSlotDescriptor.getDefaultInstance()) return this;
        if (other.hasId()) {
          setId(other.getId());
        }
        if (other.hasParent()) {
          setParent(other.getParent());
        }
        if (other.hasSlotType()) {
          mergeSlotType(other.getSlotType());
        }
        if (other.hasColumnPos()) {
          setColumnPos(other.getColumnPos());
        }
        if (other.hasByteOffset()) {
          setByteOffset(other.getByteOffset());
        }
        if (other.hasNullIndicatorByte()) {
          setNullIndicatorByte(other.getNullIndicatorByte());
        }
        if (other.hasNullIndicatorBit()) {
          setNullIndicatorBit(other.getNullIndicatorBit());
        }
        if (other.hasColName()) {
          colName_ = other.colName_;
          bitField0_ |= 0x00000080;
          onChanged();
        }
        if (other.hasSlotIdx()) {
          setSlotIdx(other.getSlotIdx());
        }
        if (other.hasIsMaterialized()) {
          setIsMaterialized(other.getIsMaterialized());
        }
        if (other.hasColUniqueId()) {
          setColUniqueId(other.getColUniqueId());
        }
        if (other.hasIsKey()) {
          setIsKey(other.getIsKey());
        }
        if (other.hasIsAutoIncrement()) {
          setIsAutoIncrement(other.getIsAutoIncrement());
        }
        if (other.hasColType()) {
          setColType(other.getColType());
        }
        if (!other.columnPaths_.isEmpty()) {
          if (columnPaths_.isEmpty()) {
            columnPaths_ = other.columnPaths_;
            bitField0_ |= 0x00004000;
          } else {
            ensureColumnPathsIsMutable();
            columnPaths_.addAll(other.columnPaths_);
          }
          onChanged();
        }
        if (allAccessPathsBuilder_ == null) {
          if (!other.allAccessPaths_.isEmpty()) {
            if (allAccessPaths_.isEmpty()) {
              allAccessPaths_ = other.allAccessPaths_;
              bitField0_ = (bitField0_ & ~0x00008000);
            } else {
              ensureAllAccessPathsIsMutable();
              allAccessPaths_.addAll(other.allAccessPaths_);
            }
            onChanged();
          }
        } else {
          if (!other.allAccessPaths_.isEmpty()) {
            if (allAccessPathsBuilder_.isEmpty()) {
              allAccessPathsBuilder_.dispose();
              allAccessPathsBuilder_ = null;
              allAccessPaths_ = other.allAccessPaths_;
              bitField0_ = (bitField0_ & ~0x00008000);
              allAccessPathsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getAllAccessPathsFieldBuilder() : null;
            } else {
              allAccessPathsBuilder_.addAllMessages(other.allAccessPaths_);
            }
          }
        }
        if (predicateAccessPathsBuilder_ == null) {
          if (!other.predicateAccessPaths_.isEmpty()) {
            if (predicateAccessPaths_.isEmpty()) {
              predicateAccessPaths_ = other.predicateAccessPaths_;
              bitField0_ = (bitField0_ & ~0x00010000);
            } else {
              ensurePredicateAccessPathsIsMutable();
              predicateAccessPaths_.addAll(other.predicateAccessPaths_);
            }
            onChanged();
          }
        } else {
          if (!other.predicateAccessPaths_.isEmpty()) {
            if (predicateAccessPathsBuilder_.isEmpty()) {
              predicateAccessPathsBuilder_.dispose();
              predicateAccessPathsBuilder_ = null;
              predicateAccessPaths_ = other.predicateAccessPaths_;
              bitField0_ = (bitField0_ & ~0x00010000);
              predicateAccessPathsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getPredicateAccessPathsFieldBuilder() : null;
            } else {
              predicateAccessPathsBuilder_.addAllMessages(other.predicateAccessPaths_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasId()) {
          return false;
        }
        if (!hasParent()) {
          return false;
        }
        if (!hasSlotType()) {
          return false;
        }
        if (!hasColumnPos()) {
          return false;
        }
        if (!hasByteOffset()) {
          return false;
        }
        if (!hasNullIndicatorByte()) {
          return false;
        }
        if (!hasNullIndicatorBit()) {
          return false;
        }
        if (!hasColName()) {
          return false;
        }
        if (!hasSlotIdx()) {
          return false;
        }
        if (!getSlotType().isInitialized()) {
          return false;
        }
        for (int i = 0; i < getAllAccessPathsCount(); i++) {
          if (!getAllAccessPaths(i).isInitialized()) {
            return false;
          }
        }
        for (int i = 0; i < getPredicateAccessPathsCount(); i++) {
          if (!getPredicateAccessPaths(i).isInitialized()) {
            return false;
          }
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                id_ = input.readInt32();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 16: {
                parent_ = input.readInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 26: {
                input.readMessage(
                    getSlotTypeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 32: {
                columnPos_ = input.readInt32();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
              case 40: {
                byteOffset_ = input.readInt32();
                bitField0_ |= 0x00000010;
                break;
              } // case 40
              case 48: {
                nullIndicatorByte_ = input.readInt32();
                bitField0_ |= 0x00000020;
                break;
              } // case 48
              case 56: {
                nullIndicatorBit_ = input.readInt32();
                bitField0_ |= 0x00000040;
                break;
              } // case 56
              case 66: {
                colName_ = input.readBytes();
                bitField0_ |= 0x00000080;
                break;
              } // case 66
              case 72: {
                slotIdx_ = input.readInt32();
                bitField0_ |= 0x00000100;
                break;
              } // case 72
              case 80: {
                isMaterialized_ = input.readBool();
                bitField0_ |= 0x00000200;
                break;
              } // case 80
              case 88: {
                colUniqueId_ = input.readInt32();
                bitField0_ |= 0x00000400;
                break;
              } // case 88
              case 96: {
                isKey_ = input.readBool();
                bitField0_ |= 0x00000800;
                break;
              } // case 96
              case 104: {
                isAutoIncrement_ = input.readBool();
                bitField0_ |= 0x00001000;
                break;
              } // case 104
              case 112: {
                colType_ = input.readInt32();
                bitField0_ |= 0x00002000;
                break;
              } // case 112
              case 122: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureColumnPathsIsMutable();
                columnPaths_.add(bs);
                break;
              } // case 122
              case 130: {
                org.apache.doris.proto.Descriptors.PColumnAccessPath m =
                    input.readMessage(
                        org.apache.doris.proto.Descriptors.PColumnAccessPath.PARSER,
                        extensionRegistry);
                if (allAccessPathsBuilder_ == null) {
                  ensureAllAccessPathsIsMutable();
                  allAccessPaths_.add(m);
                } else {
                  allAccessPathsBuilder_.addMessage(m);
                }
                break;
              } // case 130
              case 138: {
                org.apache.doris.proto.Descriptors.PColumnAccessPath m =
                    input.readMessage(
                        org.apache.doris.proto.Descriptors.PColumnAccessPath.PARSER,
                        extensionRegistry);
                if (predicateAccessPathsBuilder_ == null) {
                  ensurePredicateAccessPathsIsMutable();
                  predicateAccessPaths_.add(m);
                } else {
                  predicateAccessPathsBuilder_.addMessage(m);
                }
                break;
              } // case 138
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private int id_ ;
      /**
       * <code>required int32 id = 1;</code>
       * @return Whether the id field is set.
       */
      @java.lang.Override
      public boolean hasId() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required int32 id = 1;</code>
       * @return The id.
       */
      @java.lang.Override
      public int getId() {
        return id_;
      }
      /**
       * <code>required int32 id = 1;</code>
       * @param value The id to set.
       * @return This builder for chaining.
       */
      public Builder setId(int value) {

        id_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        id_ = 0;
        onChanged();
        return this;
      }

      private int parent_ ;
      /**
       * <pre>
       * tuple id which this slot is belong to
       * </pre>
       *
       * <code>required int32 parent = 2;</code>
       * @return Whether the parent field is set.
       */
      @java.lang.Override
      public boolean hasParent() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * tuple id which this slot is belong to
       * </pre>
       *
       * <code>required int32 parent = 2;</code>
       * @return The parent.
       */
      @java.lang.Override
      public int getParent() {
        return parent_;
      }
      /**
       * <pre>
       * tuple id which this slot is belong to
       * </pre>
       *
       * <code>required int32 parent = 2;</code>
       * @param value The parent to set.
       * @return This builder for chaining.
       */
      public Builder setParent(int value) {

        parent_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * tuple id which this slot is belong to
       * </pre>
       *
       * <code>required int32 parent = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearParent() {
        bitField0_ = (bitField0_ & ~0x00000002);
        parent_ = 0;
        onChanged();
        return this;
      }

      private org.apache.doris.proto.Types.PTypeDesc slotType_;
      private com.google.protobuf.SingleFieldBuilderV3<
          org.apache.doris.proto.Types.PTypeDesc, org.apache.doris.proto.Types.PTypeDesc.Builder, org.apache.doris.proto.Types.PTypeDescOrBuilder> slotTypeBuilder_;
      /**
       * <code>required .doris.PTypeDesc slot_type = 3;</code>
       * @return Whether the slotType field is set.
       */
      public boolean hasSlotType() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>required .doris.PTypeDesc slot_type = 3;</code>
       * @return The slotType.
       */
      public org.apache.doris.proto.Types.PTypeDesc getSlotType() {
        if (slotTypeBuilder_ == null) {
          return slotType_ == null ? org.apache.doris.proto.Types.PTypeDesc.getDefaultInstance() : slotType_;
        } else {
          return slotTypeBuilder_.getMessage();
        }
      }
      /**
       * <code>required .doris.PTypeDesc slot_type = 3;</code>
       */
      public Builder setSlotType(org.apache.doris.proto.Types.PTypeDesc value) {
        if (slotTypeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          slotType_ = value;
        } else {
          slotTypeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>required .doris.PTypeDesc slot_type = 3;</code>
       */
      public Builder setSlotType(
          org.apache.doris.proto.Types.PTypeDesc.Builder builderForValue) {
        if (slotTypeBuilder_ == null) {
          slotType_ = builderForValue.build();
        } else {
          slotTypeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>required .doris.PTypeDesc slot_type = 3;</code>
       */
      public Builder mergeSlotType(org.apache.doris.proto.Types.PTypeDesc value) {
        if (slotTypeBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            slotType_ != null &&
            slotType_ != org.apache.doris.proto.Types.PTypeDesc.getDefaultInstance()) {
            getSlotTypeBuilder().mergeFrom(value);
          } else {
            slotType_ = value;
          }
        } else {
          slotTypeBuilder_.mergeFrom(value);
        }
        if (slotType_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <code>required .doris.PTypeDesc slot_type = 3;</code>
       */
      public Builder clearSlotType() {
        bitField0_ = (bitField0_ & ~0x00000004);
        slotType_ = null;
        if (slotTypeBuilder_ != null) {
          slotTypeBuilder_.dispose();
          slotTypeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>required .doris.PTypeDesc slot_type = 3;</code>
       */
      public org.apache.doris.proto.Types.PTypeDesc.Builder getSlotTypeBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getSlotTypeFieldBuilder().getBuilder();
      }
      /**
       * <code>required .doris.PTypeDesc slot_type = 3;</code>
       */
      public org.apache.doris.proto.Types.PTypeDescOrBuilder getSlotTypeOrBuilder() {
        if (slotTypeBuilder_ != null) {
          return slotTypeBuilder_.getMessageOrBuilder();
        } else {
          return slotType_ == null ?
              org.apache.doris.proto.Types.PTypeDesc.getDefaultInstance() : slotType_;
        }
      }
      /**
       * <code>required .doris.PTypeDesc slot_type = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          org.apache.doris.proto.Types.PTypeDesc, org.apache.doris.proto.Types.PTypeDesc.Builder, org.apache.doris.proto.Types.PTypeDescOrBuilder> 
          getSlotTypeFieldBuilder() {
        if (slotTypeBuilder_ == null) {
          slotTypeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              org.apache.doris.proto.Types.PTypeDesc, org.apache.doris.proto.Types.PTypeDesc.Builder, org.apache.doris.proto.Types.PTypeDescOrBuilder>(
                  getSlotType(),
                  getParentForChildren(),
                  isClean());
          slotType_ = null;
        }
        return slotTypeBuilder_;
      }

      private int columnPos_ ;
      /**
       * <pre>
       * in originating table
       * </pre>
       *
       * <code>required int32 column_pos = 4;</code>
       * @return Whether the columnPos field is set.
       */
      @java.lang.Override
      public boolean hasColumnPos() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * in originating table
       * </pre>
       *
       * <code>required int32 column_pos = 4;</code>
       * @return The columnPos.
       */
      @java.lang.Override
      public int getColumnPos() {
        return columnPos_;
      }
      /**
       * <pre>
       * in originating table
       * </pre>
       *
       * <code>required int32 column_pos = 4;</code>
       * @param value The columnPos to set.
       * @return This builder for chaining.
       */
      public Builder setColumnPos(int value) {

        columnPos_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * in originating table
       * </pre>
       *
       * <code>required int32 column_pos = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearColumnPos() {
        bitField0_ = (bitField0_ & ~0x00000008);
        columnPos_ = 0;
        onChanged();
        return this;
      }

      private int byteOffset_ ;
      /**
       * <pre>
       * // deprecated
       * </pre>
       *
       * <code>required int32 byte_offset = 5;</code>
       * @return Whether the byteOffset field is set.
       */
      @java.lang.Override
      public boolean hasByteOffset() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * // deprecated
       * </pre>
       *
       * <code>required int32 byte_offset = 5;</code>
       * @return The byteOffset.
       */
      @java.lang.Override
      public int getByteOffset() {
        return byteOffset_;
      }
      /**
       * <pre>
       * // deprecated
       * </pre>
       *
       * <code>required int32 byte_offset = 5;</code>
       * @param value The byteOffset to set.
       * @return This builder for chaining.
       */
      public Builder setByteOffset(int value) {

        byteOffset_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * // deprecated
       * </pre>
       *
       * <code>required int32 byte_offset = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearByteOffset() {
        bitField0_ = (bitField0_ & ~0x00000010);
        byteOffset_ = 0;
        onChanged();
        return this;
      }

      private int nullIndicatorByte_ ;
      /**
       * <code>required int32 null_indicator_byte = 6;</code>
       * @return Whether the nullIndicatorByte field is set.
       */
      @java.lang.Override
      public boolean hasNullIndicatorByte() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <code>required int32 null_indicator_byte = 6;</code>
       * @return The nullIndicatorByte.
       */
      @java.lang.Override
      public int getNullIndicatorByte() {
        return nullIndicatorByte_;
      }
      /**
       * <code>required int32 null_indicator_byte = 6;</code>
       * @param value The nullIndicatorByte to set.
       * @return This builder for chaining.
       */
      public Builder setNullIndicatorByte(int value) {

        nullIndicatorByte_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 null_indicator_byte = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearNullIndicatorByte() {
        bitField0_ = (bitField0_ & ~0x00000020);
        nullIndicatorByte_ = 0;
        onChanged();
        return this;
      }

      private int nullIndicatorBit_ ;
      /**
       * <code>required int32 null_indicator_bit = 7;</code>
       * @return Whether the nullIndicatorBit field is set.
       */
      @java.lang.Override
      public boolean hasNullIndicatorBit() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <code>required int32 null_indicator_bit = 7;</code>
       * @return The nullIndicatorBit.
       */
      @java.lang.Override
      public int getNullIndicatorBit() {
        return nullIndicatorBit_;
      }
      /**
       * <code>required int32 null_indicator_bit = 7;</code>
       * @param value The nullIndicatorBit to set.
       * @return This builder for chaining.
       */
      public Builder setNullIndicatorBit(int value) {

        nullIndicatorBit_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 null_indicator_bit = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearNullIndicatorBit() {
        bitField0_ = (bitField0_ & ~0x00000040);
        nullIndicatorBit_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object colName_ = "";
      /**
       * <code>required string col_name = 8;</code>
       * @return Whether the colName field is set.
       */
      public boolean hasColName() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <code>required string col_name = 8;</code>
       * @return The colName.
       */
      public java.lang.String getColName() {
        java.lang.Object ref = colName_;
        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()) {
            colName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>required string col_name = 8;</code>
       * @return The bytes for colName.
       */
      public com.google.protobuf.ByteString
          getColNameBytes() {
        java.lang.Object ref = colName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          colName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>required string col_name = 8;</code>
       * @param value The colName to set.
       * @return This builder for chaining.
       */
      public Builder setColName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        colName_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <code>required string col_name = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearColName() {
        colName_ = getDefaultInstance().getColName();
        bitField0_ = (bitField0_ & ~0x00000080);
        onChanged();
        return this;
      }
      /**
       * <code>required string col_name = 8;</code>
       * @param value The bytes for colName to set.
       * @return This builder for chaining.
       */
      public Builder setColNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        colName_ = value;
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }

      private int slotIdx_ ;
      /**
       * <code>required int32 slot_idx = 9;</code>
       * @return Whether the slotIdx field is set.
       */
      @java.lang.Override
      public boolean hasSlotIdx() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * <code>required int32 slot_idx = 9;</code>
       * @return The slotIdx.
       */
      @java.lang.Override
      public int getSlotIdx() {
        return slotIdx_;
      }
      /**
       * <code>required int32 slot_idx = 9;</code>
       * @param value The slotIdx to set.
       * @return This builder for chaining.
       */
      public Builder setSlotIdx(int value) {

        slotIdx_ = value;
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 slot_idx = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearSlotIdx() {
        bitField0_ = (bitField0_ & ~0x00000100);
        slotIdx_ = 0;
        onChanged();
        return this;
      }

      private boolean isMaterialized_ ;
      /**
       * <code>optional bool is_materialized = 10 [deprecated = true];</code>
       * @deprecated doris.PSlotDescriptor.is_materialized is deprecated.
       *     See descriptors.proto;l=78
       * @return Whether the isMaterialized field is set.
       */
      @java.lang.Override
      @java.lang.Deprecated public boolean hasIsMaterialized() {
        return ((bitField0_ & 0x00000200) != 0);
      }
      /**
       * <code>optional bool is_materialized = 10 [deprecated = true];</code>
       * @deprecated doris.PSlotDescriptor.is_materialized is deprecated.
       *     See descriptors.proto;l=78
       * @return The isMaterialized.
       */
      @java.lang.Override
      @java.lang.Deprecated public boolean getIsMaterialized() {
        return isMaterialized_;
      }
      /**
       * <code>optional bool is_materialized = 10 [deprecated = true];</code>
       * @deprecated doris.PSlotDescriptor.is_materialized is deprecated.
       *     See descriptors.proto;l=78
       * @param value The isMaterialized to set.
       * @return This builder for chaining.
       */
      @java.lang.Deprecated public Builder setIsMaterialized(boolean value) {

        isMaterialized_ = value;
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool is_materialized = 10 [deprecated = true];</code>
       * @deprecated doris.PSlotDescriptor.is_materialized is deprecated.
       *     See descriptors.proto;l=78
       * @return This builder for chaining.
       */
      @java.lang.Deprecated public Builder clearIsMaterialized() {
        bitField0_ = (bitField0_ & ~0x00000200);
        isMaterialized_ = false;
        onChanged();
        return this;
      }

      private int colUniqueId_ ;
      /**
       * <code>optional int32 col_unique_id = 11;</code>
       * @return Whether the colUniqueId field is set.
       */
      @java.lang.Override
      public boolean hasColUniqueId() {
        return ((bitField0_ & 0x00000400) != 0);
      }
      /**
       * <code>optional int32 col_unique_id = 11;</code>
       * @return The colUniqueId.
       */
      @java.lang.Override
      public int getColUniqueId() {
        return colUniqueId_;
      }
      /**
       * <code>optional int32 col_unique_id = 11;</code>
       * @param value The colUniqueId to set.
       * @return This builder for chaining.
       */
      public Builder setColUniqueId(int value) {

        colUniqueId_ = value;
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 col_unique_id = 11;</code>
       * @return This builder for chaining.
       */
      public Builder clearColUniqueId() {
        bitField0_ = (bitField0_ & ~0x00000400);
        colUniqueId_ = 0;
        onChanged();
        return this;
      }

      private boolean isKey_ ;
      /**
       * <code>optional bool is_key = 12;</code>
       * @return Whether the isKey field is set.
       */
      @java.lang.Override
      public boolean hasIsKey() {
        return ((bitField0_ & 0x00000800) != 0);
      }
      /**
       * <code>optional bool is_key = 12;</code>
       * @return The isKey.
       */
      @java.lang.Override
      public boolean getIsKey() {
        return isKey_;
      }
      /**
       * <code>optional bool is_key = 12;</code>
       * @param value The isKey to set.
       * @return This builder for chaining.
       */
      public Builder setIsKey(boolean value) {

        isKey_ = value;
        bitField0_ |= 0x00000800;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool is_key = 12;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsKey() {
        bitField0_ = (bitField0_ & ~0x00000800);
        isKey_ = false;
        onChanged();
        return this;
      }

      private boolean isAutoIncrement_ ;
      /**
       * <code>optional bool is_auto_increment = 13;</code>
       * @return Whether the isAutoIncrement field is set.
       */
      @java.lang.Override
      public boolean hasIsAutoIncrement() {
        return ((bitField0_ & 0x00001000) != 0);
      }
      /**
       * <code>optional bool is_auto_increment = 13;</code>
       * @return The isAutoIncrement.
       */
      @java.lang.Override
      public boolean getIsAutoIncrement() {
        return isAutoIncrement_;
      }
      /**
       * <code>optional bool is_auto_increment = 13;</code>
       * @param value The isAutoIncrement to set.
       * @return This builder for chaining.
       */
      public Builder setIsAutoIncrement(boolean value) {

        isAutoIncrement_ = value;
        bitField0_ |= 0x00001000;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool is_auto_increment = 13;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsAutoIncrement() {
        bitField0_ = (bitField0_ & ~0x00001000);
        isAutoIncrement_ = false;
        onChanged();
        return this;
      }

      private int colType_ ;
      /**
       * <code>optional int32 col_type = 14 [default = 0];</code>
       * @return Whether the colType field is set.
       */
      @java.lang.Override
      public boolean hasColType() {
        return ((bitField0_ & 0x00002000) != 0);
      }
      /**
       * <code>optional int32 col_type = 14 [default = 0];</code>
       * @return The colType.
       */
      @java.lang.Override
      public int getColType() {
        return colType_;
      }
      /**
       * <code>optional int32 col_type = 14 [default = 0];</code>
       * @param value The colType to set.
       * @return This builder for chaining.
       */
      public Builder setColType(int value) {

        colType_ = value;
        bitField0_ |= 0x00002000;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 col_type = 14 [default = 0];</code>
       * @return This builder for chaining.
       */
      public Builder clearColType() {
        bitField0_ = (bitField0_ & ~0x00002000);
        colType_ = 0;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringArrayList columnPaths_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureColumnPathsIsMutable() {
        if (!columnPaths_.isModifiable()) {
          columnPaths_ = new com.google.protobuf.LazyStringArrayList(columnPaths_);
        }
        bitField0_ |= 0x00004000;
      }
      /**
       * <code>repeated string column_paths = 15;</code>
       * @return A list containing the columnPaths.
       */
      public com.google.protobuf.ProtocolStringList
          getColumnPathsList() {
        columnPaths_.makeImmutable();
        return columnPaths_;
      }
      /**
       * <code>repeated string column_paths = 15;</code>
       * @return The count of columnPaths.
       */
      public int getColumnPathsCount() {
        return columnPaths_.size();
      }
      /**
       * <code>repeated string column_paths = 15;</code>
       * @param index The index of the element to return.
       * @return The columnPaths at the given index.
       */
      public java.lang.String getColumnPaths(int index) {
        return columnPaths_.get(index);
      }
      /**
       * <code>repeated string column_paths = 15;</code>
       * @param index The index of the value to return.
       * @return The bytes of the columnPaths at the given index.
       */
      public com.google.protobuf.ByteString
          getColumnPathsBytes(int index) {
        return columnPaths_.getByteString(index);
      }
      /**
       * <code>repeated string column_paths = 15;</code>
       * @param index The index to set the value at.
       * @param value The columnPaths to set.
       * @return This builder for chaining.
       */
      public Builder setColumnPaths(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureColumnPathsIsMutable();
        columnPaths_.set(index, value);
        bitField0_ |= 0x00004000;
        onChanged();
        return this;
      }
      /**
       * <code>repeated string column_paths = 15;</code>
       * @param value The columnPaths to add.
       * @return This builder for chaining.
       */
      public Builder addColumnPaths(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureColumnPathsIsMutable();
        columnPaths_.add(value);
        bitField0_ |= 0x00004000;
        onChanged();
        return this;
      }
      /**
       * <code>repeated string column_paths = 15;</code>
       * @param values The columnPaths to add.
       * @return This builder for chaining.
       */
      public Builder addAllColumnPaths(
          java.lang.Iterable<java.lang.String> values) {
        ensureColumnPathsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, columnPaths_);
        bitField0_ |= 0x00004000;
        onChanged();
        return this;
      }
      /**
       * <code>repeated string column_paths = 15;</code>
       * @return This builder for chaining.
       */
      public Builder clearColumnPaths() {
        columnPaths_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00004000);;
        onChanged();
        return this;
      }
      /**
       * <code>repeated string column_paths = 15;</code>
       * @param value The bytes of the columnPaths to add.
       * @return This builder for chaining.
       */
      public Builder addColumnPathsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureColumnPathsIsMutable();
        columnPaths_.add(value);
        bitField0_ |= 0x00004000;
        onChanged();
        return this;
      }

      private java.util.List<org.apache.doris.proto.Descriptors.PColumnAccessPath> allAccessPaths_ =
        java.util.Collections.emptyList();
      private void ensureAllAccessPathsIsMutable() {
        if (!((bitField0_ & 0x00008000) != 0)) {
          allAccessPaths_ = new java.util.ArrayList<org.apache.doris.proto.Descriptors.PColumnAccessPath>(allAccessPaths_);
          bitField0_ |= 0x00008000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          org.apache.doris.proto.Descriptors.PColumnAccessPath, org.apache.doris.proto.Descriptors.PColumnAccessPath.Builder, org.apache.doris.proto.Descriptors.PColumnAccessPathOrBuilder> allAccessPathsBuilder_;

      /**
       * <code>repeated .doris.PColumnAccessPath all_access_paths = 16;</code>
       */
      public java.util.List<org.apache.doris.proto.Descriptors.PColumnAccessPath> getAllAccessPathsList() {
        if (allAccessPathsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(allAccessPaths_);
        } else {
          return allAccessPathsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .doris.PColumnAccessPath all_access_paths = 16;</code>
       */
      public int getAllAccessPathsCount() {
        if (allAccessPathsBuilder_ == null) {
          return allAccessPaths_.size();
        } else {
          return allAccessPathsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .doris.PColumnAccessPath all_access_paths = 16;</code>
       */
      public org.apache.doris.proto.Descriptors.PColumnAccessPath getAllAccessPaths(int index) {
        if (allAccessPathsBuilder_ == null) {
          return allAccessPaths_.get(index);
        } else {
          return allAccessPathsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .doris.PColumnAccessPath all_access_paths = 16;</code>
       */
      public Builder setAllAccessPaths(
          int index, org.apache.doris.proto.Descriptors.PColumnAccessPath value) {
        if (allAccessPathsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAllAccessPathsIsMutable();
          allAccessPaths_.set(index, value);
          onChanged();
        } else {
          allAccessPathsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .doris.PColumnAccessPath all_access_paths = 16;</code>
       */
      public Builder setAllAccessPaths(
          int index, org.apache.doris.proto.Descriptors.PColumnAccessPath.Builder builderForValue) {
        if (allAccessPathsBuilder_ == null) {
          ensureAllAccessPathsIsMutable();
          allAccessPaths_.set(index, builderForValue.build());
          onChanged();
        } else {
          allAccessPathsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .doris.PColumnAccessPath all_access_paths = 16;</code>
       */
      public Builder addAllAccessPaths(org.apache.doris.proto.Descriptors.PColumnAccessPath value) {
        if (allAccessPathsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAllAccessPathsIsMutable();
          allAccessPaths_.add(value);
          onChanged();
        } else {
          allAccessPathsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .doris.PColumnAccessPath all_access_paths = 16;</code>
       */
      public Builder addAllAccessPaths(
          int index, org.apache.doris.proto.Descriptors.PColumnAccessPath value) {
        if (allAccessPathsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAllAccessPathsIsMutable();
          allAccessPaths_.add(index, value);
          onChanged();
        } else {
          allAccessPathsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .doris.PColumnAccessPath all_access_paths = 16;</code>
       */
      public Builder addAllAccessPaths(
          org.apache.doris.proto.Descriptors.PColumnAccessPath.Builder builderForValue) {
        if (allAccessPathsBuilder_ == null) {
          ensureAllAccessPathsIsMutable();
          allAccessPaths_.add(builderForValue.build());
          onChanged();
        } else {
          allAccessPathsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .doris.PColumnAccessPath all_access_paths = 16;</code>
       */
      public Builder addAllAccessPaths(
          int index, org.apache.doris.proto.Descriptors.PColumnAccessPath.Builder builderForValue) {
        if (allAccessPathsBuilder_ == null) {
          ensureAllAccessPathsIsMutable();
          allAccessPaths_.add(index, builderForValue.build());
          onChanged();
        } else {
          allAccessPathsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .doris.PColumnAccessPath all_access_paths = 16;</code>
       */
      public Builder addAllAllAccessPaths(
          java.lang.Iterable<? extends org.apache.doris.proto.Descriptors.PColumnAccessPath> values) {
        if (allAccessPathsBuilder_ == null) {
          ensureAllAccessPathsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, allAccessPaths_);
          onChanged();
        } else {
          allAccessPathsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .doris.PColumnAccessPath all_access_paths = 16;</code>
       */
      public Builder clearAllAccessPaths() {
        if (allAccessPathsBuilder_ == null) {
          allAccessPaths_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00008000);
          onChanged();
        } else {
          allAccessPathsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .doris.PColumnAccessPath all_access_paths = 16;</code>
       */
      public Builder removeAllAccessPaths(int index) {
        if (allAccessPathsBuilder_ == null) {
          ensureAllAccessPathsIsMutable();
          allAccessPaths_.remove(index);
          onChanged();
        } else {
          allAccessPathsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .doris.PColumnAccessPath all_access_paths = 16;</code>
       */
      public org.apache.doris.proto.Descriptors.PColumnAccessPath.Builder getAllAccessPathsBuilder(
          int index) {
        return getAllAccessPathsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .doris.PColumnAccessPath all_access_paths = 16;</code>
       */
      public org.apache.doris.proto.Descriptors.PColumnAccessPathOrBuilder getAllAccessPathsOrBuilder(
          int index) {
        if (allAccessPathsBuilder_ == null) {
          return allAccessPaths_.get(index);  } else {
          return allAccessPathsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .doris.PColumnAccessPath all_access_paths = 16;</code>
       */
      public java.util.List<? extends org.apache.doris.proto.Descriptors.PColumnAccessPathOrBuilder> 
           getAllAccessPathsOrBuilderList() {
        if (allAccessPathsBuilder_ != null) {
          return allAccessPathsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(allAccessPaths_);
        }
      }
      /**
       * <code>repeated .doris.PColumnAccessPath all_access_paths = 16;</code>
       */
      public org.apache.doris.proto.Descriptors.PColumnAccessPath.Builder addAllAccessPathsBuilder() {
        return getAllAccessPathsFieldBuilder().addBuilder(
            org.apache.doris.proto.Descriptors.PColumnAccessPath.getDefaultInstance());
      }
      /**
       * <code>repeated .doris.PColumnAccessPath all_access_paths = 16;</code>
       */
      public org.apache.doris.proto.Descriptors.PColumnAccessPath.Builder addAllAccessPathsBuilder(
          int index) {
        return getAllAccessPathsFieldBuilder().addBuilder(
            index, org.apache.doris.proto.Descriptors.PColumnAccessPath.getDefaultInstance());
      }
      /**
       * <code>repeated .doris.PColumnAccessPath all_access_paths = 16;</code>
       */
      public java.util.List<org.apache.doris.proto.Descriptors.PColumnAccessPath.Builder> 
           getAllAccessPathsBuilderList() {
        return getAllAccessPathsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          org.apache.doris.proto.Descriptors.PColumnAccessPath, org.apache.doris.proto.Descriptors.PColumnAccessPath.Builder, org.apache.doris.proto.Descriptors.PColumnAccessPathOrBuilder> 
          getAllAccessPathsFieldBuilder() {
        if (allAccessPathsBuilder_ == null) {
          allAccessPathsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              org.apache.doris.proto.Descriptors.PColumnAccessPath, org.apache.doris.proto.Descriptors.PColumnAccessPath.Builder, org.apache.doris.proto.Descriptors.PColumnAccessPathOrBuilder>(
                  allAccessPaths_,
                  ((bitField0_ & 0x00008000) != 0),
                  getParentForChildren(),
                  isClean());
          allAccessPaths_ = null;
        }
        return allAccessPathsBuilder_;
      }

      private java.util.List<org.apache.doris.proto.Descriptors.PColumnAccessPath> predicateAccessPaths_ =
        java.util.Collections.emptyList();
      private void ensurePredicateAccessPathsIsMutable() {
        if (!((bitField0_ & 0x00010000) != 0)) {
          predicateAccessPaths_ = new java.util.ArrayList<org.apache.doris.proto.Descriptors.PColumnAccessPath>(predicateAccessPaths_);
          bitField0_ |= 0x00010000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          org.apache.doris.proto.Descriptors.PColumnAccessPath, org.apache.doris.proto.Descriptors.PColumnAccessPath.Builder, org.apache.doris.proto.Descriptors.PColumnAccessPathOrBuilder> predicateAccessPathsBuilder_;

      /**
       * <code>repeated .doris.PColumnAccessPath predicate_access_paths = 17;</code>
       */
      public java.util.List<org.apache.doris.proto.Descriptors.PColumnAccessPath> getPredicateAccessPathsList() {
        if (predicateAccessPathsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(predicateAccessPaths_);
        } else {
          return predicateAccessPathsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .doris.PColumnAccessPath predicate_access_paths = 17;</code>
       */
      public int getPredicateAccessPathsCount() {
        if (predicateAccessPathsBuilder_ == null) {
          return predicateAccessPaths_.size();
        } else {
          return predicateAccessPathsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .doris.PColumnAccessPath predicate_access_paths = 17;</code>
       */
      public org.apache.doris.proto.Descriptors.PColumnAccessPath getPredicateAccessPaths(int index) {
        if (predicateAccessPathsBuilder_ == null) {
          return predicateAccessPaths_.get(index);
        } else {
          return predicateAccessPathsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .doris.PColumnAccessPath predicate_access_paths = 17;</code>
       */
      public Builder setPredicateAccessPaths(
          int index, org.apache.doris.proto.Descriptors.PColumnAccessPath value) {
        if (predicateAccessPathsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePredicateAccessPathsIsMutable();
          predicateAccessPaths_.set(index, value);
          onChanged();
        } else {
          predicateAccessPathsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .doris.PColumnAccessPath predicate_access_paths = 17;</code>
       */
      public Builder setPredicateAccessPaths(
          int index, org.apache.doris.proto.Descriptors.PColumnAccessPath.Builder builderForValue) {
        if (predicateAccessPathsBuilder_ == null) {
          ensurePredicateAccessPathsIsMutable();
          predicateAccessPaths_.set(index, builderForValue.build());
          onChanged();
        } else {
          predicateAccessPathsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .doris.PColumnAccessPath predicate_access_paths = 17;</code>
       */
      public Builder addPredicateAccessPaths(org.apache.doris.proto.Descriptors.PColumnAccessPath value) {
        if (predicateAccessPathsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePredicateAccessPathsIsMutable();
          predicateAccessPaths_.add(value);
          onChanged();
        } else {
          predicateAccessPathsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .doris.PColumnAccessPath predicate_access_paths = 17;</code>
       */
      public Builder addPredicateAccessPaths(
          int index, org.apache.doris.proto.Descriptors.PColumnAccessPath value) {
        if (predicateAccessPathsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePredicateAccessPathsIsMutable();
          predicateAccessPaths_.add(index, value);
          onChanged();
        } else {
          predicateAccessPathsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .doris.PColumnAccessPath predicate_access_paths = 17;</code>
       */
      public Builder addPredicateAccessPaths(
          org.apache.doris.proto.Descriptors.PColumnAccessPath.Builder builderForValue) {
        if (predicateAccessPathsBuilder_ == null) {
          ensurePredicateAccessPathsIsMutable();
          predicateAccessPaths_.add(builderForValue.build());
          onChanged();
        } else {
          predicateAccessPathsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .doris.PColumnAccessPath predicate_access_paths = 17;</code>
       */
      public Builder addPredicateAccessPaths(
          int index, org.apache.doris.proto.Descriptors.PColumnAccessPath.Builder builderForValue) {
        if (predicateAccessPathsBuilder_ == null) {
          ensurePredicateAccessPathsIsMutable();
          predicateAccessPaths_.add(index, builderForValue.build());
          onChanged();
        } else {
          predicateAccessPathsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .doris.PColumnAccessPath predicate_access_paths = 17;</code>
       */
      public Builder addAllPredicateAccessPaths(
          java.lang.Iterable<? extends org.apache.doris.proto.Descriptors.PColumnAccessPath> values) {
        if (predicateAccessPathsBuilder_ == null) {
          ensurePredicateAccessPathsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, predicateAccessPaths_);
          onChanged();
        } else {
          predicateAccessPathsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .doris.PColumnAccessPath predicate_access_paths = 17;</code>
       */
      public Builder clearPredicateAccessPaths() {
        if (predicateAccessPathsBuilder_ == null) {
          predicateAccessPaths_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00010000);
          onChanged();
        } else {
          predicateAccessPathsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .doris.PColumnAccessPath predicate_access_paths = 17;</code>
       */
      public Builder removePredicateAccessPaths(int index) {
        if (predicateAccessPathsBuilder_ == null) {
          ensurePredicateAccessPathsIsMutable();
          predicateAccessPaths_.remove(index);
          onChanged();
        } else {
          predicateAccessPathsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .doris.PColumnAccessPath predicate_access_paths = 17;</code>
       */
      public org.apache.doris.proto.Descriptors.PColumnAccessPath.Builder getPredicateAccessPathsBuilder(
          int index) {
        return getPredicateAccessPathsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .doris.PColumnAccessPath predicate_access_paths = 17;</code>
       */
      public org.apache.doris.proto.Descriptors.PColumnAccessPathOrBuilder getPredicateAccessPathsOrBuilder(
          int index) {
        if (predicateAccessPathsBuilder_ == null) {
          return predicateAccessPaths_.get(index);  } else {
          return predicateAccessPathsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .doris.PColumnAccessPath predicate_access_paths = 17;</code>
       */
      public java.util.List<? extends org.apache.doris.proto.Descriptors.PColumnAccessPathOrBuilder> 
           getPredicateAccessPathsOrBuilderList() {
        if (predicateAccessPathsBuilder_ != null) {
          return predicateAccessPathsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(predicateAccessPaths_);
        }
      }
      /**
       * <code>repeated .doris.PColumnAccessPath predicate_access_paths = 17;</code>
       */
      public org.apache.doris.proto.Descriptors.PColumnAccessPath.Builder addPredicateAccessPathsBuilder() {
        return getPredicateAccessPathsFieldBuilder().addBuilder(
            org.apache.doris.proto.Descriptors.PColumnAccessPath.getDefaultInstance());
      }
      /**
       * <code>repeated .doris.PColumnAccessPath predicate_access_paths = 17;</code>
       */
      public org.apache.doris.proto.Descriptors.PColumnAccessPath.Builder addPredicateAccessPathsBuilder(
          int index) {
        return getPredicateAccessPathsFieldBuilder().addBuilder(
            index, org.apache.doris.proto.Descriptors.PColumnAccessPath.getDefaultInstance());
      }
      /**
       * <code>repeated .doris.PColumnAccessPath predicate_access_paths = 17;</code>
       */
      public java.util.List<org.apache.doris.proto.Descriptors.PColumnAccessPath.Builder> 
           getPredicateAccessPathsBuilderList() {
        return getPredicateAccessPathsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          org.apache.doris.proto.Descriptors.PColumnAccessPath, org.apache.doris.proto.Descriptors.PColumnAccessPath.Builder, org.apache.doris.proto.Descriptors.PColumnAccessPathOrBuilder> 
          getPredicateAccessPathsFieldBuilder() {
        if (predicateAccessPathsBuilder_ == null) {
          predicateAccessPathsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              org.apache.doris.proto.Descriptors.PColumnAccessPath, org.apache.doris.proto.Descriptors.PColumnAccessPath.Builder, org.apache.doris.proto.Descriptors.PColumnAccessPathOrBuilder>(
                  predicateAccessPaths_,
                  ((bitField0_ & 0x00010000) != 0),
                  getParentForChildren(),
                  isClean());
          predicateAccessPaths_ = null;
        }
        return predicateAccessPathsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:doris.PSlotDescriptor)
    }

    // @@protoc_insertion_point(class_scope:doris.PSlotDescriptor)
    private static final org.apache.doris.proto.Descriptors.PSlotDescriptor DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.doris.proto.Descriptors.PSlotDescriptor();
    }

    public static org.apache.doris.proto.Descriptors.PSlotDescriptor getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<PSlotDescriptor>
        PARSER = new com.google.protobuf.AbstractParser<PSlotDescriptor>() {
      @java.lang.Override
      public PSlotDescriptor parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<PSlotDescriptor> parser() {
      return PARSER;
    }

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

    @java.lang.Override
    public org.apache.doris.proto.Descriptors.PSlotDescriptor getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PTupleDescriptorOrBuilder extends
      // @@protoc_insertion_point(interface_extends:doris.PTupleDescriptor)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required int32 id = 1;</code>
     * @return Whether the id field is set.
     */
    boolean hasId();
    /**
     * <code>required int32 id = 1;</code>
     * @return The id.
     */
    int getId();

    /**
     * <pre>
     * deprecated
     * </pre>
     *
     * <code>required int32 byte_size = 2;</code>
     * @return Whether the byteSize field is set.
     */
    boolean hasByteSize();
    /**
     * <pre>
     * deprecated
     * </pre>
     *
     * <code>required int32 byte_size = 2;</code>
     * @return The byteSize.
     */
    int getByteSize();

    /**
     * <pre>
     * deprecated
     * </pre>
     *
     * <code>required int32 num_null_bytes = 3;</code>
     * @return Whether the numNullBytes field is set.
     */
    boolean hasNumNullBytes();
    /**
     * <pre>
     * deprecated
     * </pre>
     *
     * <code>required int32 num_null_bytes = 3;</code>
     * @return The numNullBytes.
     */
    int getNumNullBytes();

    /**
     * <code>optional int64 table_id = 4;</code>
     * @return Whether the tableId field is set.
     */
    boolean hasTableId();
    /**
     * <code>optional int64 table_id = 4;</code>
     * @return The tableId.
     */
    long getTableId();

    /**
     * <pre>
     * deprecated
     * </pre>
     *
     * <code>optional int32 num_null_slots = 5;</code>
     * @return Whether the numNullSlots field is set.
     */
    boolean hasNumNullSlots();
    /**
     * <pre>
     * deprecated
     * </pre>
     *
     * <code>optional int32 num_null_slots = 5;</code>
     * @return The numNullSlots.
     */
    int getNumNullSlots();
  }
  /**
   * Protobuf type {@code doris.PTupleDescriptor}
   */
  public static final class PTupleDescriptor extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:doris.PTupleDescriptor)
      PTupleDescriptorOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PTupleDescriptor.newBuilder() to construct.
    private PTupleDescriptor(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PTupleDescriptor() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new PTupleDescriptor();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.doris.proto.Descriptors.internal_static_doris_PTupleDescriptor_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.doris.proto.Descriptors.internal_static_doris_PTupleDescriptor_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.doris.proto.Descriptors.PTupleDescriptor.class, org.apache.doris.proto.Descriptors.PTupleDescriptor.Builder.class);
    }

    private int bitField0_;
    public static final int ID_FIELD_NUMBER = 1;
    private int id_ = 0;
    /**
     * <code>required int32 id = 1;</code>
     * @return Whether the id field is set.
     */
    @java.lang.Override
    public boolean hasId() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required int32 id = 1;</code>
     * @return The id.
     */
    @java.lang.Override
    public int getId() {
      return id_;
    }

    public static final int BYTE_SIZE_FIELD_NUMBER = 2;
    private int byteSize_ = 0;
    /**
     * <pre>
     * deprecated
     * </pre>
     *
     * <code>required int32 byte_size = 2;</code>
     * @return Whether the byteSize field is set.
     */
    @java.lang.Override
    public boolean hasByteSize() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * deprecated
     * </pre>
     *
     * <code>required int32 byte_size = 2;</code>
     * @return The byteSize.
     */
    @java.lang.Override
    public int getByteSize() {
      return byteSize_;
    }

    public static final int NUM_NULL_BYTES_FIELD_NUMBER = 3;
    private int numNullBytes_ = 0;
    /**
     * <pre>
     * deprecated
     * </pre>
     *
     * <code>required int32 num_null_bytes = 3;</code>
     * @return Whether the numNullBytes field is set.
     */
    @java.lang.Override
    public boolean hasNumNullBytes() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * deprecated
     * </pre>
     *
     * <code>required int32 num_null_bytes = 3;</code>
     * @return The numNullBytes.
     */
    @java.lang.Override
    public int getNumNullBytes() {
      return numNullBytes_;
    }

    public static final int TABLE_ID_FIELD_NUMBER = 4;
    private long tableId_ = 0L;
    /**
     * <code>optional int64 table_id = 4;</code>
     * @return Whether the tableId field is set.
     */
    @java.lang.Override
    public boolean hasTableId() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>optional int64 table_id = 4;</code>
     * @return The tableId.
     */
    @java.lang.Override
    public long getTableId() {
      return tableId_;
    }

    public static final int NUM_NULL_SLOTS_FIELD_NUMBER = 5;
    private int numNullSlots_ = 0;
    /**
     * <pre>
     * deprecated
     * </pre>
     *
     * <code>optional int32 num_null_slots = 5;</code>
     * @return Whether the numNullSlots field is set.
     */
    @java.lang.Override
    public boolean hasNumNullSlots() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * deprecated
     * </pre>
     *
     * <code>optional int32 num_null_slots = 5;</code>
     * @return The numNullSlots.
     */
    @java.lang.Override
    public int getNumNullSlots() {
      return numNullSlots_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasByteSize()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasNumNullBytes()) {
        memoizedIsInitialized = 0;
        return false;
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeInt32(1, id_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeInt32(2, byteSize_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeInt32(3, numNullBytes_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeInt64(4, tableId_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeInt32(5, numNullSlots_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, id_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, byteSize_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, numNullBytes_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(4, tableId_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(5, numNullSlots_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.doris.proto.Descriptors.PTupleDescriptor)) {
        return super.equals(obj);
      }
      org.apache.doris.proto.Descriptors.PTupleDescriptor other = (org.apache.doris.proto.Descriptors.PTupleDescriptor) obj;

      if (hasId() != other.hasId()) return false;
      if (hasId()) {
        if (getId()
            != other.getId()) return false;
      }
      if (hasByteSize() != other.hasByteSize()) return false;
      if (hasByteSize()) {
        if (getByteSize()
            != other.getByteSize()) return false;
      }
      if (hasNumNullBytes() != other.hasNumNullBytes()) return false;
      if (hasNumNullBytes()) {
        if (getNumNullBytes()
            != other.getNumNullBytes()) return false;
      }
      if (hasTableId() != other.hasTableId()) return false;
      if (hasTableId()) {
        if (getTableId()
            != other.getTableId()) return false;
      }
      if (hasNumNullSlots() != other.hasNumNullSlots()) return false;
      if (hasNumNullSlots()) {
        if (getNumNullSlots()
            != other.getNumNullSlots()) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasId()) {
        hash = (37 * hash) + ID_FIELD_NUMBER;
        hash = (53 * hash) + getId();
      }
      if (hasByteSize()) {
        hash = (37 * hash) + BYTE_SIZE_FIELD_NUMBER;
        hash = (53 * hash) + getByteSize();
      }
      if (hasNumNullBytes()) {
        hash = (37 * hash) + NUM_NULL_BYTES_FIELD_NUMBER;
        hash = (53 * hash) + getNumNullBytes();
      }
      if (hasTableId()) {
        hash = (37 * hash) + TABLE_ID_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getTableId());
      }
      if (hasNumNullSlots()) {
        hash = (37 * hash) + NUM_NULL_SLOTS_FIELD_NUMBER;
        hash = (53 * hash) + getNumNullSlots();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.doris.proto.Descriptors.PTupleDescriptor parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.doris.proto.Descriptors.PTupleDescriptor parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.doris.proto.Descriptors.PTupleDescriptor parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.doris.proto.Descriptors.PTupleDescriptor parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.doris.proto.Descriptors.PTupleDescriptor parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.doris.proto.Descriptors.PTupleDescriptor parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.doris.proto.Descriptors.PTupleDescriptor parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.doris.proto.Descriptors.PTupleDescriptor parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.apache.doris.proto.Descriptors.PTupleDescriptor parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.doris.proto.Descriptors.PTupleDescriptor parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.apache.doris.proto.Descriptors.PTupleDescriptor parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.doris.proto.Descriptors.PTupleDescriptor parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.doris.proto.Descriptors.PTupleDescriptor prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code doris.PTupleDescriptor}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:doris.PTupleDescriptor)
        org.apache.doris.proto.Descriptors.PTupleDescriptorOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.doris.proto.Descriptors.internal_static_doris_PTupleDescriptor_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.doris.proto.Descriptors.internal_static_doris_PTupleDescriptor_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.doris.proto.Descriptors.PTupleDescriptor.class, org.apache.doris.proto.Descriptors.PTupleDescriptor.Builder.class);
      }

      // Construct using org.apache.doris.proto.Descriptors.PTupleDescriptor.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        id_ = 0;
        byteSize_ = 0;
        numNullBytes_ = 0;
        tableId_ = 0L;
        numNullSlots_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.doris.proto.Descriptors.internal_static_doris_PTupleDescriptor_descriptor;
      }

      @java.lang.Override
      public org.apache.doris.proto.Descriptors.PTupleDescriptor getDefaultInstanceForType() {
        return org.apache.doris.proto.Descriptors.PTupleDescriptor.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.doris.proto.Descriptors.PTupleDescriptor build() {
        org.apache.doris.proto.Descriptors.PTupleDescriptor result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.doris.proto.Descriptors.PTupleDescriptor buildPartial() {
        org.apache.doris.proto.Descriptors.PTupleDescriptor result = new org.apache.doris.proto.Descriptors.PTupleDescriptor(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(org.apache.doris.proto.Descriptors.PTupleDescriptor result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.id_ = id_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.byteSize_ = byteSize_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.numNullBytes_ = numNullBytes_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.tableId_ = tableId_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.numNullSlots_ = numNullSlots_;
          to_bitField0_ |= 0x00000010;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.doris.proto.Descriptors.PTupleDescriptor) {
          return mergeFrom((org.apache.doris.proto.Descriptors.PTupleDescriptor)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.doris.proto.Descriptors.PTupleDescriptor other) {
        if (other == org.apache.doris.proto.Descriptors.PTupleDescriptor.getDefaultInstance()) return this;
        if (other.hasId()) {
          setId(other.getId());
        }
        if (other.hasByteSize()) {
          setByteSize(other.getByteSize());
        }
        if (other.hasNumNullBytes()) {
          setNumNullBytes(other.getNumNullBytes());
        }
        if (other.hasTableId()) {
          setTableId(other.getTableId());
        }
        if (other.hasNumNullSlots()) {
          setNumNullSlots(other.getNumNullSlots());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasId()) {
          return false;
        }
        if (!hasByteSize()) {
          return false;
        }
        if (!hasNumNullBytes()) {
          return false;
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                id_ = input.readInt32();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 16: {
                byteSize_ = input.readInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 24: {
                numNullBytes_ = input.readInt32();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 32: {
                tableId_ = input.readInt64();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
              case 40: {
                numNullSlots_ = input.readInt32();
                bitField0_ |= 0x00000010;
                break;
              } // case 40
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private int id_ ;
      /**
       * <code>required int32 id = 1;</code>
       * @return Whether the id field is set.
       */
      @java.lang.Override
      public boolean hasId() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required int32 id = 1;</code>
       * @return The id.
       */
      @java.lang.Override
      public int getId() {
        return id_;
      }
      /**
       * <code>required int32 id = 1;</code>
       * @param value The id to set.
       * @return This builder for chaining.
       */
      public Builder setId(int value) {

        id_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        id_ = 0;
        onChanged();
        return this;
      }

      private int byteSize_ ;
      /**
       * <pre>
       * deprecated
       * </pre>
       *
       * <code>required int32 byte_size = 2;</code>
       * @return Whether the byteSize field is set.
       */
      @java.lang.Override
      public boolean hasByteSize() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * deprecated
       * </pre>
       *
       * <code>required int32 byte_size = 2;</code>
       * @return The byteSize.
       */
      @java.lang.Override
      public int getByteSize() {
        return byteSize_;
      }
      /**
       * <pre>
       * deprecated
       * </pre>
       *
       * <code>required int32 byte_size = 2;</code>
       * @param value The byteSize to set.
       * @return This builder for chaining.
       */
      public Builder setByteSize(int value) {

        byteSize_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * deprecated
       * </pre>
       *
       * <code>required int32 byte_size = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearByteSize() {
        bitField0_ = (bitField0_ & ~0x00000002);
        byteSize_ = 0;
        onChanged();
        return this;
      }

      private int numNullBytes_ ;
      /**
       * <pre>
       * deprecated
       * </pre>
       *
       * <code>required int32 num_null_bytes = 3;</code>
       * @return Whether the numNullBytes field is set.
       */
      @java.lang.Override
      public boolean hasNumNullBytes() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * deprecated
       * </pre>
       *
       * <code>required int32 num_null_bytes = 3;</code>
       * @return The numNullBytes.
       */
      @java.lang.Override
      public int getNumNullBytes() {
        return numNullBytes_;
      }
      /**
       * <pre>
       * deprecated
       * </pre>
       *
       * <code>required int32 num_null_bytes = 3;</code>
       * @param value The numNullBytes to set.
       * @return This builder for chaining.
       */
      public Builder setNumNullBytes(int value) {

        numNullBytes_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * deprecated
       * </pre>
       *
       * <code>required int32 num_null_bytes = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearNumNullBytes() {
        bitField0_ = (bitField0_ & ~0x00000004);
        numNullBytes_ = 0;
        onChanged();
        return this;
      }

      private long tableId_ ;
      /**
       * <code>optional int64 table_id = 4;</code>
       * @return Whether the tableId field is set.
       */
      @java.lang.Override
      public boolean hasTableId() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>optional int64 table_id = 4;</code>
       * @return The tableId.
       */
      @java.lang.Override
      public long getTableId() {
        return tableId_;
      }
      /**
       * <code>optional int64 table_id = 4;</code>
       * @param value The tableId to set.
       * @return This builder for chaining.
       */
      public Builder setTableId(long value) {

        tableId_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <code>optional int64 table_id = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearTableId() {
        bitField0_ = (bitField0_ & ~0x00000008);
        tableId_ = 0L;
        onChanged();
        return this;
      }

      private int numNullSlots_ ;
      /**
       * <pre>
       * deprecated
       * </pre>
       *
       * <code>optional int32 num_null_slots = 5;</code>
       * @return Whether the numNullSlots field is set.
       */
      @java.lang.Override
      public boolean hasNumNullSlots() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * deprecated
       * </pre>
       *
       * <code>optional int32 num_null_slots = 5;</code>
       * @return The numNullSlots.
       */
      @java.lang.Override
      public int getNumNullSlots() {
        return numNullSlots_;
      }
      /**
       * <pre>
       * deprecated
       * </pre>
       *
       * <code>optional int32 num_null_slots = 5;</code>
       * @param value The numNullSlots to set.
       * @return This builder for chaining.
       */
      public Builder setNumNullSlots(int value) {

        numNullSlots_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * deprecated
       * </pre>
       *
       * <code>optional int32 num_null_slots = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearNumNullSlots() {
        bitField0_ = (bitField0_ & ~0x00000010);
        numNullSlots_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:doris.PTupleDescriptor)
    }

    // @@protoc_insertion_point(class_scope:doris.PTupleDescriptor)
    private static final org.apache.doris.proto.Descriptors.PTupleDescriptor DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.doris.proto.Descriptors.PTupleDescriptor();
    }

    public static org.apache.doris.proto.Descriptors.PTupleDescriptor getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<PTupleDescriptor>
        PARSER = new com.google.protobuf.AbstractParser<PTupleDescriptor>() {
      @java.lang.Override
      public PTupleDescriptor parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<PTupleDescriptor> parser() {
      return PARSER;
    }

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

    @java.lang.Override
    public org.apache.doris.proto.Descriptors.PTupleDescriptor getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface POlapTableIndexSchemaOrBuilder extends
      // @@protoc_insertion_point(interface_extends:doris.POlapTableIndexSchema)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required int64 id = 1;</code>
     * @return Whether the id field is set.
     */
    boolean hasId();
    /**
     * <code>required int64 id = 1;</code>
     * @return The id.
     */
    long getId();

    /**
     * <code>repeated string columns = 2;</code>
     * @return A list containing the columns.
     */
    java.util.List<java.lang.String>
        getColumnsList();
    /**
     * <code>repeated string columns = 2;</code>
     * @return The count of columns.
     */
    int getColumnsCount();
    /**
     * <code>repeated string columns = 2;</code>
     * @param index The index of the element to return.
     * @return The columns at the given index.
     */
    java.lang.String getColumns(int index);
    /**
     * <code>repeated string columns = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the columns at the given index.
     */
    com.google.protobuf.ByteString
        getColumnsBytes(int index);

    /**
     * <code>required int32 schema_hash = 3;</code>
     * @return Whether the schemaHash field is set.
     */
    boolean hasSchemaHash();
    /**
     * <code>required int32 schema_hash = 3;</code>
     * @return The schemaHash.
     */
    int getSchemaHash();

    /**
     * <code>repeated .doris.ColumnPB columns_desc = 4;</code>
     */
    java.util.List<org.apache.doris.proto.OlapFile.ColumnPB> 
        getColumnsDescList();
    /**
     * <code>repeated .doris.ColumnPB columns_desc = 4;</code>
     */
    org.apache.doris.proto.OlapFile.ColumnPB getColumnsDesc(int index);
    /**
     * <code>repeated .doris.ColumnPB columns_desc = 4;</code>
     */
    int getColumnsDescCount();
    /**
     * <code>repeated .doris.ColumnPB columns_desc = 4;</code>
     */
    java.util.List<? extends org.apache.doris.proto.OlapFile.ColumnPBOrBuilder> 
        getColumnsDescOrBuilderList();
    /**
     * <code>repeated .doris.ColumnPB columns_desc = 4;</code>
     */
    org.apache.doris.proto.OlapFile.ColumnPBOrBuilder getColumnsDescOrBuilder(
        int index);

    /**
     * <code>repeated .doris.TabletIndexPB indexes_desc = 5;</code>
     */
    java.util.List<org.apache.doris.proto.OlapFile.TabletIndexPB> 
        getIndexesDescList();
    /**
     * <code>repeated .doris.TabletIndexPB indexes_desc = 5;</code>
     */
    org.apache.doris.proto.OlapFile.TabletIndexPB getIndexesDesc(int index);
    /**
     * <code>repeated .doris.TabletIndexPB indexes_desc = 5;</code>
     */
    int getIndexesDescCount();
    /**
     * <code>repeated .doris.TabletIndexPB indexes_desc = 5;</code>
     */
    java.util.List<? extends org.apache.doris.proto.OlapFile.TabletIndexPBOrBuilder> 
        getIndexesDescOrBuilderList();
    /**
     * <code>repeated .doris.TabletIndexPB indexes_desc = 5;</code>
     */
    org.apache.doris.proto.OlapFile.TabletIndexPBOrBuilder getIndexesDescOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code doris.POlapTableIndexSchema}
   */
  public static final class POlapTableIndexSchema extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:doris.POlapTableIndexSchema)
      POlapTableIndexSchemaOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use POlapTableIndexSchema.newBuilder() to construct.
    private POlapTableIndexSchema(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private POlapTableIndexSchema() {
      columns_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      columnsDesc_ = java.util.Collections.emptyList();
      indexesDesc_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new POlapTableIndexSchema();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.doris.proto.Descriptors.internal_static_doris_POlapTableIndexSchema_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.doris.proto.Descriptors.internal_static_doris_POlapTableIndexSchema_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.doris.proto.Descriptors.POlapTableIndexSchema.class, org.apache.doris.proto.Descriptors.POlapTableIndexSchema.Builder.class);
    }

    private int bitField0_;
    public static final int ID_FIELD_NUMBER = 1;
    private long id_ = 0L;
    /**
     * <code>required int64 id = 1;</code>
     * @return Whether the id field is set.
     */
    @java.lang.Override
    public boolean hasId() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required int64 id = 1;</code>
     * @return The id.
     */
    @java.lang.Override
    public long getId() {
      return id_;
    }

    public static final int COLUMNS_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList columns_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <code>repeated string columns = 2;</code>
     * @return A list containing the columns.
     */
    public com.google.protobuf.ProtocolStringList
        getColumnsList() {
      return columns_;
    }
    /**
     * <code>repeated string columns = 2;</code>
     * @return The count of columns.
     */
    public int getColumnsCount() {
      return columns_.size();
    }
    /**
     * <code>repeated string columns = 2;</code>
     * @param index The index of the element to return.
     * @return The columns at the given index.
     */
    public java.lang.String getColumns(int index) {
      return columns_.get(index);
    }
    /**
     * <code>repeated string columns = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the columns at the given index.
     */
    public com.google.protobuf.ByteString
        getColumnsBytes(int index) {
      return columns_.getByteString(index);
    }

    public static final int SCHEMA_HASH_FIELD_NUMBER = 3;
    private int schemaHash_ = 0;
    /**
     * <code>required int32 schema_hash = 3;</code>
     * @return Whether the schemaHash field is set.
     */
    @java.lang.Override
    public boolean hasSchemaHash() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>required int32 schema_hash = 3;</code>
     * @return The schemaHash.
     */
    @java.lang.Override
    public int getSchemaHash() {
      return schemaHash_;
    }

    public static final int COLUMNS_DESC_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private java.util.List<org.apache.doris.proto.OlapFile.ColumnPB> columnsDesc_;
    /**
     * <code>repeated .doris.ColumnPB columns_desc = 4;</code>
     */
    @java.lang.Override
    public java.util.List<org.apache.doris.proto.OlapFile.ColumnPB> getColumnsDescList() {
      return columnsDesc_;
    }
    /**
     * <code>repeated .doris.ColumnPB columns_desc = 4;</code>
     */
    @java.lang.Override
    public java.util.List<? extends org.apache.doris.proto.OlapFile.ColumnPBOrBuilder> 
        getColumnsDescOrBuilderList() {
      return columnsDesc_;
    }
    /**
     * <code>repeated .doris.ColumnPB columns_desc = 4;</code>
     */
    @java.lang.Override
    public int getColumnsDescCount() {
      return columnsDesc_.size();
    }
    /**
     * <code>repeated .doris.ColumnPB columns_desc = 4;</code>
     */
    @java.lang.Override
    public org.apache.doris.proto.OlapFile.ColumnPB getColumnsDesc(int index) {
      return columnsDesc_.get(index);
    }
    /**
     * <code>repeated .doris.ColumnPB columns_desc = 4;</code>
     */
    @java.lang.Override
    public org.apache.doris.proto.OlapFile.ColumnPBOrBuilder getColumnsDescOrBuilder(
        int index) {
      return columnsDesc_.get(index);
    }

    public static final int INDEXES_DESC_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private java.util.List<org.apache.doris.proto.OlapFile.TabletIndexPB> indexesDesc_;
    /**
     * <code>repeated .doris.TabletIndexPB indexes_desc = 5;</code>
     */
    @java.lang.Override
    public java.util.List<org.apache.doris.proto.OlapFile.TabletIndexPB> getIndexesDescList() {
      return indexesDesc_;
    }
    /**
     * <code>repeated .doris.TabletIndexPB indexes_desc = 5;</code>
     */
    @java.lang.Override
    public java.util.List<? extends org.apache.doris.proto.OlapFile.TabletIndexPBOrBuilder> 
        getIndexesDescOrBuilderList() {
      return indexesDesc_;
    }
    /**
     * <code>repeated .doris.TabletIndexPB indexes_desc = 5;</code>
     */
    @java.lang.Override
    public int getIndexesDescCount() {
      return indexesDesc_.size();
    }
    /**
     * <code>repeated .doris.TabletIndexPB indexes_desc = 5;</code>
     */
    @java.lang.Override
    public org.apache.doris.proto.OlapFile.TabletIndexPB getIndexesDesc(int index) {
      return indexesDesc_.get(index);
    }
    /**
     * <code>repeated .doris.TabletIndexPB indexes_desc = 5;</code>
     */
    @java.lang.Override
    public org.apache.doris.proto.OlapFile.TabletIndexPBOrBuilder getIndexesDescOrBuilder(
        int index) {
      return indexesDesc_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasSchemaHash()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getColumnsDescCount(); i++) {
        if (!getColumnsDesc(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeInt64(1, id_);
      }
      for (int i = 0; i < columns_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, columns_.getRaw(i));
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeInt32(3, schemaHash_);
      }
      for (int i = 0; i < columnsDesc_.size(); i++) {
        output.writeMessage(4, columnsDesc_.get(i));
      }
      for (int i = 0; i < indexesDesc_.size(); i++) {
        output.writeMessage(5, indexesDesc_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(1, id_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < columns_.size(); i++) {
          dataSize += computeStringSizeNoTag(columns_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getColumnsList().size();
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, schemaHash_);
      }
      for (int i = 0; i < columnsDesc_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, columnsDesc_.get(i));
      }
      for (int i = 0; i < indexesDesc_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, indexesDesc_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.doris.proto.Descriptors.POlapTableIndexSchema)) {
        return super.equals(obj);
      }
      org.apache.doris.proto.Descriptors.POlapTableIndexSchema other = (org.apache.doris.proto.Descriptors.POlapTableIndexSchema) obj;

      if (hasId() != other.hasId()) return false;
      if (hasId()) {
        if (getId()
            != other.getId()) return false;
      }
      if (!getColumnsList()
          .equals(other.getColumnsList())) return false;
      if (hasSchemaHash() != other.hasSchemaHash()) return false;
      if (hasSchemaHash()) {
        if (getSchemaHash()
            != other.getSchemaHash()) return false;
      }
      if (!getColumnsDescList()
          .equals(other.getColumnsDescList())) return false;
      if (!getIndexesDescList()
          .equals(other.getIndexesDescList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasId()) {
        hash = (37 * hash) + ID_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getId());
      }
      if (getColumnsCount() > 0) {
        hash = (37 * hash) + COLUMNS_FIELD_NUMBER;
        hash = (53 * hash) + getColumnsList().hashCode();
      }
      if (hasSchemaHash()) {
        hash = (37 * hash) + SCHEMA_HASH_FIELD_NUMBER;
        hash = (53 * hash) + getSchemaHash();
      }
      if (getColumnsDescCount() > 0) {
        hash = (37 * hash) + COLUMNS_DESC_FIELD_NUMBER;
        hash = (53 * hash) + getColumnsDescList().hashCode();
      }
      if (getIndexesDescCount() > 0) {
        hash = (37 * hash) + INDEXES_DESC_FIELD_NUMBER;
        hash = (53 * hash) + getIndexesDescList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.doris.proto.Descriptors.POlapTableIndexSchema parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.doris.proto.Descriptors.POlapTableIndexSchema parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.doris.proto.Descriptors.POlapTableIndexSchema parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.doris.proto.Descriptors.POlapTableIndexSchema parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.doris.proto.Descriptors.POlapTableIndexSchema parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.doris.proto.Descriptors.POlapTableIndexSchema parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.doris.proto.Descriptors.POlapTableIndexSchema parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.doris.proto.Descriptors.POlapTableIndexSchema parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.apache.doris.proto.Descriptors.POlapTableIndexSchema parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.doris.proto.Descriptors.POlapTableIndexSchema parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.apache.doris.proto.Descriptors.POlapTableIndexSchema parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.doris.proto.Descriptors.POlapTableIndexSchema parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.doris.proto.Descriptors.POlapTableIndexSchema prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code doris.POlapTableIndexSchema}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:doris.POlapTableIndexSchema)
        org.apache.doris.proto.Descriptors.POlapTableIndexSchemaOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.doris.proto.Descriptors.internal_static_doris_POlapTableIndexSchema_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.doris.proto.Descriptors.internal_static_doris_POlapTableIndexSchema_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.doris.proto.Descriptors.POlapTableIndexSchema.class, org.apache.doris.proto.Descriptors.POlapTableIndexSchema.Builder.class);
      }

      // Construct using org.apache.doris.proto.Descriptors.POlapTableIndexSchema.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        id_ = 0L;
        columns_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        schemaHash_ = 0;
        if (columnsDescBuilder_ == null) {
          columnsDesc_ = java.util.Collections.emptyList();
        } else {
          columnsDesc_ = null;
          columnsDescBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        if (indexesDescBuilder_ == null) {
          indexesDesc_ = java.util.Collections.emptyList();
        } else {
          indexesDesc_ = null;
          indexesDescBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.doris.proto.Descriptors.internal_static_doris_POlapTableIndexSchema_descriptor;
      }

      @java.lang.Override
      public org.apache.doris.proto.Descriptors.POlapTableIndexSchema getDefaultInstanceForType() {
        return org.apache.doris.proto.Descriptors.POlapTableIndexSchema.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.doris.proto.Descriptors.POlapTableIndexSchema build() {
        org.apache.doris.proto.Descriptors.POlapTableIndexSchema result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.doris.proto.Descriptors.POlapTableIndexSchema buildPartial() {
        org.apache.doris.proto.Descriptors.POlapTableIndexSchema result = new org.apache.doris.proto.Descriptors.POlapTableIndexSchema(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(org.apache.doris.proto.Descriptors.POlapTableIndexSchema result) {
        if (columnsDescBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0)) {
            columnsDesc_ = java.util.Collections.unmodifiableList(columnsDesc_);
            bitField0_ = (bitField0_ & ~0x00000008);
          }
          result.columnsDesc_ = columnsDesc_;
        } else {
          result.columnsDesc_ = columnsDescBuilder_.build();
        }
        if (indexesDescBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0)) {
            indexesDesc_ = java.util.Collections.unmodifiableList(indexesDesc_);
            bitField0_ = (bitField0_ & ~0x00000010);
          }
          result.indexesDesc_ = indexesDesc_;
        } else {
          result.indexesDesc_ = indexesDescBuilder_.build();
        }
      }

      private void buildPartial0(org.apache.doris.proto.Descriptors.POlapTableIndexSchema result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.id_ = id_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          columns_.makeImmutable();
          result.columns_ = columns_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.schemaHash_ = schemaHash_;
          to_bitField0_ |= 0x00000002;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.doris.proto.Descriptors.POlapTableIndexSchema) {
          return mergeFrom((org.apache.doris.proto.Descriptors.POlapTableIndexSchema)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.doris.proto.Descriptors.POlapTableIndexSchema other) {
        if (other == org.apache.doris.proto.Descriptors.POlapTableIndexSchema.getDefaultInstance()) return this;
        if (other.hasId()) {
          setId(other.getId());
        }
        if (!other.columns_.isEmpty()) {
          if (columns_.isEmpty()) {
            columns_ = other.columns_;
            bitField0_ |= 0x00000002;
          } else {
            ensureColumnsIsMutable();
            columns_.addAll(other.columns_);
          }
          onChanged();
        }
        if (other.hasSchemaHash()) {
          setSchemaHash(other.getSchemaHash());
        }
        if (columnsDescBuilder_ == null) {
          if (!other.columnsDesc_.isEmpty()) {
            if (columnsDesc_.isEmpty()) {
              columnsDesc_ = other.columnsDesc_;
              bitField0_ = (bitField0_ & ~0x00000008);
            } else {
              ensureColumnsDescIsMutable();
              columnsDesc_.addAll(other.columnsDesc_);
            }
            onChanged();
          }
        } else {
          if (!other.columnsDesc_.isEmpty()) {
            if (columnsDescBuilder_.isEmpty()) {
              columnsDescBuilder_.dispose();
              columnsDescBuilder_ = null;
              columnsDesc_ = other.columnsDesc_;
              bitField0_ = (bitField0_ & ~0x00000008);
              columnsDescBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getColumnsDescFieldBuilder() : null;
            } else {
              columnsDescBuilder_.addAllMessages(other.columnsDesc_);
            }
          }
        }
        if (indexesDescBuilder_ == null) {
          if (!other.indexesDesc_.isEmpty()) {
            if (indexesDesc_.isEmpty()) {
              indexesDesc_ = other.indexesDesc_;
              bitField0_ = (bitField0_ & ~0x00000010);
            } else {
              ensureIndexesDescIsMutable();
              indexesDesc_.addAll(other.indexesDesc_);
            }
            onChanged();
          }
        } else {
          if (!other.indexesDesc_.isEmpty()) {
            if (indexesDescBuilder_.isEmpty()) {
              indexesDescBuilder_.dispose();
              indexesDescBuilder_ = null;
              indexesDesc_ = other.indexesDesc_;
              bitField0_ = (bitField0_ & ~0x00000010);
              indexesDescBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getIndexesDescFieldBuilder() : null;
            } else {
              indexesDescBuilder_.addAllMessages(other.indexesDesc_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasId()) {
          return false;
        }
        if (!hasSchemaHash()) {
          return false;
        }
        for (int i = 0; i < getColumnsDescCount(); i++) {
          if (!getColumnsDesc(i).isInitialized()) {
            return false;
          }
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                id_ = input.readInt64();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 18: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureColumnsIsMutable();
                columns_.add(bs);
                break;
              } // case 18
              case 24: {
                schemaHash_ = input.readInt32();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 34: {
                org.apache.doris.proto.OlapFile.ColumnPB m =
                    input.readMessage(
                        org.apache.doris.proto.OlapFile.ColumnPB.PARSER,
                        extensionRegistry);
                if (columnsDescBuilder_ == null) {
                  ensureColumnsDescIsMutable();
                  columnsDesc_.add(m);
                } else {
                  columnsDescBuilder_.addMessage(m);
                }
                break;
              } // case 34
              case 42: {
                org.apache.doris.proto.OlapFile.TabletIndexPB m =
                    input.readMessage(
                        org.apache.doris.proto.OlapFile.TabletIndexPB.PARSER,
                        extensionRegistry);
                if (indexesDescBuilder_ == null) {
                  ensureIndexesDescIsMutable();
                  indexesDesc_.add(m);
                } else {
                  indexesDescBuilder_.addMessage(m);
                }
                break;
              } // case 42
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private long id_ ;
      /**
       * <code>required int64 id = 1;</code>
       * @return Whether the id field is set.
       */
      @java.lang.Override
      public boolean hasId() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required int64 id = 1;</code>
       * @return The id.
       */
      @java.lang.Override
      public long getId() {
        return id_;
      }
      /**
       * <code>required int64 id = 1;</code>
       * @param value The id to set.
       * @return This builder for chaining.
       */
      public Builder setId(long value) {

        id_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>required int64 id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        id_ = 0L;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringArrayList columns_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureColumnsIsMutable() {
        if (!columns_.isModifiable()) {
          columns_ = new com.google.protobuf.LazyStringArrayList(columns_);
        }
        bitField0_ |= 0x00000002;
      }
      /**
       * <code>repeated string columns = 2;</code>
       * @return A list containing the columns.
       */
      public com.google.protobuf.ProtocolStringList
          getColumnsList() {
        columns_.makeImmutable();
        return columns_;
      }
      /**
       * <code>repeated string columns = 2;</code>
       * @return The count of columns.
       */
      public int getColumnsCount() {
        return columns_.size();
      }
      /**
       * <code>repeated string columns = 2;</code>
       * @param index The index of the element to return.
       * @return The columns at the given index.
       */
      public java.lang.String getColumns(int index) {
        return columns_.get(index);
      }
      /**
       * <code>repeated string columns = 2;</code>
       * @param index The index of the value to return.
       * @return The bytes of the columns at the given index.
       */
      public com.google.protobuf.ByteString
          getColumnsBytes(int index) {
        return columns_.getByteString(index);
      }
      /**
       * <code>repeated string columns = 2;</code>
       * @param index The index to set the value at.
       * @param value The columns to set.
       * @return This builder for chaining.
       */
      public Builder setColumns(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureColumnsIsMutable();
        columns_.set(index, value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>repeated string columns = 2;</code>
       * @param value The columns to add.
       * @return This builder for chaining.
       */
      public Builder addColumns(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureColumnsIsMutable();
        columns_.add(value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>repeated string columns = 2;</code>
       * @param values The columns to add.
       * @return This builder for chaining.
       */
      public Builder addAllColumns(
          java.lang.Iterable<java.lang.String> values) {
        ensureColumnsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, columns_);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>repeated string columns = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearColumns() {
        columns_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);;
        onChanged();
        return this;
      }
      /**
       * <code>repeated string columns = 2;</code>
       * @param value The bytes of the columns to add.
       * @return This builder for chaining.
       */
      public Builder addColumnsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureColumnsIsMutable();
        columns_.add(value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private int schemaHash_ ;
      /**
       * <code>required int32 schema_hash = 3;</code>
       * @return Whether the schemaHash field is set.
       */
      @java.lang.Override
      public boolean hasSchemaHash() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>required int32 schema_hash = 3;</code>
       * @return The schemaHash.
       */
      @java.lang.Override
      public int getSchemaHash() {
        return schemaHash_;
      }
      /**
       * <code>required int32 schema_hash = 3;</code>
       * @param value The schemaHash to set.
       * @return This builder for chaining.
       */
      public Builder setSchemaHash(int value) {

        schemaHash_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>required int32 schema_hash = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearSchemaHash() {
        bitField0_ = (bitField0_ & ~0x00000004);
        schemaHash_ = 0;
        onChanged();
        return this;
      }

      private java.util.List<org.apache.doris.proto.OlapFile.ColumnPB> columnsDesc_ =
        java.util.Collections.emptyList();
      private void ensureColumnsDescIsMutable() {
        if (!((bitField0_ & 0x00000008) != 0)) {
          columnsDesc_ = new java.util.ArrayList<org.apache.doris.proto.OlapFile.ColumnPB>(columnsDesc_);
          bitField0_ |= 0x00000008;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          org.apache.doris.proto.OlapFile.ColumnPB, org.apache.doris.proto.OlapFile.ColumnPB.Builder, org.apache.doris.proto.OlapFile.ColumnPBOrBuilder> columnsDescBuilder_;

      /**
       * <code>repeated .doris.ColumnPB columns_desc = 4;</code>
       */
      public java.util.List<org.apache.doris.proto.OlapFile.ColumnPB> getColumnsDescList() {
        if (columnsDescBuilder_ == null) {
          return java.util.Collections.unmodifiableList(columnsDesc_);
        } else {
          return columnsDescBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .doris.ColumnPB columns_desc = 4;</code>
       */
      public int getColumnsDescCount() {
        if (columnsDescBuilder_ == null) {
          return columnsDesc_.size();
        } else {
          return columnsDescBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .doris.ColumnPB columns_desc = 4;</code>
       */
      public org.apache.doris.proto.OlapFile.ColumnPB getColumnsDesc(int index) {
        if (columnsDescBuilder_ == null) {
          return columnsDesc_.get(index);
        } else {
          return columnsDescBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .doris.ColumnPB columns_desc = 4;</code>
       */
      public Builder setColumnsDesc(
          int index, org.apache.doris.proto.OlapFile.ColumnPB value) {
        if (columnsDescBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureColumnsDescIsMutable();
          columnsDesc_.set(index, value);
          onChanged();
        } else {
          columnsDescBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .doris.ColumnPB columns_desc = 4;</code>
       */
      public Builder setColumnsDesc(
          int index, org.apache.doris.proto.OlapFile.ColumnPB.Builder builderForValue) {
        if (columnsDescBuilder_ == null) {
          ensureColumnsDescIsMutable();
          columnsDesc_.set(index, builderForValue.build());
          onChanged();
        } else {
          columnsDescBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .doris.ColumnPB columns_desc = 4;</code>
       */
      public Builder addColumnsDesc(org.apache.doris.proto.OlapFile.ColumnPB value) {
        if (columnsDescBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureColumnsDescIsMutable();
          columnsDesc_.add(value);
          onChanged();
        } else {
          columnsDescBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .doris.ColumnPB columns_desc = 4;</code>
       */
      public Builder addColumnsDesc(
          int index, org.apache.doris.proto.OlapFile.ColumnPB value) {
        if (columnsDescBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureColumnsDescIsMutable();
          columnsDesc_.add(index, value);
          onChanged();
        } else {
          columnsDescBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .doris.ColumnPB columns_desc = 4;</code>
       */
      public Builder addColumnsDesc(
          org.apache.doris.proto.OlapFile.ColumnPB.Builder builderForValue) {
        if (columnsDescBuilder_ == null) {
          ensureColumnsDescIsMutable();
          columnsDesc_.add(builderForValue.build());
          onChanged();
        } else {
          columnsDescBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .doris.ColumnPB columns_desc = 4;</code>
       */
      public Builder addColumnsDesc(
          int index, org.apache.doris.proto.OlapFile.ColumnPB.Builder builderForValue) {
        if (columnsDescBuilder_ == null) {
          ensureColumnsDescIsMutable();
          columnsDesc_.add(index, builderForValue.build());
          onChanged();
        } else {
          columnsDescBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .doris.ColumnPB columns_desc = 4;</code>
       */
      public Builder addAllColumnsDesc(
          java.lang.Iterable<? extends org.apache.doris.proto.OlapFile.ColumnPB> values) {
        if (columnsDescBuilder_ == null) {
          ensureColumnsDescIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, columnsDesc_);
          onChanged();
        } else {
          columnsDescBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .doris.ColumnPB columns_desc = 4;</code>
       */
      public Builder clearColumnsDesc() {
        if (columnsDescBuilder_ == null) {
          columnsDesc_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
          onChanged();
        } else {
          columnsDescBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .doris.ColumnPB columns_desc = 4;</code>
       */
      public Builder removeColumnsDesc(int index) {
        if (columnsDescBuilder_ == null) {
          ensureColumnsDescIsMutable();
          columnsDesc_.remove(index);
          onChanged();
        } else {
          columnsDescBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .doris.ColumnPB columns_desc = 4;</code>
       */
      public org.apache.doris.proto.OlapFile.ColumnPB.Builder getColumnsDescBuilder(
          int index) {
        return getColumnsDescFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .doris.ColumnPB columns_desc = 4;</code>
       */
      public org.apache.doris.proto.OlapFile.ColumnPBOrBuilder getColumnsDescOrBuilder(
          int index) {
        if (columnsDescBuilder_ == null) {
          return columnsDesc_.get(index);  } else {
          return columnsDescBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .doris.ColumnPB columns_desc = 4;</code>
       */
      public java.util.List<? extends org.apache.doris.proto.OlapFile.ColumnPBOrBuilder> 
           getColumnsDescOrBuilderList() {
        if (columnsDescBuilder_ != null) {
          return columnsDescBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(columnsDesc_);
        }
      }
      /**
       * <code>repeated .doris.ColumnPB columns_desc = 4;</code>
       */
      public org.apache.doris.proto.OlapFile.ColumnPB.Builder addColumnsDescBuilder() {
        return getColumnsDescFieldBuilder().addBuilder(
            org.apache.doris.proto.OlapFile.ColumnPB.getDefaultInstance());
      }
      /**
       * <code>repeated .doris.ColumnPB columns_desc = 4;</code>
       */
      public org.apache.doris.proto.OlapFile.ColumnPB.Builder addColumnsDescBuilder(
          int index) {
        return getColumnsDescFieldBuilder().addBuilder(
            index, org.apache.doris.proto.OlapFile.ColumnPB.getDefaultInstance());
      }
      /**
       * <code>repeated .doris.ColumnPB columns_desc = 4;</code>
       */
      public java.util.List<org.apache.doris.proto.OlapFile.ColumnPB.Builder> 
           getColumnsDescBuilderList() {
        return getColumnsDescFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          org.apache.doris.proto.OlapFile.ColumnPB, org.apache.doris.proto.OlapFile.ColumnPB.Builder, org.apache.doris.proto.OlapFile.ColumnPBOrBuilder> 
          getColumnsDescFieldBuilder() {
        if (columnsDescBuilder_ == null) {
          columnsDescBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              org.apache.doris.proto.OlapFile.ColumnPB, org.apache.doris.proto.OlapFile.ColumnPB.Builder, org.apache.doris.proto.OlapFile.ColumnPBOrBuilder>(
                  columnsDesc_,
                  ((bitField0_ & 0x00000008) != 0),
                  getParentForChildren(),
                  isClean());
          columnsDesc_ = null;
        }
        return columnsDescBuilder_;
      }

      private java.util.List<org.apache.doris.proto.OlapFile.TabletIndexPB> indexesDesc_ =
        java.util.Collections.emptyList();
      private void ensureIndexesDescIsMutable() {
        if (!((bitField0_ & 0x00000010) != 0)) {
          indexesDesc_ = new java.util.ArrayList<org.apache.doris.proto.OlapFile.TabletIndexPB>(indexesDesc_);
          bitField0_ |= 0x00000010;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          org.apache.doris.proto.OlapFile.TabletIndexPB, org.apache.doris.proto.OlapFile.TabletIndexPB.Builder, org.apache.doris.proto.OlapFile.TabletIndexPBOrBuilder> indexesDescBuilder_;

      /**
       * <code>repeated .doris.TabletIndexPB indexes_desc = 5;</code>
       */
      public java.util.List<org.apache.doris.proto.OlapFile.TabletIndexPB> getIndexesDescList() {
        if (indexesDescBuilder_ == null) {
          return java.util.Collections.unmodifiableList(indexesDesc_);
        } else {
          return indexesDescBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .doris.TabletIndexPB indexes_desc = 5;</code>
       */
      public int getIndexesDescCount() {
        if (indexesDescBuilder_ == null) {
          return indexesDesc_.size();
        } else {
          return indexesDescBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .doris.TabletIndexPB indexes_desc = 5;</code>
       */
      public org.apache.doris.proto.OlapFile.TabletIndexPB getIndexesDesc(int index) {
        if (indexesDescBuilder_ == null) {
          return indexesDesc_.get(index);
        } else {
          return indexesDescBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .doris.TabletIndexPB indexes_desc = 5;</code>
       */
      public Builder setIndexesDesc(
          int index, org.apache.doris.proto.OlapFile.TabletIndexPB value) {
        if (indexesDescBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureIndexesDescIsMutable();
          indexesDesc_.set(index, value);
          onChanged();
        } else {
          indexesDescBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .doris.TabletIndexPB indexes_desc = 5;</code>
       */
      public Builder setIndexesDesc(
          int index, org.apache.doris.proto.OlapFile.TabletIndexPB.Builder builderForValue) {
        if (indexesDescBuilder_ == null) {
          ensureIndexesDescIsMutable();
          indexesDesc_.set(index, builderForValue.build());
          onChanged();
        } else {
          indexesDescBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .doris.TabletIndexPB indexes_desc = 5;</code>
       */
      public Builder addIndexesDesc(org.apache.doris.proto.OlapFile.TabletIndexPB value) {
        if (indexesDescBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureIndexesDescIsMutable();
          indexesDesc_.add(value);
          onChanged();
        } else {
          indexesDescBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .doris.TabletIndexPB indexes_desc = 5;</code>
       */
      public Builder addIndexesDesc(
          int index, org.apache.doris.proto.OlapFile.TabletIndexPB value) {
        if (indexesDescBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureIndexesDescIsMutable();
          indexesDesc_.add(index, value);
          onChanged();
        } else {
          indexesDescBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .doris.TabletIndexPB indexes_desc = 5;</code>
       */
      public Builder addIndexesDesc(
          org.apache.doris.proto.OlapFile.TabletIndexPB.Builder builderForValue) {
        if (indexesDescBuilder_ == null) {
          ensureIndexesDescIsMutable();
          indexesDesc_.add(builderForValue.build());
          onChanged();
        } else {
          indexesDescBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .doris.TabletIndexPB indexes_desc = 5;</code>
       */
      public Builder addIndexesDesc(
          int index, org.apache.doris.proto.OlapFile.TabletIndexPB.Builder builderForValue) {
        if (indexesDescBuilder_ == null) {
          ensureIndexesDescIsMutable();
          indexesDesc_.add(index, builderForValue.build());
          onChanged();
        } else {
          indexesDescBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .doris.TabletIndexPB indexes_desc = 5;</code>
       */
      public Builder addAllIndexesDesc(
          java.lang.Iterable<? extends org.apache.doris.proto.OlapFile.TabletIndexPB> values) {
        if (indexesDescBuilder_ == null) {
          ensureIndexesDescIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, indexesDesc_);
          onChanged();
        } else {
          indexesDescBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .doris.TabletIndexPB indexes_desc = 5;</code>
       */
      public Builder clearIndexesDesc() {
        if (indexesDescBuilder_ == null) {
          indexesDesc_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000010);
          onChanged();
        } else {
          indexesDescBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .doris.TabletIndexPB indexes_desc = 5;</code>
       */
      public Builder removeIndexesDesc(int index) {
        if (indexesDescBuilder_ == null) {
          ensureIndexesDescIsMutable();
          indexesDesc_.remove(index);
          onChanged();
        } else {
          indexesDescBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .doris.TabletIndexPB indexes_desc = 5;</code>
       */
      public org.apache.doris.proto.OlapFile.TabletIndexPB.Builder getIndexesDescBuilder(
          int index) {
        return getIndexesDescFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .doris.TabletIndexPB indexes_desc = 5;</code>
       */
      public org.apache.doris.proto.OlapFile.TabletIndexPBOrBuilder getIndexesDescOrBuilder(
          int index) {
        if (indexesDescBuilder_ == null) {
          return indexesDesc_.get(index);  } else {
          return indexesDescBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .doris.TabletIndexPB indexes_desc = 5;</code>
       */
      public java.util.List<? extends org.apache.doris.proto.OlapFile.TabletIndexPBOrBuilder> 
           getIndexesDescOrBuilderList() {
        if (indexesDescBuilder_ != null) {
          return indexesDescBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(indexesDesc_);
        }
      }
      /**
       * <code>repeated .doris.TabletIndexPB indexes_desc = 5;</code>
       */
      public org.apache.doris.proto.OlapFile.TabletIndexPB.Builder addIndexesDescBuilder() {
        return getIndexesDescFieldBuilder().addBuilder(
            org.apache.doris.proto.OlapFile.TabletIndexPB.getDefaultInstance());
      }
      /**
       * <code>repeated .doris.TabletIndexPB indexes_desc = 5;</code>
       */
      public org.apache.doris.proto.OlapFile.TabletIndexPB.Builder addIndexesDescBuilder(
          int index) {
        return getIndexesDescFieldBuilder().addBuilder(
            index, org.apache.doris.proto.OlapFile.TabletIndexPB.getDefaultInstance());
      }
      /**
       * <code>repeated .doris.TabletIndexPB indexes_desc = 5;</code>
       */
      public java.util.List<org.apache.doris.proto.OlapFile.TabletIndexPB.Builder> 
           getIndexesDescBuilderList() {
        return getIndexesDescFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          org.apache.doris.proto.OlapFile.TabletIndexPB, org.apache.doris.proto.OlapFile.TabletIndexPB.Builder, org.apache.doris.proto.OlapFile.TabletIndexPBOrBuilder> 
          getIndexesDescFieldBuilder() {
        if (indexesDescBuilder_ == null) {
          indexesDescBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              org.apache.doris.proto.OlapFile.TabletIndexPB, org.apache.doris.proto.OlapFile.TabletIndexPB.Builder, org.apache.doris.proto.OlapFile.TabletIndexPBOrBuilder>(
                  indexesDesc_,
                  ((bitField0_ & 0x00000010) != 0),
                  getParentForChildren(),
                  isClean());
          indexesDesc_ = null;
        }
        return indexesDescBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:doris.POlapTableIndexSchema)
    }

    // @@protoc_insertion_point(class_scope:doris.POlapTableIndexSchema)
    private static final org.apache.doris.proto.Descriptors.POlapTableIndexSchema DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.doris.proto.Descriptors.POlapTableIndexSchema();
    }

    public static org.apache.doris.proto.Descriptors.POlapTableIndexSchema getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<POlapTableIndexSchema>
        PARSER = new com.google.protobuf.AbstractParser<POlapTableIndexSchema>() {
      @java.lang.Override
      public POlapTableIndexSchema parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<POlapTableIndexSchema> parser() {
      return PARSER;
    }

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

    @java.lang.Override
    public org.apache.doris.proto.Descriptors.POlapTableIndexSchema getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface POlapTableSchemaParamOrBuilder extends
      // @@protoc_insertion_point(interface_extends:doris.POlapTableSchemaParam)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>required int64 db_id = 1;</code>
     * @return Whether the dbId field is set.
     */
    boolean hasDbId();
    /**
     * <code>required int64 db_id = 1;</code>
     * @return The dbId.
     */
    long getDbId();

    /**
     * <code>required int64 table_id = 2;</code>
     * @return Whether the tableId field is set.
     */
    boolean hasTableId();
    /**
     * <code>required int64 table_id = 2;</code>
     * @return The tableId.
     */
    long getTableId();

    /**
     * <code>required int64 version = 3;</code>
     * @return Whether the version field is set.
     */
    boolean hasVersion();
    /**
     * <code>required int64 version = 3;</code>
     * @return The version.
     */
    long getVersion();

    /**
     * <pre>
     * Logical columns, contain all column that in logical table
     * </pre>
     *
     * <code>repeated .doris.PSlotDescriptor slot_descs = 4;</code>
     */
    java.util.List<org.apache.doris.proto.Descriptors.PSlotDescriptor> 
        getSlotDescsList();
    /**
     * <pre>
     * Logical columns, contain all column that in logical table
     * </pre>
     *
     * <code>repeated .doris.PSlotDescriptor slot_descs = 4;</code>
     */
    org.apache.doris.proto.Descriptors.PSlotDescriptor getSlotDescs(int index);
    /**
     * <pre>
     * Logical columns, contain all column that in logical table
     * </pre>
     *
     * <code>repeated .doris.PSlotDescriptor slot_descs = 4;</code>
     */
    int getSlotDescsCount();
    /**
     * <pre>
     * Logical columns, contain all column that in logical table
     * </pre>
     *
     * <code>repeated .doris.PSlotDescriptor slot_descs = 4;</code>
     */
    java.util.List<? extends org.apache.doris.proto.Descriptors.PSlotDescriptorOrBuilder> 
        getSlotDescsOrBuilderList();
    /**
     * <pre>
     * Logical columns, contain all column that in logical table
     * </pre>
     *
     * <code>repeated .doris.PSlotDescriptor slot_descs = 4;</code>
     */
    org.apache.doris.proto.Descriptors.PSlotDescriptorOrBuilder getSlotDescsOrBuilder(
        int index);

    /**
     * <code>required .doris.PTupleDescriptor tuple_desc = 5;</code>
     * @return Whether the tupleDesc field is set.
     */
    boolean hasTupleDesc();
    /**
     * <code>required .doris.PTupleDescriptor tuple_desc = 5;</code>
     * @return The tupleDesc.
     */
    org.apache.doris.proto.Descriptors.PTupleDescriptor getTupleDesc();
    /**
     * <code>required .doris.PTupleDescriptor tuple_desc = 5;</code>
     */
    org.apache.doris.proto.Descriptors.PTupleDescriptorOrBuilder getTupleDescOrBuilder();

    /**
     * <code>repeated .doris.POlapTableIndexSchema indexes = 6;</code>
     */
    java.util.List<org.apache.doris.proto.Descriptors.POlapTableIndexSchema> 
        getIndexesList();
    /**
     * <code>repeated .doris.POlapTableIndexSchema indexes = 6;</code>
     */
    org.apache.doris.proto.Descriptors.POlapTableIndexSchema getIndexes(int index);
    /**
     * <code>repeated .doris.POlapTableIndexSchema indexes = 6;</code>
     */
    int getIndexesCount();
    /**
     * <code>repeated .doris.POlapTableIndexSchema indexes = 6;</code>
     */
    java.util.List<? extends org.apache.doris.proto.Descriptors.POlapTableIndexSchemaOrBuilder> 
        getIndexesOrBuilderList();
    /**
     * <code>repeated .doris.POlapTableIndexSchema indexes = 6;</code>
     */
    org.apache.doris.proto.Descriptors.POlapTableIndexSchemaOrBuilder getIndexesOrBuilder(
        int index);

    /**
     * <pre>
     * deprecated, use unique_key_update_mode
     * </pre>
     *
     * <code>optional bool partial_update = 7 [default = false];</code>
     * @return Whether the partialUpdate field is set.
     */
    boolean hasPartialUpdate();
    /**
     * <pre>
     * deprecated, use unique_key_update_mode
     * </pre>
     *
     * <code>optional bool partial_update = 7 [default = false];</code>
     * @return The partialUpdate.
     */
    boolean getPartialUpdate();

    /**
     * <code>repeated string partial_update_input_columns = 8;</code>
     * @return A list containing the partialUpdateInputColumns.
     */
    java.util.List<java.lang.String>
        getPartialUpdateInputColumnsList();
    /**
     * <code>repeated string partial_update_input_columns = 8;</code>
     * @return The count of partialUpdateInputColumns.
     */
    int getPartialUpdateInputColumnsCount();
    /**
     * <code>repeated string partial_update_input_columns = 8;</code>
     * @param index The index of the element to return.
     * @return The partialUpdateInputColumns at the given index.
     */
    java.lang.String getPartialUpdateInputColumns(int index);
    /**
     * <code>repeated string partial_update_input_columns = 8;</code>
     * @param index The index of the value to return.
     * @return The bytes of the partialUpdateInputColumns at the given index.
     */
    com.google.protobuf.ByteString
        getPartialUpdateInputColumnsBytes(int index);

    /**
     * <code>optional bool is_strict_mode = 9 [default = false];</code>
     * @return Whether the isStrictMode field is set.
     */
    boolean hasIsStrictMode();
    /**
     * <code>optional bool is_strict_mode = 9 [default = false];</code>
     * @return The isStrictMode.
     */
    boolean getIsStrictMode();

    /**
     * <code>optional string auto_increment_column = 10;</code>
     * @return Whether the autoIncrementColumn field is set.
     */
    boolean hasAutoIncrementColumn();
    /**
     * <code>optional string auto_increment_column = 10;</code>
     * @return The autoIncrementColumn.
     */
    java.lang.String getAutoIncrementColumn();
    /**
     * <code>optional string auto_increment_column = 10;</code>
     * @return The bytes for autoIncrementColumn.
     */
    com.google.protobuf.ByteString
        getAutoIncrementColumnBytes();

    /**
     * <code>optional int64 timestamp_ms = 11 [default = 0];</code>
     * @return Whether the timestampMs field is set.
     */
    boolean hasTimestampMs();
    /**
     * <code>optional int64 timestamp_ms = 11 [default = 0];</code>
     * @return The timestampMs.
     */
    long getTimestampMs();

    /**
     * <code>optional string timezone = 12;</code>
     * @return Whether the timezone field is set.
     */
    boolean hasTimezone();
    /**
     * <code>optional string timezone = 12;</code>
     * @return The timezone.
     */
    java.lang.String getTimezone();
    /**
     * <code>optional string timezone = 12;</code>
     * @return The bytes for timezone.
     */
    com.google.protobuf.ByteString
        getTimezoneBytes();

    /**
     * <code>optional int32 auto_increment_column_unique_id = 13 [default = -1];</code>
     * @return Whether the autoIncrementColumnUniqueId field is set.
     */
    boolean hasAutoIncrementColumnUniqueId();
    /**
     * <code>optional int32 auto_increment_column_unique_id = 13 [default = -1];</code>
     * @return The autoIncrementColumnUniqueId.
     */
    int getAutoIncrementColumnUniqueId();

    /**
     * <code>optional int32 nano_seconds = 14 [default = 0];</code>
     * @return Whether the nanoSeconds field is set.
     */
    boolean hasNanoSeconds();
    /**
     * <code>optional int32 nano_seconds = 14 [default = 0];</code>
     * @return The nanoSeconds.
     */
    int getNanoSeconds();

    /**
     * <code>optional .doris.UniqueKeyUpdateModePB unique_key_update_mode = 15 [default = UPSERT];</code>
     * @return Whether the uniqueKeyUpdateMode field is set.
     */
    boolean hasUniqueKeyUpdateMode();
    /**
     * <code>optional .doris.UniqueKeyUpdateModePB unique_key_update_mode = 15 [default = UPSERT];</code>
     * @return The uniqueKeyUpdateMode.
     */
    org.apache.doris.proto.OlapFile.UniqueKeyUpdateModePB getUniqueKeyUpdateMode();

    /**
     * <code>optional int32 sequence_map_col_unique_id = 16 [default = -1];</code>
     * @return Whether the sequenceMapColUniqueId field is set.
     */
    boolean hasSequenceMapColUniqueId();
    /**
     * <code>optional int32 sequence_map_col_unique_id = 16 [default = -1];</code>
     * @return The sequenceMapColUniqueId.
     */
    int getSequenceMapColUniqueId();

    /**
     * <code>optional .doris.PartialUpdateNewRowPolicyPB partial_update_new_key_policy = 17 [default = APPEND];</code>
     * @return Whether the partialUpdateNewKeyPolicy field is set.
     */
    boolean hasPartialUpdateNewKeyPolicy();
    /**
     * <code>optional .doris.PartialUpdateNewRowPolicyPB partial_update_new_key_policy = 17 [default = APPEND];</code>
     * @return The partialUpdateNewKeyPolicy.
     */
    org.apache.doris.proto.OlapFile.PartialUpdateNewRowPolicyPB getPartialUpdateNewKeyPolicy();
  }
  /**
   * Protobuf type {@code doris.POlapTableSchemaParam}
   */
  public static final class POlapTableSchemaParam extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:doris.POlapTableSchemaParam)
      POlapTableSchemaParamOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use POlapTableSchemaParam.newBuilder() to construct.
    private POlapTableSchemaParam(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private POlapTableSchemaParam() {
      slotDescs_ = java.util.Collections.emptyList();
      indexes_ = java.util.Collections.emptyList();
      partialUpdateInputColumns_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      autoIncrementColumn_ = "";
      timezone_ = "";
      autoIncrementColumnUniqueId_ = -1;
      uniqueKeyUpdateMode_ = 0;
      sequenceMapColUniqueId_ = -1;
      partialUpdateNewKeyPolicy_ = 0;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new POlapTableSchemaParam();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.apache.doris.proto.Descriptors.internal_static_doris_POlapTableSchemaParam_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.apache.doris.proto.Descriptors.internal_static_doris_POlapTableSchemaParam_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.apache.doris.proto.Descriptors.POlapTableSchemaParam.class, org.apache.doris.proto.Descriptors.POlapTableSchemaParam.Builder.class);
    }

    private int bitField0_;
    public static final int DB_ID_FIELD_NUMBER = 1;
    private long dbId_ = 0L;
    /**
     * <code>required int64 db_id = 1;</code>
     * @return Whether the dbId field is set.
     */
    @java.lang.Override
    public boolean hasDbId() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>required int64 db_id = 1;</code>
     * @return The dbId.
     */
    @java.lang.Override
    public long getDbId() {
      return dbId_;
    }

    public static final int TABLE_ID_FIELD_NUMBER = 2;
    private long tableId_ = 0L;
    /**
     * <code>required int64 table_id = 2;</code>
     * @return Whether the tableId field is set.
     */
    @java.lang.Override
    public boolean hasTableId() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>required int64 table_id = 2;</code>
     * @return The tableId.
     */
    @java.lang.Override
    public long getTableId() {
      return tableId_;
    }

    public static final int VERSION_FIELD_NUMBER = 3;
    private long version_ = 0L;
    /**
     * <code>required int64 version = 3;</code>
     * @return Whether the version field is set.
     */
    @java.lang.Override
    public boolean hasVersion() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>required int64 version = 3;</code>
     * @return The version.
     */
    @java.lang.Override
    public long getVersion() {
      return version_;
    }

    public static final int SLOT_DESCS_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private java.util.List<org.apache.doris.proto.Descriptors.PSlotDescriptor> slotDescs_;
    /**
     * <pre>
     * Logical columns, contain all column that in logical table
     * </pre>
     *
     * <code>repeated .doris.PSlotDescriptor slot_descs = 4;</code>
     */
    @java.lang.Override
    public java.util.List<org.apache.doris.proto.Descriptors.PSlotDescriptor> getSlotDescsList() {
      return slotDescs_;
    }
    /**
     * <pre>
     * Logical columns, contain all column that in logical table
     * </pre>
     *
     * <code>repeated .doris.PSlotDescriptor slot_descs = 4;</code>
     */
    @java.lang.Override
    public java.util.List<? extends org.apache.doris.proto.Descriptors.PSlotDescriptorOrBuilder> 
        getSlotDescsOrBuilderList() {
      return slotDescs_;
    }
    /**
     * <pre>
     * Logical columns, contain all column that in logical table
     * </pre>
     *
     * <code>repeated .doris.PSlotDescriptor slot_descs = 4;</code>
     */
    @java.lang.Override
    public int getSlotDescsCount() {
      return slotDescs_.size();
    }
    /**
     * <pre>
     * Logical columns, contain all column that in logical table
     * </pre>
     *
     * <code>repeated .doris.PSlotDescriptor slot_descs = 4;</code>
     */
    @java.lang.Override
    public org.apache.doris.proto.Descriptors.PSlotDescriptor getSlotDescs(int index) {
      return slotDescs_.get(index);
    }
    /**
     * <pre>
     * Logical columns, contain all column that in logical table
     * </pre>
     *
     * <code>repeated .doris.PSlotDescriptor slot_descs = 4;</code>
     */
    @java.lang.Override
    public org.apache.doris.proto.Descriptors.PSlotDescriptorOrBuilder getSlotDescsOrBuilder(
        int index) {
      return slotDescs_.get(index);
    }

    public static final int TUPLE_DESC_FIELD_NUMBER = 5;
    private org.apache.doris.proto.Descriptors.PTupleDescriptor tupleDesc_;
    /**
     * <code>required .doris.PTupleDescriptor tuple_desc = 5;</code>
     * @return Whether the tupleDesc field is set.
     */
    @java.lang.Override
    public boolean hasTupleDesc() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>required .doris.PTupleDescriptor tuple_desc = 5;</code>
     * @return The tupleDesc.
     */
    @java.lang.Override
    public org.apache.doris.proto.Descriptors.PTupleDescriptor getTupleDesc() {
      return tupleDesc_ == null ? org.apache.doris.proto.Descriptors.PTupleDescriptor.getDefaultInstance() : tupleDesc_;
    }
    /**
     * <code>required .doris.PTupleDescriptor tuple_desc = 5;</code>
     */
    @java.lang.Override
    public org.apache.doris.proto.Descriptors.PTupleDescriptorOrBuilder getTupleDescOrBuilder() {
      return tupleDesc_ == null ? org.apache.doris.proto.Descriptors.PTupleDescriptor.getDefaultInstance() : tupleDesc_;
    }

    public static final int INDEXES_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private java.util.List<org.apache.doris.proto.Descriptors.POlapTableIndexSchema> indexes_;
    /**
     * <code>repeated .doris.POlapTableIndexSchema indexes = 6;</code>
     */
    @java.lang.Override
    public java.util.List<org.apache.doris.proto.Descriptors.POlapTableIndexSchema> getIndexesList() {
      return indexes_;
    }
    /**
     * <code>repeated .doris.POlapTableIndexSchema indexes = 6;</code>
     */
    @java.lang.Override
    public java.util.List<? extends org.apache.doris.proto.Descriptors.POlapTableIndexSchemaOrBuilder> 
        getIndexesOrBuilderList() {
      return indexes_;
    }
    /**
     * <code>repeated .doris.POlapTableIndexSchema indexes = 6;</code>
     */
    @java.lang.Override
    public int getIndexesCount() {
      return indexes_.size();
    }
    /**
     * <code>repeated .doris.POlapTableIndexSchema indexes = 6;</code>
     */
    @java.lang.Override
    public org.apache.doris.proto.Descriptors.POlapTableIndexSchema getIndexes(int index) {
      return indexes_.get(index);
    }
    /**
     * <code>repeated .doris.POlapTableIndexSchema indexes = 6;</code>
     */
    @java.lang.Override
    public org.apache.doris.proto.Descriptors.POlapTableIndexSchemaOrBuilder getIndexesOrBuilder(
        int index) {
      return indexes_.get(index);
    }

    public static final int PARTIAL_UPDATE_FIELD_NUMBER = 7;
    private boolean partialUpdate_ = false;
    /**
     * <pre>
     * deprecated, use unique_key_update_mode
     * </pre>
     *
     * <code>optional bool partial_update = 7 [default = false];</code>
     * @return Whether the partialUpdate field is set.
     */
    @java.lang.Override
    public boolean hasPartialUpdate() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * deprecated, use unique_key_update_mode
     * </pre>
     *
     * <code>optional bool partial_update = 7 [default = false];</code>
     * @return The partialUpdate.
     */
    @java.lang.Override
    public boolean getPartialUpdate() {
      return partialUpdate_;
    }

    public static final int PARTIAL_UPDATE_INPUT_COLUMNS_FIELD_NUMBER = 8;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList partialUpdateInputColumns_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <code>repeated string partial_update_input_columns = 8;</code>
     * @return A list containing the partialUpdateInputColumns.
     */
    public com.google.protobuf.ProtocolStringList
        getPartialUpdateInputColumnsList() {
      return partialUpdateInputColumns_;
    }
    /**
     * <code>repeated string partial_update_input_columns = 8;</code>
     * @return The count of partialUpdateInputColumns.
     */
    public int getPartialUpdateInputColumnsCount() {
      return partialUpdateInputColumns_.size();
    }
    /**
     * <code>repeated string partial_update_input_columns = 8;</code>
     * @param index The index of the element to return.
     * @return The partialUpdateInputColumns at the given index.
     */
    public java.lang.String getPartialUpdateInputColumns(int index) {
      return partialUpdateInputColumns_.get(index);
    }
    /**
     * <code>repeated string partial_update_input_columns = 8;</code>
     * @param index The index of the value to return.
     * @return The bytes of the partialUpdateInputColumns at the given index.
     */
    public com.google.protobuf.ByteString
        getPartialUpdateInputColumnsBytes(int index) {
      return partialUpdateInputColumns_.getByteString(index);
    }

    public static final int IS_STRICT_MODE_FIELD_NUMBER = 9;
    private boolean isStrictMode_ = false;
    /**
     * <code>optional bool is_strict_mode = 9 [default = false];</code>
     * @return Whether the isStrictMode field is set.
     */
    @java.lang.Override
    public boolean hasIsStrictMode() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <code>optional bool is_strict_mode = 9 [default = false];</code>
     * @return The isStrictMode.
     */
    @java.lang.Override
    public boolean getIsStrictMode() {
      return isStrictMode_;
    }

    public static final int AUTO_INCREMENT_COLUMN_FIELD_NUMBER = 10;
    @SuppressWarnings("serial")
    private volatile java.lang.Object autoIncrementColumn_ = "";
    /**
     * <code>optional string auto_increment_column = 10;</code>
     * @return Whether the autoIncrementColumn field is set.
     */
    @java.lang.Override
    public boolean hasAutoIncrementColumn() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <code>optional string auto_increment_column = 10;</code>
     * @return The autoIncrementColumn.
     */
    @java.lang.Override
    public java.lang.String getAutoIncrementColumn() {
      java.lang.Object ref = autoIncrementColumn_;
      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()) {
          autoIncrementColumn_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string auto_increment_column = 10;</code>
     * @return The bytes for autoIncrementColumn.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getAutoIncrementColumnBytes() {
      java.lang.Object ref = autoIncrementColumn_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        autoIncrementColumn_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TIMESTAMP_MS_FIELD_NUMBER = 11;
    private long timestampMs_ = 0L;
    /**
     * <code>optional int64 timestamp_ms = 11 [default = 0];</code>
     * @return Whether the timestampMs field is set.
     */
    @java.lang.Override
    public boolean hasTimestampMs() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * <code>optional int64 timestamp_ms = 11 [default = 0];</code>
     * @return The timestampMs.
     */
    @java.lang.Override
    public long getTimestampMs() {
      return timestampMs_;
    }

    public static final int TIMEZONE_FIELD_NUMBER = 12;
    @SuppressWarnings("serial")
    private volatile java.lang.Object timezone_ = "";
    /**
     * <code>optional string timezone = 12;</code>
     * @return Whether the timezone field is set.
     */
    @java.lang.Override
    public boolean hasTimezone() {
      return ((bitField0_ & 0x00000100) != 0);
    }
    /**
     * <code>optional string timezone = 12;</code>
     * @return The timezone.
     */
    @java.lang.Override
    public java.lang.String getTimezone() {
      java.lang.Object ref = timezone_;
      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()) {
          timezone_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string timezone = 12;</code>
     * @return The bytes for timezone.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTimezoneBytes() {
      java.lang.Object ref = timezone_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        timezone_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int AUTO_INCREMENT_COLUMN_UNIQUE_ID_FIELD_NUMBER = 13;
    private int autoIncrementColumnUniqueId_ = -1;
    /**
     * <code>optional int32 auto_increment_column_unique_id = 13 [default = -1];</code>
     * @return Whether the autoIncrementColumnUniqueId field is set.
     */
    @java.lang.Override
    public boolean hasAutoIncrementColumnUniqueId() {
      return ((bitField0_ & 0x00000200) != 0);
    }
    /**
     * <code>optional int32 auto_increment_column_unique_id = 13 [default = -1];</code>
     * @return The autoIncrementColumnUniqueId.
     */
    @java.lang.Override
    public int getAutoIncrementColumnUniqueId() {
      return autoIncrementColumnUniqueId_;
    }

    public static final int NANO_SECONDS_FIELD_NUMBER = 14;
    private int nanoSeconds_ = 0;
    /**
     * <code>optional int32 nano_seconds = 14 [default = 0];</code>
     * @return Whether the nanoSeconds field is set.
     */
    @java.lang.Override
    public boolean hasNanoSeconds() {
      return ((bitField0_ & 0x00000400) != 0);
    }
    /**
     * <code>optional int32 nano_seconds = 14 [default = 0];</code>
     * @return The nanoSeconds.
     */
    @java.lang.Override
    public int getNanoSeconds() {
      return nanoSeconds_;
    }

    public static final int UNIQUE_KEY_UPDATE_MODE_FIELD_NUMBER = 15;
    private int uniqueKeyUpdateMode_ = 0;
    /**
     * <code>optional .doris.UniqueKeyUpdateModePB unique_key_update_mode = 15 [default = UPSERT];</code>
     * @return Whether the uniqueKeyUpdateMode field is set.
     */
    @java.lang.Override public boolean hasUniqueKeyUpdateMode() {
      return ((bitField0_ & 0x00000800) != 0);
    }
    /**
     * <code>optional .doris.UniqueKeyUpdateModePB unique_key_update_mode = 15 [default = UPSERT];</code>
     * @return The uniqueKeyUpdateMode.
     */
    @java.lang.Override public org.apache.doris.proto.OlapFile.UniqueKeyUpdateModePB getUniqueKeyUpdateMode() {
      org.apache.doris.proto.OlapFile.UniqueKeyUpdateModePB result = org.apache.doris.proto.OlapFile.UniqueKeyUpdateModePB.forNumber(uniqueKeyUpdateMode_);
      return result == null ? org.apache.doris.proto.OlapFile.UniqueKeyUpdateModePB.UPSERT : result;
    }

    public static final int SEQUENCE_MAP_COL_UNIQUE_ID_FIELD_NUMBER = 16;
    private int sequenceMapColUniqueId_ = -1;
    /**
     * <code>optional int32 sequence_map_col_unique_id = 16 [default = -1];</code>
     * @return Whether the sequenceMapColUniqueId field is set.
     */
    @java.lang.Override
    public boolean hasSequenceMapColUniqueId() {
      return ((bitField0_ & 0x00001000) != 0);
    }
    /**
     * <code>optional int32 sequence_map_col_unique_id = 16 [default = -1];</code>
     * @return The sequenceMapColUniqueId.
     */
    @java.lang.Override
    public int getSequenceMapColUniqueId() {
      return sequenceMapColUniqueId_;
    }

    public static final int PARTIAL_UPDATE_NEW_KEY_POLICY_FIELD_NUMBER = 17;
    private int partialUpdateNewKeyPolicy_ = 0;
    /**
     * <code>optional .doris.PartialUpdateNewRowPolicyPB partial_update_new_key_policy = 17 [default = APPEND];</code>
     * @return Whether the partialUpdateNewKeyPolicy field is set.
     */
    @java.lang.Override public boolean hasPartialUpdateNewKeyPolicy() {
      return ((bitField0_ & 0x00002000) != 0);
    }
    /**
     * <code>optional .doris.PartialUpdateNewRowPolicyPB partial_update_new_key_policy = 17 [default = APPEND];</code>
     * @return The partialUpdateNewKeyPolicy.
     */
    @java.lang.Override public org.apache.doris.proto.OlapFile.PartialUpdateNewRowPolicyPB getPartialUpdateNewKeyPolicy() {
      org.apache.doris.proto.OlapFile.PartialUpdateNewRowPolicyPB result = org.apache.doris.proto.OlapFile.PartialUpdateNewRowPolicyPB.forNumber(partialUpdateNewKeyPolicy_);
      return result == null ? org.apache.doris.proto.OlapFile.PartialUpdateNewRowPolicyPB.APPEND : result;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      if (!hasDbId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasTableId()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasVersion()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasTupleDesc()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getSlotDescsCount(); i++) {
        if (!getSlotDescs(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (!getTupleDesc().isInitialized()) {
        memoizedIsInitialized = 0;
        return false;
      }
      for (int i = 0; i < getIndexesCount(); i++) {
        if (!getIndexes(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeInt64(1, dbId_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeInt64(2, tableId_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeInt64(3, version_);
      }
      for (int i = 0; i < slotDescs_.size(); i++) {
        output.writeMessage(4, slotDescs_.get(i));
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeMessage(5, getTupleDesc());
      }
      for (int i = 0; i < indexes_.size(); i++) {
        output.writeMessage(6, indexes_.get(i));
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeBool(7, partialUpdate_);
      }
      for (int i = 0; i < partialUpdateInputColumns_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 8, partialUpdateInputColumns_.getRaw(i));
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeBool(9, isStrictMode_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 10, autoIncrementColumn_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        output.writeInt64(11, timestampMs_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 12, timezone_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        output.writeInt32(13, autoIncrementColumnUniqueId_);
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        output.writeInt32(14, nanoSeconds_);
      }
      if (((bitField0_ & 0x00000800) != 0)) {
        output.writeEnum(15, uniqueKeyUpdateMode_);
      }
      if (((bitField0_ & 0x00001000) != 0)) {
        output.writeInt32(16, sequenceMapColUniqueId_);
      }
      if (((bitField0_ & 0x00002000) != 0)) {
        output.writeEnum(17, partialUpdateNewKeyPolicy_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(1, dbId_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, tableId_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, version_);
      }
      for (int i = 0; i < slotDescs_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, slotDescs_.get(i));
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getTupleDesc());
      }
      for (int i = 0; i < indexes_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, indexes_.get(i));
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(7, partialUpdate_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < partialUpdateInputColumns_.size(); i++) {
          dataSize += computeStringSizeNoTag(partialUpdateInputColumns_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getPartialUpdateInputColumnsList().size();
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(9, isStrictMode_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(10, autoIncrementColumn_);
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(11, timestampMs_);
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(12, timezone_);
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(13, autoIncrementColumnUniqueId_);
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(14, nanoSeconds_);
      }
      if (((bitField0_ & 0x00000800) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(15, uniqueKeyUpdateMode_);
      }
      if (((bitField0_ & 0x00001000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(16, sequenceMapColUniqueId_);
      }
      if (((bitField0_ & 0x00002000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(17, partialUpdateNewKeyPolicy_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof org.apache.doris.proto.Descriptors.POlapTableSchemaParam)) {
        return super.equals(obj);
      }
      org.apache.doris.proto.Descriptors.POlapTableSchemaParam other = (org.apache.doris.proto.Descriptors.POlapTableSchemaParam) obj;

      if (hasDbId() != other.hasDbId()) return false;
      if (hasDbId()) {
        if (getDbId()
            != other.getDbId()) return false;
      }
      if (hasTableId() != other.hasTableId()) return false;
      if (hasTableId()) {
        if (getTableId()
            != other.getTableId()) return false;
      }
      if (hasVersion() != other.hasVersion()) return false;
      if (hasVersion()) {
        if (getVersion()
            != other.getVersion()) return false;
      }
      if (!getSlotDescsList()
          .equals(other.getSlotDescsList())) return false;
      if (hasTupleDesc() != other.hasTupleDesc()) return false;
      if (hasTupleDesc()) {
        if (!getTupleDesc()
            .equals(other.getTupleDesc())) return false;
      }
      if (!getIndexesList()
          .equals(other.getIndexesList())) return false;
      if (hasPartialUpdate() != other.hasPartialUpdate()) return false;
      if (hasPartialUpdate()) {
        if (getPartialUpdate()
            != other.getPartialUpdate()) return false;
      }
      if (!getPartialUpdateInputColumnsList()
          .equals(other.getPartialUpdateInputColumnsList())) return false;
      if (hasIsStrictMode() != other.hasIsStrictMode()) return false;
      if (hasIsStrictMode()) {
        if (getIsStrictMode()
            != other.getIsStrictMode()) return false;
      }
      if (hasAutoIncrementColumn() != other.hasAutoIncrementColumn()) return false;
      if (hasAutoIncrementColumn()) {
        if (!getAutoIncrementColumn()
            .equals(other.getAutoIncrementColumn())) return false;
      }
      if (hasTimestampMs() != other.hasTimestampMs()) return false;
      if (hasTimestampMs()) {
        if (getTimestampMs()
            != other.getTimestampMs()) return false;
      }
      if (hasTimezone() != other.hasTimezone()) return false;
      if (hasTimezone()) {
        if (!getTimezone()
            .equals(other.getTimezone())) return false;
      }
      if (hasAutoIncrementColumnUniqueId() != other.hasAutoIncrementColumnUniqueId()) return false;
      if (hasAutoIncrementColumnUniqueId()) {
        if (getAutoIncrementColumnUniqueId()
            != other.getAutoIncrementColumnUniqueId()) return false;
      }
      if (hasNanoSeconds() != other.hasNanoSeconds()) return false;
      if (hasNanoSeconds()) {
        if (getNanoSeconds()
            != other.getNanoSeconds()) return false;
      }
      if (hasUniqueKeyUpdateMode() != other.hasUniqueKeyUpdateMode()) return false;
      if (hasUniqueKeyUpdateMode()) {
        if (uniqueKeyUpdateMode_ != other.uniqueKeyUpdateMode_) return false;
      }
      if (hasSequenceMapColUniqueId() != other.hasSequenceMapColUniqueId()) return false;
      if (hasSequenceMapColUniqueId()) {
        if (getSequenceMapColUniqueId()
            != other.getSequenceMapColUniqueId()) return false;
      }
      if (hasPartialUpdateNewKeyPolicy() != other.hasPartialUpdateNewKeyPolicy()) return false;
      if (hasPartialUpdateNewKeyPolicy()) {
        if (partialUpdateNewKeyPolicy_ != other.partialUpdateNewKeyPolicy_) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasDbId()) {
        hash = (37 * hash) + DB_ID_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getDbId());
      }
      if (hasTableId()) {
        hash = (37 * hash) + TABLE_ID_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getTableId());
      }
      if (hasVersion()) {
        hash = (37 * hash) + VERSION_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getVersion());
      }
      if (getSlotDescsCount() > 0) {
        hash = (37 * hash) + SLOT_DESCS_FIELD_NUMBER;
        hash = (53 * hash) + getSlotDescsList().hashCode();
      }
      if (hasTupleDesc()) {
        hash = (37 * hash) + TUPLE_DESC_FIELD_NUMBER;
        hash = (53 * hash) + getTupleDesc().hashCode();
      }
      if (getIndexesCount() > 0) {
        hash = (37 * hash) + INDEXES_FIELD_NUMBER;
        hash = (53 * hash) + getIndexesList().hashCode();
      }
      if (hasPartialUpdate()) {
        hash = (37 * hash) + PARTIAL_UPDATE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getPartialUpdate());
      }
      if (getPartialUpdateInputColumnsCount() > 0) {
        hash = (37 * hash) + PARTIAL_UPDATE_INPUT_COLUMNS_FIELD_NUMBER;
        hash = (53 * hash) + getPartialUpdateInputColumnsList().hashCode();
      }
      if (hasIsStrictMode()) {
        hash = (37 * hash) + IS_STRICT_MODE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getIsStrictMode());
      }
      if (hasAutoIncrementColumn()) {
        hash = (37 * hash) + AUTO_INCREMENT_COLUMN_FIELD_NUMBER;
        hash = (53 * hash) + getAutoIncrementColumn().hashCode();
      }
      if (hasTimestampMs()) {
        hash = (37 * hash) + TIMESTAMP_MS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getTimestampMs());
      }
      if (hasTimezone()) {
        hash = (37 * hash) + TIMEZONE_FIELD_NUMBER;
        hash = (53 * hash) + getTimezone().hashCode();
      }
      if (hasAutoIncrementColumnUniqueId()) {
        hash = (37 * hash) + AUTO_INCREMENT_COLUMN_UNIQUE_ID_FIELD_NUMBER;
        hash = (53 * hash) + getAutoIncrementColumnUniqueId();
      }
      if (hasNanoSeconds()) {
        hash = (37 * hash) + NANO_SECONDS_FIELD_NUMBER;
        hash = (53 * hash) + getNanoSeconds();
      }
      if (hasUniqueKeyUpdateMode()) {
        hash = (37 * hash) + UNIQUE_KEY_UPDATE_MODE_FIELD_NUMBER;
        hash = (53 * hash) + uniqueKeyUpdateMode_;
      }
      if (hasSequenceMapColUniqueId()) {
        hash = (37 * hash) + SEQUENCE_MAP_COL_UNIQUE_ID_FIELD_NUMBER;
        hash = (53 * hash) + getSequenceMapColUniqueId();
      }
      if (hasPartialUpdateNewKeyPolicy()) {
        hash = (37 * hash) + PARTIAL_UPDATE_NEW_KEY_POLICY_FIELD_NUMBER;
        hash = (53 * hash) + partialUpdateNewKeyPolicy_;
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.apache.doris.proto.Descriptors.POlapTableSchemaParam parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.doris.proto.Descriptors.POlapTableSchemaParam parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.doris.proto.Descriptors.POlapTableSchemaParam parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.doris.proto.Descriptors.POlapTableSchemaParam parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.doris.proto.Descriptors.POlapTableSchemaParam parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.apache.doris.proto.Descriptors.POlapTableSchemaParam parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.apache.doris.proto.Descriptors.POlapTableSchemaParam parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.doris.proto.Descriptors.POlapTableSchemaParam parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static org.apache.doris.proto.Descriptors.POlapTableSchemaParam parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static org.apache.doris.proto.Descriptors.POlapTableSchemaParam parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static org.apache.doris.proto.Descriptors.POlapTableSchemaParam parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.apache.doris.proto.Descriptors.POlapTableSchemaParam parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(org.apache.doris.proto.Descriptors.POlapTableSchemaParam prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code doris.POlapTableSchemaParam}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:doris.POlapTableSchemaParam)
        org.apache.doris.proto.Descriptors.POlapTableSchemaParamOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.apache.doris.proto.Descriptors.internal_static_doris_POlapTableSchemaParam_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.apache.doris.proto.Descriptors.internal_static_doris_POlapTableSchemaParam_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.apache.doris.proto.Descriptors.POlapTableSchemaParam.class, org.apache.doris.proto.Descriptors.POlapTableSchemaParam.Builder.class);
      }

      // Construct using org.apache.doris.proto.Descriptors.POlapTableSchemaParam.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getSlotDescsFieldBuilder();
          getTupleDescFieldBuilder();
          getIndexesFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        dbId_ = 0L;
        tableId_ = 0L;
        version_ = 0L;
        if (slotDescsBuilder_ == null) {
          slotDescs_ = java.util.Collections.emptyList();
        } else {
          slotDescs_ = null;
          slotDescsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        tupleDesc_ = null;
        if (tupleDescBuilder_ != null) {
          tupleDescBuilder_.dispose();
          tupleDescBuilder_ = null;
        }
        if (indexesBuilder_ == null) {
          indexes_ = java.util.Collections.emptyList();
        } else {
          indexes_ = null;
          indexesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000020);
        partialUpdate_ = false;
        partialUpdateInputColumns_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        isStrictMode_ = false;
        autoIncrementColumn_ = "";
        timestampMs_ = 0L;
        timezone_ = "";
        autoIncrementColumnUniqueId_ = -1;
        nanoSeconds_ = 0;
        uniqueKeyUpdateMode_ = 0;
        sequenceMapColUniqueId_ = -1;
        partialUpdateNewKeyPolicy_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.apache.doris.proto.Descriptors.internal_static_doris_POlapTableSchemaParam_descriptor;
      }

      @java.lang.Override
      public org.apache.doris.proto.Descriptors.POlapTableSchemaParam getDefaultInstanceForType() {
        return org.apache.doris.proto.Descriptors.POlapTableSchemaParam.getDefaultInstance();
      }

      @java.lang.Override
      public org.apache.doris.proto.Descriptors.POlapTableSchemaParam build() {
        org.apache.doris.proto.Descriptors.POlapTableSchemaParam result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.apache.doris.proto.Descriptors.POlapTableSchemaParam buildPartial() {
        org.apache.doris.proto.Descriptors.POlapTableSchemaParam result = new org.apache.doris.proto.Descriptors.POlapTableSchemaParam(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(org.apache.doris.proto.Descriptors.POlapTableSchemaParam result) {
        if (slotDescsBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0)) {
            slotDescs_ = java.util.Collections.unmodifiableList(slotDescs_);
            bitField0_ = (bitField0_ & ~0x00000008);
          }
          result.slotDescs_ = slotDescs_;
        } else {
          result.slotDescs_ = slotDescsBuilder_.build();
        }
        if (indexesBuilder_ == null) {
          if (((bitField0_ & 0x00000020) != 0)) {
            indexes_ = java.util.Collections.unmodifiableList(indexes_);
            bitField0_ = (bitField0_ & ~0x00000020);
          }
          result.indexes_ = indexes_;
        } else {
          result.indexes_ = indexesBuilder_.build();
        }
      }

      private void buildPartial0(org.apache.doris.proto.Descriptors.POlapTableSchemaParam result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.dbId_ = dbId_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.tableId_ = tableId_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.version_ = version_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.tupleDesc_ = tupleDescBuilder_ == null
              ? tupleDesc_
              : tupleDescBuilder_.build();
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.partialUpdate_ = partialUpdate_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          partialUpdateInputColumns_.makeImmutable();
          result.partialUpdateInputColumns_ = partialUpdateInputColumns_;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.isStrictMode_ = isStrictMode_;
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          result.autoIncrementColumn_ = autoIncrementColumn_;
          to_bitField0_ |= 0x00000040;
        }
        if (((from_bitField0_ & 0x00000400) != 0)) {
          result.timestampMs_ = timestampMs_;
          to_bitField0_ |= 0x00000080;
        }
        if (((from_bitField0_ & 0x00000800) != 0)) {
          result.timezone_ = timezone_;
          to_bitField0_ |= 0x00000100;
        }
        if (((from_bitField0_ & 0x00001000) != 0)) {
          result.autoIncrementColumnUniqueId_ = autoIncrementColumnUniqueId_;
          to_bitField0_ |= 0x00000200;
        }
        if (((from_bitField0_ & 0x00002000) != 0)) {
          result.nanoSeconds_ = nanoSeconds_;
          to_bitField0_ |= 0x00000400;
        }
        if (((from_bitField0_ & 0x00004000) != 0)) {
          result.uniqueKeyUpdateMode_ = uniqueKeyUpdateMode_;
          to_bitField0_ |= 0x00000800;
        }
        if (((from_bitField0_ & 0x00008000) != 0)) {
          result.sequenceMapColUniqueId_ = sequenceMapColUniqueId_;
          to_bitField0_ |= 0x00001000;
        }
        if (((from_bitField0_ & 0x00010000) != 0)) {
          result.partialUpdateNewKeyPolicy_ = partialUpdateNewKeyPolicy_;
          to_bitField0_ |= 0x00002000;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof org.apache.doris.proto.Descriptors.POlapTableSchemaParam) {
          return mergeFrom((org.apache.doris.proto.Descriptors.POlapTableSchemaParam)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.apache.doris.proto.Descriptors.POlapTableSchemaParam other) {
        if (other == org.apache.doris.proto.Descriptors.POlapTableSchemaParam.getDefaultInstance()) return this;
        if (other.hasDbId()) {
          setDbId(other.getDbId());
        }
        if (other.hasTableId()) {
          setTableId(other.getTableId());
        }
        if (other.hasVersion()) {
          setVersion(other.getVersion());
        }
        if (slotDescsBuilder_ == null) {
          if (!other.slotDescs_.isEmpty()) {
            if (slotDescs_.isEmpty()) {
              slotDescs_ = other.slotDescs_;
              bitField0_ = (bitField0_ & ~0x00000008);
            } else {
              ensureSlotDescsIsMutable();
              slotDescs_.addAll(other.slotDescs_);
            }
            onChanged();
          }
        } else {
          if (!other.slotDescs_.isEmpty()) {
            if (slotDescsBuilder_.isEmpty()) {
              slotDescsBuilder_.dispose();
              slotDescsBuilder_ = null;
              slotDescs_ = other.slotDescs_;
              bitField0_ = (bitField0_ & ~0x00000008);
              slotDescsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getSlotDescsFieldBuilder() : null;
            } else {
              slotDescsBuilder_.addAllMessages(other.slotDescs_);
            }
          }
        }
        if (other.hasTupleDesc()) {
          mergeTupleDesc(other.getTupleDesc());
        }
        if (indexesBuilder_ == null) {
          if (!other.indexes_.isEmpty()) {
            if (indexes_.isEmpty()) {
              indexes_ = other.indexes_;
              bitField0_ = (bitField0_ & ~0x00000020);
            } else {
              ensureIndexesIsMutable();
              indexes_.addAll(other.indexes_);
            }
            onChanged();
          }
        } else {
          if (!other.indexes_.isEmpty()) {
            if (indexesBuilder_.isEmpty()) {
              indexesBuilder_.dispose();
              indexesBuilder_ = null;
              indexes_ = other.indexes_;
              bitField0_ = (bitField0_ & ~0x00000020);
              indexesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getIndexesFieldBuilder() : null;
            } else {
              indexesBuilder_.addAllMessages(other.indexes_);
            }
          }
        }
        if (other.hasPartialUpdate()) {
          setPartialUpdate(other.getPartialUpdate());
        }
        if (!other.partialUpdateInputColumns_.isEmpty()) {
          if (partialUpdateInputColumns_.isEmpty()) {
            partialUpdateInputColumns_ = other.partialUpdateInputColumns_;
            bitField0_ |= 0x00000080;
          } else {
            ensurePartialUpdateInputColumnsIsMutable();
            partialUpdateInputColumns_.addAll(other.partialUpdateInputColumns_);
          }
          onChanged();
        }
        if (other.hasIsStrictMode()) {
          setIsStrictMode(other.getIsStrictMode());
        }
        if (other.hasAutoIncrementColumn()) {
          autoIncrementColumn_ = other.autoIncrementColumn_;
          bitField0_ |= 0x00000200;
          onChanged();
        }
        if (other.hasTimestampMs()) {
          setTimestampMs(other.getTimestampMs());
        }
        if (other.hasTimezone()) {
          timezone_ = other.timezone_;
          bitField0_ |= 0x00000800;
          onChanged();
        }
        if (other.hasAutoIncrementColumnUniqueId()) {
          setAutoIncrementColumnUniqueId(other.getAutoIncrementColumnUniqueId());
        }
        if (other.hasNanoSeconds()) {
          setNanoSeconds(other.getNanoSeconds());
        }
        if (other.hasUniqueKeyUpdateMode()) {
          setUniqueKeyUpdateMode(other.getUniqueKeyUpdateMode());
        }
        if (other.hasSequenceMapColUniqueId()) {
          setSequenceMapColUniqueId(other.getSequenceMapColUniqueId());
        }
        if (other.hasPartialUpdateNewKeyPolicy()) {
          setPartialUpdateNewKeyPolicy(other.getPartialUpdateNewKeyPolicy());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasDbId()) {
          return false;
        }
        if (!hasTableId()) {
          return false;
        }
        if (!hasVersion()) {
          return false;
        }
        if (!hasTupleDesc()) {
          return false;
        }
        for (int i = 0; i < getSlotDescsCount(); i++) {
          if (!getSlotDescs(i).isInitialized()) {
            return false;
          }
        }
        if (!getTupleDesc().isInitialized()) {
          return false;
        }
        for (int i = 0; i < getIndexesCount(); i++) {
          if (!getIndexes(i).isInitialized()) {
            return false;
          }
        }
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                dbId_ = input.readInt64();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 16: {
                tableId_ = input.readInt64();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 24: {
                version_ = input.readInt64();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 34: {
                org.apache.doris.proto.Descriptors.PSlotDescriptor m =
                    input.readMessage(
                        org.apache.doris.proto.Descriptors.PSlotDescriptor.PARSER,
                        extensionRegistry);
                if (slotDescsBuilder_ == null) {
                  ensureSlotDescsIsMutable();
                  slotDescs_.add(m);
                } else {
                  slotDescsBuilder_.addMessage(m);
                }
                break;
              } // case 34
              case 42: {
                input.readMessage(
                    getTupleDescFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 50: {
                org.apache.doris.proto.Descriptors.POlapTableIndexSchema m =
                    input.readMessage(
                        org.apache.doris.proto.Descriptors.POlapTableIndexSchema.PARSER,
                        extensionRegistry);
                if (indexesBuilder_ == null) {
                  ensureIndexesIsMutable();
                  indexes_.add(m);
                } else {
                  indexesBuilder_.addMessage(m);
                }
                break;
              } // case 50
              case 56: {
                partialUpdate_ = input.readBool();
                bitField0_ |= 0x00000040;
                break;
              } // case 56
              case 66: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensurePartialUpdateInputColumnsIsMutable();
                partialUpdateInputColumns_.add(bs);
                break;
              } // case 66
              case 72: {
                isStrictMode_ = input.readBool();
                bitField0_ |= 0x00000100;
                break;
              } // case 72
              case 82: {
                autoIncrementColumn_ = input.readBytes();
                bitField0_ |= 0x00000200;
                break;
              } // case 82
              case 88: {
                timestampMs_ = input.readInt64();
                bitField0_ |= 0x00000400;
                break;
              } // case 88
              case 98: {
                timezone_ = input.readBytes();
                bitField0_ |= 0x00000800;
                break;
              } // case 98
              case 104: {
                autoIncrementColumnUniqueId_ = input.readInt32();
                bitField0_ |= 0x00001000;
                break;
              } // case 104
              case 112: {
                nanoSeconds_ = input.readInt32();
                bitField0_ |= 0x00002000;
                break;
              } // case 112
              case 120: {
                int tmpRaw = input.readEnum();
                org.apache.doris.proto.OlapFile.UniqueKeyUpdateModePB tmpValue =
                    org.apache.doris.proto.OlapFile.UniqueKeyUpdateModePB.forNumber(tmpRaw);
                if (tmpValue == null) {
                  mergeUnknownVarintField(15, tmpRaw);
                } else {
                  uniqueKeyUpdateMode_ = tmpRaw;
                  bitField0_ |= 0x00004000;
                }
                break;
              } // case 120
              case 128: {
                sequenceMapColUniqueId_ = input.readInt32();
                bitField0_ |= 0x00008000;
                break;
              } // case 128
              case 136: {
                int tmpRaw = input.readEnum();
                org.apache.doris.proto.OlapFile.PartialUpdateNewRowPolicyPB tmpValue =
                    org.apache.doris.proto.OlapFile.PartialUpdateNewRowPolicyPB.forNumber(tmpRaw);
                if (tmpValue == null) {
                  mergeUnknownVarintField(17, tmpRaw);
                } else {
                  partialUpdateNewKeyPolicy_ = tmpRaw;
                  bitField0_ |= 0x00010000;
                }
                break;
              } // case 136
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private long dbId_ ;
      /**
       * <code>required int64 db_id = 1;</code>
       * @return Whether the dbId field is set.
       */
      @java.lang.Override
      public boolean hasDbId() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required int64 db_id = 1;</code>
       * @return The dbId.
       */
      @java.lang.Override
      public long getDbId() {
        return dbId_;
      }
      /**
       * <code>required int64 db_id = 1;</code>
       * @param value The dbId to set.
       * @return This builder for chaining.
       */
      public Builder setDbId(long value) {

        dbId_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>required int64 db_id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearDbId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        dbId_ = 0L;
        onChanged();
        return this;
      }

      private long tableId_ ;
      /**
       * <code>required int64 table_id = 2;</code>
       * @return Whether the tableId field is set.
       */
      @java.lang.Override
      public boolean hasTableId() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>required int64 table_id = 2;</code>
       * @return The tableId.
       */
      @java.lang.Override
      public long getTableId() {
        return tableId_;
      }
      /**
       * <code>required int64 table_id = 2;</code>
       * @param value The tableId to set.
       * @return This builder for chaining.
       */
      public Builder setTableId(long value) {

        tableId_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>required int64 table_id = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearTableId() {
        bitField0_ = (bitField0_ & ~0x00000002);
        tableId_ = 0L;
        onChanged();
        return this;
      }

      private long version_ ;
      /**
       * <code>required int64 version = 3;</code>
       * @return Whether the version field is set.
       */
      @java.lang.Override
      public boolean hasVersion() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>required int64 version = 3;</code>
       * @return The version.
       */
      @java.lang.Override
      public long getVersion() {
        return version_;
      }
      /**
       * <code>required int64 version = 3;</code>
       * @param value The version to set.
       * @return This builder for chaining.
       */
      public Builder setVersion(long value) {

        version_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>required int64 version = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearVersion() {
        bitField0_ = (bitField0_ & ~0x00000004);
        version_ = 0L;
        onChanged();
        return this;
      }

      private java.util.List<org.apache.doris.proto.Descriptors.PSlotDescriptor> slotDescs_ =
        java.util.Collections.emptyList();
      private void ensureSlotDescsIsMutable() {
        if (!((bitField0_ & 0x00000008) != 0)) {
          slotDescs_ = new java.util.ArrayList<org.apache.doris.proto.Descriptors.PSlotDescriptor>(slotDescs_);
          bitField0_ |= 0x00000008;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          org.apache.doris.proto.Descriptors.PSlotDescriptor, org.apache.doris.proto.Descriptors.PSlotDescriptor.Builder, org.apache.doris.proto.Descriptors.PSlotDescriptorOrBuilder> slotDescsBuilder_;

      /**
       * <pre>
       * Logical columns, contain all column that in logical table
       * </pre>
       *
       * <code>repeated .doris.PSlotDescriptor slot_descs = 4;</code>
       */
      public java.util.List<org.apache.doris.proto.Descriptors.PSlotDescriptor> getSlotDescsList() {
        if (slotDescsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(slotDescs_);
        } else {
          return slotDescsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Logical columns, contain all column that in logical table
       * </pre>
       *
       * <code>repeated .doris.PSlotDescriptor slot_descs = 4;</code>
       */
      public int getSlotDescsCount() {
        if (slotDescsBuilder_ == null) {
          return slotDescs_.size();
        } else {
          return slotDescsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Logical columns, contain all column that in logical table
       * </pre>
       *
       * <code>repeated .doris.PSlotDescriptor slot_descs = 4;</code>
       */
      public org.apache.doris.proto.Descriptors.PSlotDescriptor getSlotDescs(int index) {
        if (slotDescsBuilder_ == null) {
          return slotDescs_.get(index);
        } else {
          return slotDescsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Logical columns, contain all column that in logical table
       * </pre>
       *
       * <code>repeated .doris.PSlotDescriptor slot_descs = 4;</code>
       */
      public Builder setSlotDescs(
          int index, org.apache.doris.proto.Descriptors.PSlotDescriptor value) {
        if (slotDescsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSlotDescsIsMutable();
          slotDescs_.set(index, value);
          onChanged();
        } else {
          slotDescsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Logical columns, contain all column that in logical table
       * </pre>
       *
       * <code>repeated .doris.PSlotDescriptor slot_descs = 4;</code>
       */
      public Builder setSlotDescs(
          int index, org.apache.doris.proto.Descriptors.PSlotDescriptor.Builder builderForValue) {
        if (slotDescsBuilder_ == null) {
          ensureSlotDescsIsMutable();
          slotDescs_.set(index, builderForValue.build());
          onChanged();
        } else {
          slotDescsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Logical columns, contain all column that in logical table
       * </pre>
       *
       * <code>repeated .doris.PSlotDescriptor slot_descs = 4;</code>
       */
      public Builder addSlotDescs(org.apache.doris.proto.Descriptors.PSlotDescriptor value) {
        if (slotDescsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSlotDescsIsMutable();
          slotDescs_.add(value);
          onChanged();
        } else {
          slotDescsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Logical columns, contain all column that in logical table
       * </pre>
       *
       * <code>repeated .doris.PSlotDescriptor slot_descs = 4;</code>
       */
      public Builder addSlotDescs(
          int index, org.apache.doris.proto.Descriptors.PSlotDescriptor value) {
        if (slotDescsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSlotDescsIsMutable();
          slotDescs_.add(index, value);
          onChanged();
        } else {
          slotDescsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Logical columns, contain all column that in logical table
       * </pre>
       *
       * <code>repeated .doris.PSlotDescriptor slot_descs = 4;</code>
       */
      public Builder addSlotDescs(
          org.apache.doris.proto.Descriptors.PSlotDescriptor.Builder builderForValue) {
        if (slotDescsBuilder_ == null) {
          ensureSlotDescsIsMutable();
          slotDescs_.add(builderForValue.build());
          onChanged();
        } else {
          slotDescsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Logical columns, contain all column that in logical table
       * </pre>
       *
       * <code>repeated .doris.PSlotDescriptor slot_descs = 4;</code>
       */
      public Builder addSlotDescs(
          int index, org.apache.doris.proto.Descriptors.PSlotDescriptor.Builder builderForValue) {
        if (slotDescsBuilder_ == null) {
          ensureSlotDescsIsMutable();
          slotDescs_.add(index, builderForValue.build());
          onChanged();
        } else {
          slotDescsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Logical columns, contain all column that in logical table
       * </pre>
       *
       * <code>repeated .doris.PSlotDescriptor slot_descs = 4;</code>
       */
      public Builder addAllSlotDescs(
          java.lang.Iterable<? extends org.apache.doris.proto.Descriptors.PSlotDescriptor> values) {
        if (slotDescsBuilder_ == null) {
          ensureSlotDescsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, slotDescs_);
          onChanged();
        } else {
          slotDescsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Logical columns, contain all column that in logical table
       * </pre>
       *
       * <code>repeated .doris.PSlotDescriptor slot_descs = 4;</code>
       */
      public Builder clearSlotDescs() {
        if (slotDescsBuilder_ == null) {
          slotDescs_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
          onChanged();
        } else {
          slotDescsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Logical columns, contain all column that in logical table
       * </pre>
       *
       * <code>repeated .doris.PSlotDescriptor slot_descs = 4;</code>
       */
      public Builder removeSlotDescs(int index) {
        if (slotDescsBuilder_ == null) {
          ensureSlotDescsIsMutable();
          slotDescs_.remove(index);
          onChanged();
        } else {
          slotDescsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Logical columns, contain all column that in logical table
       * </pre>
       *
       * <code>repeated .doris.PSlotDescriptor slot_descs = 4;</code>
       */
      public org.apache.doris.proto.Descriptors.PSlotDescriptor.Builder getSlotDescsBuilder(
          int index) {
        return getSlotDescsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Logical columns, contain all column that in logical table
       * </pre>
       *
       * <code>repeated .doris.PSlotDescriptor slot_descs = 4;</code>
       */
      public org.apache.doris.proto.Descriptors.PSlotDescriptorOrBuilder getSlotDescsOrBuilder(
          int index) {
        if (slotDescsBuilder_ == null) {
          return slotDescs_.get(index);  } else {
          return slotDescsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Logical columns, contain all column that in logical table
       * </pre>
       *
       * <code>repeated .doris.PSlotDescriptor slot_descs = 4;</code>
       */
      public java.util.List<? extends org.apache.doris.proto.Descriptors.PSlotDescriptorOrBuilder> 
           getSlotDescsOrBuilderList() {
        if (slotDescsBuilder_ != null) {
          return slotDescsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(slotDescs_);
        }
      }
      /**
       * <pre>
       * Logical columns, contain all column that in logical table
       * </pre>
       *
       * <code>repeated .doris.PSlotDescriptor slot_descs = 4;</code>
       */
      public org.apache.doris.proto.Descriptors.PSlotDescriptor.Builder addSlotDescsBuilder() {
        return getSlotDescsFieldBuilder().addBuilder(
            org.apache.doris.proto.Descriptors.PSlotDescriptor.getDefaultInstance());
      }
      /**
       * <pre>
       * Logical columns, contain all column that in logical table
       * </pre>
       *
       * <code>repeated .doris.PSlotDescriptor slot_descs = 4;</code>
       */
      public org.apache.doris.proto.Descriptors.PSlotDescriptor.Builder addSlotDescsBuilder(
          int index) {
        return getSlotDescsFieldBuilder().addBuilder(
            index, org.apache.doris.proto.Descriptors.PSlotDescriptor.getDefaultInstance());
      }
      /**
       * <pre>
       * Logical columns, contain all column that in logical table
       * </pre>
       *
       * <code>repeated .doris.PSlotDescriptor slot_descs = 4;</code>
       */
      public java.util.List<org.apache.doris.proto.Descriptors.PSlotDescriptor.Builder> 
           getSlotDescsBuilderList() {
        return getSlotDescsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          org.apache.doris.proto.Descriptors.PSlotDescriptor, org.apache.doris.proto.Descriptors.PSlotDescriptor.Builder, org.apache.doris.proto.Descriptors.PSlotDescriptorOrBuilder> 
          getSlotDescsFieldBuilder() {
        if (slotDescsBuilder_ == null) {
          slotDescsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              org.apache.doris.proto.Descriptors.PSlotDescriptor, org.apache.doris.proto.Descriptors.PSlotDescriptor.Builder, org.apache.doris.proto.Descriptors.PSlotDescriptorOrBuilder>(
                  slotDescs_,
                  ((bitField0_ & 0x00000008) != 0),
                  getParentForChildren(),
                  isClean());
          slotDescs_ = null;
        }
        return slotDescsBuilder_;
      }

      private org.apache.doris.proto.Descriptors.PTupleDescriptor tupleDesc_;
      private com.google.protobuf.SingleFieldBuilderV3<
          org.apache.doris.proto.Descriptors.PTupleDescriptor, org.apache.doris.proto.Descriptors.PTupleDescriptor.Builder, org.apache.doris.proto.Descriptors.PTupleDescriptorOrBuilder> tupleDescBuilder_;
      /**
       * <code>required .doris.PTupleDescriptor tuple_desc = 5;</code>
       * @return Whether the tupleDesc field is set.
       */
      public boolean hasTupleDesc() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <code>required .doris.PTupleDescriptor tuple_desc = 5;</code>
       * @return The tupleDesc.
       */
      public org.apache.doris.proto.Descriptors.PTupleDescriptor getTupleDesc() {
        if (tupleDescBuilder_ == null) {
          return tupleDesc_ == null ? org.apache.doris.proto.Descriptors.PTupleDescriptor.getDefaultInstance() : tupleDesc_;
        } else {
          return tupleDescBuilder_.getMessage();
        }
      }
      /**
       * <code>required .doris.PTupleDescriptor tuple_desc = 5;</code>
       */
      public Builder setTupleDesc(org.apache.doris.proto.Descriptors.PTupleDescriptor value) {
        if (tupleDescBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          tupleDesc_ = value;
        } else {
          tupleDescBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>required .doris.PTupleDescriptor tuple_desc = 5;</code>
       */
      public Builder setTupleDesc(
          org.apache.doris.proto.Descriptors.PTupleDescriptor.Builder builderForValue) {
        if (tupleDescBuilder_ == null) {
          tupleDesc_ = builderForValue.build();
        } else {
          tupleDescBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>required .doris.PTupleDescriptor tuple_desc = 5;</code>
       */
      public Builder mergeTupleDesc(org.apache.doris.proto.Descriptors.PTupleDescriptor value) {
        if (tupleDescBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0) &&
            tupleDesc_ != null &&
            tupleDesc_ != org.apache.doris.proto.Descriptors.PTupleDescriptor.getDefaultInstance()) {
            getTupleDescBuilder().mergeFrom(value);
          } else {
            tupleDesc_ = value;
          }
        } else {
          tupleDescBuilder_.mergeFrom(value);
        }
        if (tupleDesc_ != null) {
          bitField0_ |= 0x00000010;
          onChanged();
        }
        return this;
      }
      /**
       * <code>required .doris.PTupleDescriptor tuple_desc = 5;</code>
       */
      public Builder clearTupleDesc() {
        bitField0_ = (bitField0_ & ~0x00000010);
        tupleDesc_ = null;
        if (tupleDescBuilder_ != null) {
          tupleDescBuilder_.dispose();
          tupleDescBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>required .doris.PTupleDescriptor tuple_desc = 5;</code>
       */
      public org.apache.doris.proto.Descriptors.PTupleDescriptor.Builder getTupleDescBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getTupleDescFieldBuilder().getBuilder();
      }
      /**
       * <code>required .doris.PTupleDescriptor tuple_desc = 5;</code>
       */
      public org.apache.doris.proto.Descriptors.PTupleDescriptorOrBuilder getTupleDescOrBuilder() {
        if (tupleDescBuilder_ != null) {
          return tupleDescBuilder_.getMessageOrBuilder();
        } else {
          return tupleDesc_ == null ?
              org.apache.doris.proto.Descriptors.PTupleDescriptor.getDefaultInstance() : tupleDesc_;
        }
      }
      /**
       * <code>required .doris.PTupleDescriptor tuple_desc = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          org.apache.doris.proto.Descriptors.PTupleDescriptor, org.apache.doris.proto.Descriptors.PTupleDescriptor.Builder, org.apache.doris.proto.Descriptors.PTupleDescriptorOrBuilder> 
          getTupleDescFieldBuilder() {
        if (tupleDescBuilder_ == null) {
          tupleDescBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              org.apache.doris.proto.Descriptors.PTupleDescriptor, org.apache.doris.proto.Descriptors.PTupleDescriptor.Builder, org.apache.doris.proto.Descriptors.PTupleDescriptorOrBuilder>(
                  getTupleDesc(),
                  getParentForChildren(),
                  isClean());
          tupleDesc_ = null;
        }
        return tupleDescBuilder_;
      }

      private java.util.List<org.apache.doris.proto.Descriptors.POlapTableIndexSchema> indexes_ =
        java.util.Collections.emptyList();
      private void ensureIndexesIsMutable() {
        if (!((bitField0_ & 0x00000020) != 0)) {
          indexes_ = new java.util.ArrayList<org.apache.doris.proto.Descriptors.POlapTableIndexSchema>(indexes_);
          bitField0_ |= 0x00000020;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          org.apache.doris.proto.Descriptors.POlapTableIndexSchema, org.apache.doris.proto.Descriptors.POlapTableIndexSchema.Builder, org.apache.doris.proto.Descriptors.POlapTableIndexSchemaOrBuilder> indexesBuilder_;

      /**
       * <code>repeated .doris.POlapTableIndexSchema indexes = 6;</code>
       */
      public java.util.List<org.apache.doris.proto.Descriptors.POlapTableIndexSchema> getIndexesList() {
        if (indexesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(indexes_);
        } else {
          return indexesBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .doris.POlapTableIndexSchema indexes = 6;</code>
       */
      public int getIndexesCount() {
        if (indexesBuilder_ == null) {
          return indexes_.size();
        } else {
          return indexesBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .doris.POlapTableIndexSchema indexes = 6;</code>
       */
      public org.apache.doris.proto.Descriptors.POlapTableIndexSchema getIndexes(int index) {
        if (indexesBuilder_ == null) {
          return indexes_.get(index);
        } else {
          return indexesBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .doris.POlapTableIndexSchema indexes = 6;</code>
       */
      public Builder setIndexes(
          int index, org.apache.doris.proto.Descriptors.POlapTableIndexSchema value) {
        if (indexesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureIndexesIsMutable();
          indexes_.set(index, value);
          onChanged();
        } else {
          indexesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .doris.POlapTableIndexSchema indexes = 6;</code>
       */
      public Builder setIndexes(
          int index, org.apache.doris.proto.Descriptors.POlapTableIndexSchema.Builder builderForValue) {
        if (indexesBuilder_ == null) {
          ensureIndexesIsMutable();
          indexes_.set(index, builderForValue.build());
          onChanged();
        } else {
          indexesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .doris.POlapTableIndexSchema indexes = 6;</code>
       */
      public Builder addIndexes(org.apache.doris.proto.Descriptors.POlapTableIndexSchema value) {
        if (indexesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureIndexesIsMutable();
          indexes_.add(value);
          onChanged();
        } else {
          indexesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .doris.POlapTableIndexSchema indexes = 6;</code>
       */
      public Builder addIndexes(
          int index, org.apache.doris.proto.Descriptors.POlapTableIndexSchema value) {
        if (indexesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureIndexesIsMutable();
          indexes_.add(index, value);
          onChanged();
        } else {
          indexesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .doris.POlapTableIndexSchema indexes = 6;</code>
       */
      public Builder addIndexes(
          org.apache.doris.proto.Descriptors.POlapTableIndexSchema.Builder builderForValue) {
        if (indexesBuilder_ == null) {
          ensureIndexesIsMutable();
          indexes_.add(builderForValue.build());
          onChanged();
        } else {
          indexesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .doris.POlapTableIndexSchema indexes = 6;</code>
       */
      public Builder addIndexes(
          int index, org.apache.doris.proto.Descriptors.POlapTableIndexSchema.Builder builderForValue) {
        if (indexesBuilder_ == null) {
          ensureIndexesIsMutable();
          indexes_.add(index, builderForValue.build());
          onChanged();
        } else {
          indexesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .doris.POlapTableIndexSchema indexes = 6;</code>
       */
      public Builder addAllIndexes(
          java.lang.Iterable<? extends org.apache.doris.proto.Descriptors.POlapTableIndexSchema> values) {
        if (indexesBuilder_ == null) {
          ensureIndexesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, indexes_);
          onChanged();
        } else {
          indexesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .doris.POlapTableIndexSchema indexes = 6;</code>
       */
      public Builder clearIndexes() {
        if (indexesBuilder_ == null) {
          indexes_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000020);
          onChanged();
        } else {
          indexesBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .doris.POlapTableIndexSchema indexes = 6;</code>
       */
      public Builder removeIndexes(int index) {
        if (indexesBuilder_ == null) {
          ensureIndexesIsMutable();
          indexes_.remove(index);
          onChanged();
        } else {
          indexesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .doris.POlapTableIndexSchema indexes = 6;</code>
       */
      public org.apache.doris.proto.Descriptors.POlapTableIndexSchema.Builder getIndexesBuilder(
          int index) {
        return getIndexesFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .doris.POlapTableIndexSchema indexes = 6;</code>
       */
      public org.apache.doris.proto.Descriptors.POlapTableIndexSchemaOrBuilder getIndexesOrBuilder(
          int index) {
        if (indexesBuilder_ == null) {
          return indexes_.get(index);  } else {
          return indexesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .doris.POlapTableIndexSchema indexes = 6;</code>
       */
      public java.util.List<? extends org.apache.doris.proto.Descriptors.POlapTableIndexSchemaOrBuilder> 
           getIndexesOrBuilderList() {
        if (indexesBuilder_ != null) {
          return indexesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(indexes_);
        }
      }
      /**
       * <code>repeated .doris.POlapTableIndexSchema indexes = 6;</code>
       */
      public org.apache.doris.proto.Descriptors.POlapTableIndexSchema.Builder addIndexesBuilder() {
        return getIndexesFieldBuilder().addBuilder(
            org.apache.doris.proto.Descriptors.POlapTableIndexSchema.getDefaultInstance());
      }
      /**
       * <code>repeated .doris.POlapTableIndexSchema indexes = 6;</code>
       */
      public org.apache.doris.proto.Descriptors.POlapTableIndexSchema.Builder addIndexesBuilder(
          int index) {
        return getIndexesFieldBuilder().addBuilder(
            index, org.apache.doris.proto.Descriptors.POlapTableIndexSchema.getDefaultInstance());
      }
      /**
       * <code>repeated .doris.POlapTableIndexSchema indexes = 6;</code>
       */
      public java.util.List<org.apache.doris.proto.Descriptors.POlapTableIndexSchema.Builder> 
           getIndexesBuilderList() {
        return getIndexesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          org.apache.doris.proto.Descriptors.POlapTableIndexSchema, org.apache.doris.proto.Descriptors.POlapTableIndexSchema.Builder, org.apache.doris.proto.Descriptors.POlapTableIndexSchemaOrBuilder> 
          getIndexesFieldBuilder() {
        if (indexesBuilder_ == null) {
          indexesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              org.apache.doris.proto.Descriptors.POlapTableIndexSchema, org.apache.doris.proto.Descriptors.POlapTableIndexSchema.Builder, org.apache.doris.proto.Descriptors.POlapTableIndexSchemaOrBuilder>(
                  indexes_,
                  ((bitField0_ & 0x00000020) != 0),
                  getParentForChildren(),
                  isClean());
          indexes_ = null;
        }
        return indexesBuilder_;
      }

      private boolean partialUpdate_ ;
      /**
       * <pre>
       * deprecated, use unique_key_update_mode
       * </pre>
       *
       * <code>optional bool partial_update = 7 [default = false];</code>
       * @return Whether the partialUpdate field is set.
       */
      @java.lang.Override
      public boolean hasPartialUpdate() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <pre>
       * deprecated, use unique_key_update_mode
       * </pre>
       *
       * <code>optional bool partial_update = 7 [default = false];</code>
       * @return The partialUpdate.
       */
      @java.lang.Override
      public boolean getPartialUpdate() {
        return partialUpdate_;
      }
      /**
       * <pre>
       * deprecated, use unique_key_update_mode
       * </pre>
       *
       * <code>optional bool partial_update = 7 [default = false];</code>
       * @param value The partialUpdate to set.
       * @return This builder for chaining.
       */
      public Builder setPartialUpdate(boolean value) {

        partialUpdate_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * deprecated, use unique_key_update_mode
       * </pre>
       *
       * <code>optional bool partial_update = 7 [default = false];</code>
       * @return This builder for chaining.
       */
      public Builder clearPartialUpdate() {
        bitField0_ = (bitField0_ & ~0x00000040);
        partialUpdate_ = false;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringArrayList partialUpdateInputColumns_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensurePartialUpdateInputColumnsIsMutable() {
        if (!partialUpdateInputColumns_.isModifiable()) {
          partialUpdateInputColumns_ = new com.google.protobuf.LazyStringArrayList(partialUpdateInputColumns_);
        }
        bitField0_ |= 0x00000080;
      }
      /**
       * <code>repeated string partial_update_input_columns = 8;</code>
       * @return A list containing the partialUpdateInputColumns.
       */
      public com.google.protobuf.ProtocolStringList
          getPartialUpdateInputColumnsList() {
        partialUpdateInputColumns_.makeImmutable();
        return partialUpdateInputColumns_;
      }
      /**
       * <code>repeated string partial_update_input_columns = 8;</code>
       * @return The count of partialUpdateInputColumns.
       */
      public int getPartialUpdateInputColumnsCount() {
        return partialUpdateInputColumns_.size();
      }
      /**
       * <code>repeated string partial_update_input_columns = 8;</code>
       * @param index The index of the element to return.
       * @return The partialUpdateInputColumns at the given index.
       */
      public java.lang.String getPartialUpdateInputColumns(int index) {
        return partialUpdateInputColumns_.get(index);
      }
      /**
       * <code>repeated string partial_update_input_columns = 8;</code>
       * @param index The index of the value to return.
       * @return The bytes of the partialUpdateInputColumns at the given index.
       */
      public com.google.protobuf.ByteString
          getPartialUpdateInputColumnsBytes(int index) {
        return partialUpdateInputColumns_.getByteString(index);
      }
      /**
       * <code>repeated string partial_update_input_columns = 8;</code>
       * @param index The index to set the value at.
       * @param value The partialUpdateInputColumns to set.
       * @return This builder for chaining.
       */
      public Builder setPartialUpdateInputColumns(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensurePartialUpdateInputColumnsIsMutable();
        partialUpdateInputColumns_.set(index, value);
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <code>repeated string partial_update_input_columns = 8;</code>
       * @param value The partialUpdateInputColumns to add.
       * @return This builder for chaining.
       */
      public Builder addPartialUpdateInputColumns(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensurePartialUpdateInputColumnsIsMutable();
        partialUpdateInputColumns_.add(value);
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <code>repeated string partial_update_input_columns = 8;</code>
       * @param values The partialUpdateInputColumns to add.
       * @return This builder for chaining.
       */
      public Builder addAllPartialUpdateInputColumns(
          java.lang.Iterable<java.lang.String> values) {
        ensurePartialUpdateInputColumnsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, partialUpdateInputColumns_);
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * <code>repeated string partial_update_input_columns = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearPartialUpdateInputColumns() {
        partialUpdateInputColumns_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000080);;
        onChanged();
        return this;
      }
      /**
       * <code>repeated string partial_update_input_columns = 8;</code>
       * @param value The bytes of the partialUpdateInputColumns to add.
       * @return This builder for chaining.
       */
      public Builder addPartialUpdateInputColumnsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensurePartialUpdateInputColumnsIsMutable();
        partialUpdateInputColumns_.add(value);
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }

      private boolean isStrictMode_ ;
      /**
       * <code>optional bool is_strict_mode = 9 [default = false];</code>
       * @return Whether the isStrictMode field is set.
       */
      @java.lang.Override
      public boolean hasIsStrictMode() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * <code>optional bool is_strict_mode = 9 [default = false];</code>
       * @return The isStrictMode.
       */
      @java.lang.Override
      public boolean getIsStrictMode() {
        return isStrictMode_;
      }
      /**
       * <code>optional bool is_strict_mode = 9 [default = false];</code>
       * @param value The isStrictMode to set.
       * @return This builder for chaining.
       */
      public Builder setIsStrictMode(boolean value) {

        isStrictMode_ = value;
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool is_strict_mode = 9 [default = false];</code>
       * @return This builder for chaining.
       */
      public Builder clearIsStrictMode() {
        bitField0_ = (bitField0_ & ~0x00000100);
        isStrictMode_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object autoIncrementColumn_ = "";
      /**
       * <code>optional string auto_increment_column = 10;</code>
       * @return Whether the autoIncrementColumn field is set.
       */
      public boolean hasAutoIncrementColumn() {
        return ((bitField0_ & 0x00000200) != 0);
      }
      /**
       * <code>optional string auto_increment_column = 10;</code>
       * @return The autoIncrementColumn.
       */
      public java.lang.String getAutoIncrementColumn() {
        java.lang.Object ref = autoIncrementColumn_;
        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()) {
            autoIncrementColumn_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string auto_increment_column = 10;</code>
       * @return The bytes for autoIncrementColumn.
       */
      public com.google.protobuf.ByteString
          getAutoIncrementColumnBytes() {
        java.lang.Object ref = autoIncrementColumn_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          autoIncrementColumn_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string auto_increment_column = 10;</code>
       * @param value The autoIncrementColumn to set.
       * @return This builder for chaining.
       */
      public Builder setAutoIncrementColumn(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        autoIncrementColumn_ = value;
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <code>optional string auto_increment_column = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearAutoIncrementColumn() {
        autoIncrementColumn_ = getDefaultInstance().getAutoIncrementColumn();
        bitField0_ = (bitField0_ & ~0x00000200);
        onChanged();
        return this;
      }
      /**
       * <code>optional string auto_increment_column = 10;</code>
       * @param value The bytes for autoIncrementColumn to set.
       * @return This builder for chaining.
       */
      public Builder setAutoIncrementColumnBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        autoIncrementColumn_ = value;
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }

      private long timestampMs_ ;
      /**
       * <code>optional int64 timestamp_ms = 11 [default = 0];</code>
       * @return Whether the timestampMs field is set.
       */
      @java.lang.Override
      public boolean hasTimestampMs() {
        return ((bitField0_ & 0x00000400) != 0);
      }
      /**
       * <code>optional int64 timestamp_ms = 11 [default = 0];</code>
       * @return The timestampMs.
       */
      @java.lang.Override
      public long getTimestampMs() {
        return timestampMs_;
      }
      /**
       * <code>optional int64 timestamp_ms = 11 [default = 0];</code>
       * @param value The timestampMs to set.
       * @return This builder for chaining.
       */
      public Builder setTimestampMs(long value) {

        timestampMs_ = value;
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <code>optional int64 timestamp_ms = 11 [default = 0];</code>
       * @return This builder for chaining.
       */
      public Builder clearTimestampMs() {
        bitField0_ = (bitField0_ & ~0x00000400);
        timestampMs_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object timezone_ = "";
      /**
       * <code>optional string timezone = 12;</code>
       * @return Whether the timezone field is set.
       */
      public boolean hasTimezone() {
        return ((bitField0_ & 0x00000800) != 0);
      }
      /**
       * <code>optional string timezone = 12;</code>
       * @return The timezone.
       */
      public java.lang.String getTimezone() {
        java.lang.Object ref = timezone_;
        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()) {
            timezone_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string timezone = 12;</code>
       * @return The bytes for timezone.
       */
      public com.google.protobuf.ByteString
          getTimezoneBytes() {
        java.lang.Object ref = timezone_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          timezone_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string timezone = 12;</code>
       * @param value The timezone to set.
       * @return This builder for chaining.
       */
      public Builder setTimezone(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        timezone_ = value;
        bitField0_ |= 0x00000800;
        onChanged();
        return this;
      }
      /**
       * <code>optional string timezone = 12;</code>
       * @return This builder for chaining.
       */
      public Builder clearTimezone() {
        timezone_ = getDefaultInstance().getTimezone();
        bitField0_ = (bitField0_ & ~0x00000800);
        onChanged();
        return this;
      }
      /**
       * <code>optional string timezone = 12;</code>
       * @param value The bytes for timezone to set.
       * @return This builder for chaining.
       */
      public Builder setTimezoneBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        timezone_ = value;
        bitField0_ |= 0x00000800;
        onChanged();
        return this;
      }

      private int autoIncrementColumnUniqueId_ = -1;
      /**
       * <code>optional int32 auto_increment_column_unique_id = 13 [default = -1];</code>
       * @return Whether the autoIncrementColumnUniqueId field is set.
       */
      @java.lang.Override
      public boolean hasAutoIncrementColumnUniqueId() {
        return ((bitField0_ & 0x00001000) != 0);
      }
      /**
       * <code>optional int32 auto_increment_column_unique_id = 13 [default = -1];</code>
       * @return The autoIncrementColumnUniqueId.
       */
      @java.lang.Override
      public int getAutoIncrementColumnUniqueId() {
        return autoIncrementColumnUniqueId_;
      }
      /**
       * <code>optional int32 auto_increment_column_unique_id = 13 [default = -1];</code>
       * @param value The autoIncrementColumnUniqueId to set.
       * @return This builder for chaining.
       */
      public Builder setAutoIncrementColumnUniqueId(int value) {

        autoIncrementColumnUniqueId_ = value;
        bitField0_ |= 0x00001000;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 auto_increment_column_unique_id = 13 [default = -1];</code>
       * @return This builder for chaining.
       */
      public Builder clearAutoIncrementColumnUniqueId() {
        bitField0_ = (bitField0_ & ~0x00001000);
        autoIncrementColumnUniqueId_ = -1;
        onChanged();
        return this;
      }

      private int nanoSeconds_ ;
      /**
       * <code>optional int32 nano_seconds = 14 [default = 0];</code>
       * @return Whether the nanoSeconds field is set.
       */
      @java.lang.Override
      public boolean hasNanoSeconds() {
        return ((bitField0_ & 0x00002000) != 0);
      }
      /**
       * <code>optional int32 nano_seconds = 14 [default = 0];</code>
       * @return The nanoSeconds.
       */
      @java.lang.Override
      public int getNanoSeconds() {
        return nanoSeconds_;
      }
      /**
       * <code>optional int32 nano_seconds = 14 [default = 0];</code>
       * @param value The nanoSeconds to set.
       * @return This builder for chaining.
       */
      public Builder setNanoSeconds(int value) {

        nanoSeconds_ = value;
        bitField0_ |= 0x00002000;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 nano_seconds = 14 [default = 0];</code>
       * @return This builder for chaining.
       */
      public Builder clearNanoSeconds() {
        bitField0_ = (bitField0_ & ~0x00002000);
        nanoSeconds_ = 0;
        onChanged();
        return this;
      }

      private int uniqueKeyUpdateMode_ = 0;
      /**
       * <code>optional .doris.UniqueKeyUpdateModePB unique_key_update_mode = 15 [default = UPSERT];</code>
       * @return Whether the uniqueKeyUpdateMode field is set.
       */
      @java.lang.Override public boolean hasUniqueKeyUpdateMode() {
        return ((bitField0_ & 0x00004000) != 0);
      }
      /**
       * <code>optional .doris.UniqueKeyUpdateModePB unique_key_update_mode = 15 [default = UPSERT];</code>
       * @return The uniqueKeyUpdateMode.
       */
      @java.lang.Override
      public org.apache.doris.proto.OlapFile.UniqueKeyUpdateModePB getUniqueKeyUpdateMode() {
        org.apache.doris.proto.OlapFile.UniqueKeyUpdateModePB result = org.apache.doris.proto.OlapFile.UniqueKeyUpdateModePB.forNumber(uniqueKeyUpdateMode_);
        return result == null ? org.apache.doris.proto.OlapFile.UniqueKeyUpdateModePB.UPSERT : result;
      }
      /**
       * <code>optional .doris.UniqueKeyUpdateModePB unique_key_update_mode = 15 [default = UPSERT];</code>
       * @param value The uniqueKeyUpdateMode to set.
       * @return This builder for chaining.
       */
      public Builder setUniqueKeyUpdateMode(org.apache.doris.proto.OlapFile.UniqueKeyUpdateModePB value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00004000;
        uniqueKeyUpdateMode_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>optional .doris.UniqueKeyUpdateModePB unique_key_update_mode = 15 [default = UPSERT];</code>
       * @return This builder for chaining.
       */
      public Builder clearUniqueKeyUpdateMode() {
        bitField0_ = (bitField0_ & ~0x00004000);
        uniqueKeyUpdateMode_ = 0;
        onChanged();
        return this;
      }

      private int sequenceMapColUniqueId_ = -1;
      /**
       * <code>optional int32 sequence_map_col_unique_id = 16 [default = -1];</code>
       * @return Whether the sequenceMapColUniqueId field is set.
       */
      @java.lang.Override
      public boolean hasSequenceMapColUniqueId() {
        return ((bitField0_ & 0x00008000) != 0);
      }
      /**
       * <code>optional int32 sequence_map_col_unique_id = 16 [default = -1];</code>
       * @return The sequenceMapColUniqueId.
       */
      @java.lang.Override
      public int getSequenceMapColUniqueId() {
        return sequenceMapColUniqueId_;
      }
      /**
       * <code>optional int32 sequence_map_col_unique_id = 16 [default = -1];</code>
       * @param value The sequenceMapColUniqueId to set.
       * @return This builder for chaining.
       */
      public Builder setSequenceMapColUniqueId(int value) {

        sequenceMapColUniqueId_ = value;
        bitField0_ |= 0x00008000;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 sequence_map_col_unique_id = 16 [default = -1];</code>
       * @return This builder for chaining.
       */
      public Builder clearSequenceMapColUniqueId() {
        bitField0_ = (bitField0_ & ~0x00008000);
        sequenceMapColUniqueId_ = -1;
        onChanged();
        return this;
      }

      private int partialUpdateNewKeyPolicy_ = 0;
      /**
       * <code>optional .doris.PartialUpdateNewRowPolicyPB partial_update_new_key_policy = 17 [default = APPEND];</code>
       * @return Whether the partialUpdateNewKeyPolicy field is set.
       */
      @java.lang.Override public boolean hasPartialUpdateNewKeyPolicy() {
        return ((bitField0_ & 0x00010000) != 0);
      }
      /**
       * <code>optional .doris.PartialUpdateNewRowPolicyPB partial_update_new_key_policy = 17 [default = APPEND];</code>
       * @return The partialUpdateNewKeyPolicy.
       */
      @java.lang.Override
      public org.apache.doris.proto.OlapFile.PartialUpdateNewRowPolicyPB getPartialUpdateNewKeyPolicy() {
        org.apache.doris.proto.OlapFile.PartialUpdateNewRowPolicyPB result = org.apache.doris.proto.OlapFile.PartialUpdateNewRowPolicyPB.forNumber(partialUpdateNewKeyPolicy_);
        return result == null ? org.apache.doris.proto.OlapFile.PartialUpdateNewRowPolicyPB.APPEND : result;
      }
      /**
       * <code>optional .doris.PartialUpdateNewRowPolicyPB partial_update_new_key_policy = 17 [default = APPEND];</code>
       * @param value The partialUpdateNewKeyPolicy to set.
       * @return This builder for chaining.
       */
      public Builder setPartialUpdateNewKeyPolicy(org.apache.doris.proto.OlapFile.PartialUpdateNewRowPolicyPB value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00010000;
        partialUpdateNewKeyPolicy_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>optional .doris.PartialUpdateNewRowPolicyPB partial_update_new_key_policy = 17 [default = APPEND];</code>
       * @return This builder for chaining.
       */
      public Builder clearPartialUpdateNewKeyPolicy() {
        bitField0_ = (bitField0_ & ~0x00010000);
        partialUpdateNewKeyPolicy_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:doris.POlapTableSchemaParam)
    }

    // @@protoc_insertion_point(class_scope:doris.POlapTableSchemaParam)
    private static final org.apache.doris.proto.Descriptors.POlapTableSchemaParam DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.apache.doris.proto.Descriptors.POlapTableSchemaParam();
    }

    public static org.apache.doris.proto.Descriptors.POlapTableSchemaParam getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<POlapTableSchemaParam>
        PARSER = new com.google.protobuf.AbstractParser<POlapTableSchemaParam>() {
      @java.lang.Override
      public POlapTableSchemaParam parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<POlapTableSchemaParam> parser() {
      return PARSER;
    }

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

    @java.lang.Override
    public org.apache.doris.proto.Descriptors.POlapTableSchemaParam getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_doris_PDataAccessPath_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_doris_PDataAccessPath_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_doris_PMetaAccessPath_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_doris_PMetaAccessPath_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_doris_PColumnAccessPath_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_doris_PColumnAccessPath_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_doris_PSlotDescriptor_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_doris_PSlotDescriptor_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_doris_PTupleDescriptor_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_doris_PTupleDescriptor_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_doris_POlapTableIndexSchema_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_doris_POlapTableIndexSchema_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_doris_POlapTableSchemaParam_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_doris_POlapTableSchemaParam_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\021descriptors.proto\022\005doris\032\013types.proto\032" +
      "\017olap_file.proto\"\037\n\017PDataAccessPath\022\014\n\004p" +
      "ath\030\001 \003(\t\"\037\n\017PMetaAccessPath\022\014\n\004path\030\001 \003" +
      "(\t\"\235\001\n\021PColumnAccessPath\022$\n\004type\030\001 \002(\0162\026" +
      ".doris.PAccessPathType\0220\n\020data_access_pa" +
      "th\030\002 \001(\0132\026.doris.PDataAccessPath\0220\n\020meta" +
      "_access_path\030\003 \001(\0132\026.doris.PMetaAccessPa" +
      "th\"\320\003\n\017PSlotDescriptor\022\n\n\002id\030\001 \002(\005\022\016\n\006pa" +
      "rent\030\002 \002(\005\022#\n\tslot_type\030\003 \002(\0132\020.doris.PT" +
      "ypeDesc\022\022\n\ncolumn_pos\030\004 \002(\005\022\023\n\013byte_offs" +
      "et\030\005 \002(\005\022\033\n\023null_indicator_byte\030\006 \002(\005\022\032\n" +
      "\022null_indicator_bit\030\007 \002(\005\022\020\n\010col_name\030\010 " +
      "\002(\t\022\020\n\010slot_idx\030\t \002(\005\022\033\n\017is_materialized" +
      "\030\n \001(\010B\002\030\001\022\025\n\rcol_unique_id\030\013 \001(\005\022\016\n\006is_" +
      "key\030\014 \001(\010\022\031\n\021is_auto_increment\030\r \001(\010\022\023\n\010" +
      "col_type\030\016 \001(\005:\0010\022\024\n\014column_paths\030\017 \003(\t\022" +
      "2\n\020all_access_paths\030\020 \003(\0132\030.doris.PColum" +
      "nAccessPath\0228\n\026predicate_access_paths\030\021 " +
      "\003(\0132\030.doris.PColumnAccessPath\"s\n\020PTupleD" +
      "escriptor\022\n\n\002id\030\001 \002(\005\022\021\n\tbyte_size\030\002 \002(\005" +
      "\022\026\n\016num_null_bytes\030\003 \002(\005\022\020\n\010table_id\030\004 \001" +
      "(\003\022\026\n\016num_null_slots\030\005 \001(\005\"\234\001\n\025POlapTabl" +
      "eIndexSchema\022\n\n\002id\030\001 \002(\003\022\017\n\007columns\030\002 \003(" +
      "\t\022\023\n\013schema_hash\030\003 \002(\005\022%\n\014columns_desc\030\004" +
      " \003(\0132\017.doris.ColumnPB\022*\n\014indexes_desc\030\005 " +
      "\003(\0132\024.doris.TabletIndexPB\"\206\005\n\025POlapTable" +
      "SchemaParam\022\r\n\005db_id\030\001 \002(\003\022\020\n\010table_id\030\002" +
      " \002(\003\022\017\n\007version\030\003 \002(\003\022*\n\nslot_descs\030\004 \003(" +
      "\0132\026.doris.PSlotDescriptor\022+\n\ntuple_desc\030" +
      "\005 \002(\0132\027.doris.PTupleDescriptor\022-\n\007indexe" +
      "s\030\006 \003(\0132\034.doris.POlapTableIndexSchema\022\035\n" +
      "\016partial_update\030\007 \001(\010:\005false\022$\n\034partial_" +
      "update_input_columns\030\010 \003(\t\022\035\n\016is_strict_" +
      "mode\030\t \001(\010:\005false\022\035\n\025auto_increment_colu" +
      "mn\030\n \001(\t\022\027\n\014timestamp_ms\030\013 \001(\003:\0010\022\020\n\010tim" +
      "ezone\030\014 \001(\t\022+\n\037auto_increment_column_uni" +
      "que_id\030\r \001(\005:\002-1\022\027\n\014nano_seconds\030\016 \001(\005:\001" +
      "0\022D\n\026unique_key_update_mode\030\017 \001(\0162\034.dori" +
      "s.UniqueKeyUpdateModePB:\006UPSERT\022&\n\032seque" +
      "nce_map_col_unique_id\030\020 \001(\005:\002-1\022Q\n\035parti" +
      "al_update_new_key_policy\030\021 \001(\0162\".doris.P" +
      "artialUpdateNewRowPolicyPB:\006APPEND*%\n\017PA" +
      "ccessPathType\022\010\n\004DATA\020\001\022\010\n\004META\020\002B\030\n\026org" +
      ".apache.doris.proto"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          org.apache.doris.proto.Types.getDescriptor(),
          org.apache.doris.proto.OlapFile.getDescriptor(),
        });
    internal_static_doris_PDataAccessPath_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_doris_PDataAccessPath_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_doris_PDataAccessPath_descriptor,
        new java.lang.String[] { "Path", });
    internal_static_doris_PMetaAccessPath_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_doris_PMetaAccessPath_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_doris_PMetaAccessPath_descriptor,
        new java.lang.String[] { "Path", });
    internal_static_doris_PColumnAccessPath_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_doris_PColumnAccessPath_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_doris_PColumnAccessPath_descriptor,
        new java.lang.String[] { "Type", "DataAccessPath", "MetaAccessPath", });
    internal_static_doris_PSlotDescriptor_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_doris_PSlotDescriptor_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_doris_PSlotDescriptor_descriptor,
        new java.lang.String[] { "Id", "Parent", "SlotType", "ColumnPos", "ByteOffset", "NullIndicatorByte", "NullIndicatorBit", "ColName", "SlotIdx", "IsMaterialized", "ColUniqueId", "IsKey", "IsAutoIncrement", "ColType", "ColumnPaths", "AllAccessPaths", "PredicateAccessPaths", });
    internal_static_doris_PTupleDescriptor_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_doris_PTupleDescriptor_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_doris_PTupleDescriptor_descriptor,
        new java.lang.String[] { "Id", "ByteSize", "NumNullBytes", "TableId", "NumNullSlots", });
    internal_static_doris_POlapTableIndexSchema_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_doris_POlapTableIndexSchema_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_doris_POlapTableIndexSchema_descriptor,
        new java.lang.String[] { "Id", "Columns", "SchemaHash", "ColumnsDesc", "IndexesDesc", });
    internal_static_doris_POlapTableSchemaParam_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_doris_POlapTableSchemaParam_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_doris_POlapTableSchemaParam_descriptor,
        new java.lang.String[] { "DbId", "TableId", "Version", "SlotDescs", "TupleDesc", "Indexes", "PartialUpdate", "PartialUpdateInputColumns", "IsStrictMode", "AutoIncrementColumn", "TimestampMs", "Timezone", "AutoIncrementColumnUniqueId", "NanoSeconds", "UniqueKeyUpdateMode", "SequenceMapColUniqueId", "PartialUpdateNewKeyPolicy", });
    org.apache.doris.proto.Types.getDescriptor();
    org.apache.doris.proto.OlapFile.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}