SegmentV2.java

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

package doris.segment_v2;

public final class SegmentV2 {
  private SegmentV2() {}
  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.segment_v2.EncodingTypePB}
   */
  public enum EncodingTypePB
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>UNKNOWN_ENCODING = 0;</code>
     */
    UNKNOWN_ENCODING(0),
    /**
     * <code>DEFAULT_ENCODING = 1;</code>
     */
    DEFAULT_ENCODING(1),
    /**
     * <code>PLAIN_ENCODING = 2;</code>
     */
    PLAIN_ENCODING(2),
    /**
     * <code>PREFIX_ENCODING = 3;</code>
     */
    PREFIX_ENCODING(3),
    /**
     * <code>RLE = 4;</code>
     */
    RLE(4),
    /**
     * <code>DICT_ENCODING = 5;</code>
     */
    DICT_ENCODING(5),
    /**
     * <code>BIT_SHUFFLE = 6;</code>
     */
    BIT_SHUFFLE(6),
    /**
     * <pre>
     * Frame-Of-Reference
     * </pre>
     *
     * <code>FOR_ENCODING = 7;</code>
     */
    FOR_ENCODING(7),
    ;

    /**
     * <code>UNKNOWN_ENCODING = 0;</code>
     */
    public static final int UNKNOWN_ENCODING_VALUE = 0;
    /**
     * <code>DEFAULT_ENCODING = 1;</code>
     */
    public static final int DEFAULT_ENCODING_VALUE = 1;
    /**
     * <code>PLAIN_ENCODING = 2;</code>
     */
    public static final int PLAIN_ENCODING_VALUE = 2;
    /**
     * <code>PREFIX_ENCODING = 3;</code>
     */
    public static final int PREFIX_ENCODING_VALUE = 3;
    /**
     * <code>RLE = 4;</code>
     */
    public static final int RLE_VALUE = 4;
    /**
     * <code>DICT_ENCODING = 5;</code>
     */
    public static final int DICT_ENCODING_VALUE = 5;
    /**
     * <code>BIT_SHUFFLE = 6;</code>
     */
    public static final int BIT_SHUFFLE_VALUE = 6;
    /**
     * <pre>
     * Frame-Of-Reference
     * </pre>
     *
     * <code>FOR_ENCODING = 7;</code>
     */
    public static final int FOR_ENCODING_VALUE = 7;


    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 EncodingTypePB 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 EncodingTypePB forNumber(int value) {
      switch (value) {
        case 0: return UNKNOWN_ENCODING;
        case 1: return DEFAULT_ENCODING;
        case 2: return PLAIN_ENCODING;
        case 3: return PREFIX_ENCODING;
        case 4: return RLE;
        case 5: return DICT_ENCODING;
        case 6: return BIT_SHUFFLE;
        case 7: return FOR_ENCODING;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<EncodingTypePB>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        EncodingTypePB> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<EncodingTypePB>() {
            public EncodingTypePB findValueByNumber(int number) {
              return EncodingTypePB.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 doris.segment_v2.SegmentV2.getDescriptor().getEnumTypes().get(0);
    }

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

    public static EncodingTypePB 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 EncodingTypePB(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:doris.segment_v2.EncodingTypePB)
  }

  /**
   * Protobuf enum {@code doris.segment_v2.CompressionTypePB}
   */
  public enum CompressionTypePB
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>UNKNOWN_COMPRESSION = 0;</code>
     */
    UNKNOWN_COMPRESSION(0),
    /**
     * <code>DEFAULT_COMPRESSION = 1;</code>
     */
    DEFAULT_COMPRESSION(1),
    /**
     * <code>NO_COMPRESSION = 2;</code>
     */
    NO_COMPRESSION(2),
    /**
     * <code>SNAPPY = 3;</code>
     */
    SNAPPY(3),
    /**
     * <code>LZ4 = 4;</code>
     */
    LZ4(4),
    /**
     * <code>LZ4F = 5;</code>
     */
    LZ4F(5),
    /**
     * <code>ZLIB = 6;</code>
     */
    ZLIB(6),
    /**
     * <code>ZSTD = 7;</code>
     */
    ZSTD(7),
    /**
     * <code>LZ4HC = 8;</code>
     */
    LZ4HC(8),
    ;

    /**
     * <code>UNKNOWN_COMPRESSION = 0;</code>
     */
    public static final int UNKNOWN_COMPRESSION_VALUE = 0;
    /**
     * <code>DEFAULT_COMPRESSION = 1;</code>
     */
    public static final int DEFAULT_COMPRESSION_VALUE = 1;
    /**
     * <code>NO_COMPRESSION = 2;</code>
     */
    public static final int NO_COMPRESSION_VALUE = 2;
    /**
     * <code>SNAPPY = 3;</code>
     */
    public static final int SNAPPY_VALUE = 3;
    /**
     * <code>LZ4 = 4;</code>
     */
    public static final int LZ4_VALUE = 4;
    /**
     * <code>LZ4F = 5;</code>
     */
    public static final int LZ4F_VALUE = 5;
    /**
     * <code>ZLIB = 6;</code>
     */
    public static final int ZLIB_VALUE = 6;
    /**
     * <code>ZSTD = 7;</code>
     */
    public static final int ZSTD_VALUE = 7;
    /**
     * <code>LZ4HC = 8;</code>
     */
    public static final int LZ4HC_VALUE = 8;


    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 CompressionTypePB 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 CompressionTypePB forNumber(int value) {
      switch (value) {
        case 0: return UNKNOWN_COMPRESSION;
        case 1: return DEFAULT_COMPRESSION;
        case 2: return NO_COMPRESSION;
        case 3: return SNAPPY;
        case 4: return LZ4;
        case 5: return LZ4F;
        case 6: return ZLIB;
        case 7: return ZSTD;
        case 8: return LZ4HC;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<CompressionTypePB>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        CompressionTypePB> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<CompressionTypePB>() {
            public CompressionTypePB findValueByNumber(int number) {
              return CompressionTypePB.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 doris.segment_v2.SegmentV2.getDescriptor().getEnumTypes().get(1);
    }

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

    public static CompressionTypePB 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 CompressionTypePB(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:doris.segment_v2.CompressionTypePB)
  }

  /**
   * Protobuf enum {@code doris.segment_v2.PageTypePB}
   */
  public enum PageTypePB
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>UNKNOWN_PAGE_TYPE = 0;</code>
     */
    UNKNOWN_PAGE_TYPE(0),
    /**
     * <code>DATA_PAGE = 1;</code>
     */
    DATA_PAGE(1),
    /**
     * <code>INDEX_PAGE = 2;</code>
     */
    INDEX_PAGE(2),
    /**
     * <code>DICTIONARY_PAGE = 3;</code>
     */
    DICTIONARY_PAGE(3),
    /**
     * <code>SHORT_KEY_PAGE = 4;</code>
     */
    SHORT_KEY_PAGE(4),
    /**
     * <code>PRIMARY_KEY_INDEX_PAGE = 5;</code>
     */
    PRIMARY_KEY_INDEX_PAGE(5),
    ;

    /**
     * <code>UNKNOWN_PAGE_TYPE = 0;</code>
     */
    public static final int UNKNOWN_PAGE_TYPE_VALUE = 0;
    /**
     * <code>DATA_PAGE = 1;</code>
     */
    public static final int DATA_PAGE_VALUE = 1;
    /**
     * <code>INDEX_PAGE = 2;</code>
     */
    public static final int INDEX_PAGE_VALUE = 2;
    /**
     * <code>DICTIONARY_PAGE = 3;</code>
     */
    public static final int DICTIONARY_PAGE_VALUE = 3;
    /**
     * <code>SHORT_KEY_PAGE = 4;</code>
     */
    public static final int SHORT_KEY_PAGE_VALUE = 4;
    /**
     * <code>PRIMARY_KEY_INDEX_PAGE = 5;</code>
     */
    public static final int PRIMARY_KEY_INDEX_PAGE_VALUE = 5;


    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 PageTypePB 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 PageTypePB forNumber(int value) {
      switch (value) {
        case 0: return UNKNOWN_PAGE_TYPE;
        case 1: return DATA_PAGE;
        case 2: return INDEX_PAGE;
        case 3: return DICTIONARY_PAGE;
        case 4: return SHORT_KEY_PAGE;
        case 5: return PRIMARY_KEY_INDEX_PAGE;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<PageTypePB>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        PageTypePB> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<PageTypePB>() {
            public PageTypePB findValueByNumber(int number) {
              return PageTypePB.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 doris.segment_v2.SegmentV2.getDescriptor().getEnumTypes().get(2);
    }

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

    public static PageTypePB 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 PageTypePB(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:doris.segment_v2.PageTypePB)
  }

  /**
   * Protobuf enum {@code doris.segment_v2.ColumnIndexTypePB}
   */
  public enum ColumnIndexTypePB
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>UNKNOWN_INDEX_TYPE = 0;</code>
     */
    UNKNOWN_INDEX_TYPE(0),
    /**
     * <code>ORDINAL_INDEX = 1;</code>
     */
    ORDINAL_INDEX(1),
    /**
     * <code>ZONE_MAP_INDEX = 2;</code>
     */
    ZONE_MAP_INDEX(2),
    /**
     * <code>BITMAP_INDEX = 3;</code>
     */
    BITMAP_INDEX(3),
    /**
     * <code>BLOOM_FILTER_INDEX = 4;</code>
     */
    BLOOM_FILTER_INDEX(4),
    ;

    /**
     * <code>UNKNOWN_INDEX_TYPE = 0;</code>
     */
    public static final int UNKNOWN_INDEX_TYPE_VALUE = 0;
    /**
     * <code>ORDINAL_INDEX = 1;</code>
     */
    public static final int ORDINAL_INDEX_VALUE = 1;
    /**
     * <code>ZONE_MAP_INDEX = 2;</code>
     */
    public static final int ZONE_MAP_INDEX_VALUE = 2;
    /**
     * <code>BITMAP_INDEX = 3;</code>
     */
    public static final int BITMAP_INDEX_VALUE = 3;
    /**
     * <code>BLOOM_FILTER_INDEX = 4;</code>
     */
    public static final int BLOOM_FILTER_INDEX_VALUE = 4;


    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 ColumnIndexTypePB 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 ColumnIndexTypePB forNumber(int value) {
      switch (value) {
        case 0: return UNKNOWN_INDEX_TYPE;
        case 1: return ORDINAL_INDEX;
        case 2: return ZONE_MAP_INDEX;
        case 3: return BITMAP_INDEX;
        case 4: return BLOOM_FILTER_INDEX;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<ColumnIndexTypePB>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        ColumnIndexTypePB> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<ColumnIndexTypePB>() {
            public ColumnIndexTypePB findValueByNumber(int number) {
              return ColumnIndexTypePB.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 doris.segment_v2.SegmentV2.getDescriptor().getEnumTypes().get(3);
    }

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

    public static ColumnIndexTypePB 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 ColumnIndexTypePB(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:doris.segment_v2.ColumnIndexTypePB)
  }

  /**
   * Protobuf enum {@code doris.segment_v2.HashStrategyPB}
   */
  public enum HashStrategyPB
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>HASH_MURMUR3_X64_64 = 0;</code>
     */
    HASH_MURMUR3_X64_64(0),
    /**
     * <code>CITY_HASH_64 = 1;</code>
     */
    CITY_HASH_64(1),
    ;

    /**
     * <code>HASH_MURMUR3_X64_64 = 0;</code>
     */
    public static final int HASH_MURMUR3_X64_64_VALUE = 0;
    /**
     * <code>CITY_HASH_64 = 1;</code>
     */
    public static final int CITY_HASH_64_VALUE = 1;


    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 HashStrategyPB 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 HashStrategyPB forNumber(int value) {
      switch (value) {
        case 0: return HASH_MURMUR3_X64_64;
        case 1: return CITY_HASH_64;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<HashStrategyPB>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        HashStrategyPB> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<HashStrategyPB>() {
            public HashStrategyPB findValueByNumber(int number) {
              return HashStrategyPB.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 doris.segment_v2.SegmentV2.getDescriptor().getEnumTypes().get(4);
    }

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

    public static HashStrategyPB 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 HashStrategyPB(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:doris.segment_v2.HashStrategyPB)
  }

  /**
   * Protobuf enum {@code doris.segment_v2.BloomFilterAlgorithmPB}
   */
  public enum BloomFilterAlgorithmPB
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>BLOCK_BLOOM_FILTER = 0;</code>
     */
    BLOCK_BLOOM_FILTER(0),
    /**
     * <code>CLASSIC_BLOOM_FILTER = 1;</code>
     */
    CLASSIC_BLOOM_FILTER(1),
    /**
     * <code>NGRAM_BLOOM_FILTER = 2;</code>
     */
    NGRAM_BLOOM_FILTER(2),
    ;

    /**
     * <code>BLOCK_BLOOM_FILTER = 0;</code>
     */
    public static final int BLOCK_BLOOM_FILTER_VALUE = 0;
    /**
     * <code>CLASSIC_BLOOM_FILTER = 1;</code>
     */
    public static final int CLASSIC_BLOOM_FILTER_VALUE = 1;
    /**
     * <code>NGRAM_BLOOM_FILTER = 2;</code>
     */
    public static final int NGRAM_BLOOM_FILTER_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 BloomFilterAlgorithmPB 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 BloomFilterAlgorithmPB forNumber(int value) {
      switch (value) {
        case 0: return BLOCK_BLOOM_FILTER;
        case 1: return CLASSIC_BLOOM_FILTER;
        case 2: return NGRAM_BLOOM_FILTER;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<BloomFilterAlgorithmPB>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        BloomFilterAlgorithmPB> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<BloomFilterAlgorithmPB>() {
            public BloomFilterAlgorithmPB findValueByNumber(int number) {
              return BloomFilterAlgorithmPB.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 doris.segment_v2.SegmentV2.getDescriptor().getEnumTypes().get(5);
    }

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

    public static BloomFilterAlgorithmPB 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 BloomFilterAlgorithmPB(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:doris.segment_v2.BloomFilterAlgorithmPB)
  }

  public interface PagePointerPBOrBuilder extends
      // @@protoc_insertion_point(interface_extends:doris.segment_v2.PagePointerPB)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * offset in segment file
     * </pre>
     *
     * <code>required uint64 offset = 1;</code>
     * @return Whether the offset field is set.
     */
    boolean hasOffset();
    /**
     * <pre>
     * offset in segment file
     * </pre>
     *
     * <code>required uint64 offset = 1;</code>
     * @return The offset.
     */
    long getOffset();

    /**
     * <pre>
     * size of page in byte
     * </pre>
     *
     * <code>required uint32 size = 2;</code>
     * @return Whether the size field is set.
     */
    boolean hasSize();
    /**
     * <pre>
     * size of page in byte
     * </pre>
     *
     * <code>required uint32 size = 2;</code>
     * @return The size.
     */
    int getSize();
  }
  /**
   * <pre>
   * page position info
   * </pre>
   *
   * Protobuf type {@code doris.segment_v2.PagePointerPB}
   */
  public static final class PagePointerPB extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:doris.segment_v2.PagePointerPB)
      PagePointerPBOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PagePointerPB.newBuilder() to construct.
    private PagePointerPB(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PagePointerPB() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_PagePointerPB_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_PagePointerPB_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              doris.segment_v2.SegmentV2.PagePointerPB.class, doris.segment_v2.SegmentV2.PagePointerPB.Builder.class);
    }

    private int bitField0_;
    public static final int OFFSET_FIELD_NUMBER = 1;
    private long offset_ = 0L;
    /**
     * <pre>
     * offset in segment file
     * </pre>
     *
     * <code>required uint64 offset = 1;</code>
     * @return Whether the offset field is set.
     */
    @java.lang.Override
    public boolean hasOffset() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * offset in segment file
     * </pre>
     *
     * <code>required uint64 offset = 1;</code>
     * @return The offset.
     */
    @java.lang.Override
    public long getOffset() {
      return offset_;
    }

    public static final int SIZE_FIELD_NUMBER = 2;
    private int size_ = 0;
    /**
     * <pre>
     * size of page in byte
     * </pre>
     *
     * <code>required uint32 size = 2;</code>
     * @return Whether the size field is set.
     */
    @java.lang.Override
    public boolean hasSize() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * size of page in byte
     * </pre>
     *
     * <code>required uint32 size = 2;</code>
     * @return The size.
     */
    @java.lang.Override
    public int getSize() {
      return size_;
    }

    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 (!hasOffset()) {
        memoizedIsInitialized = 0;
        return false;
      }
      if (!hasSize()) {
        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.writeUInt64(1, offset_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeUInt32(2, size_);
      }
      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
          .computeUInt64Size(1, offset_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, 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 doris.segment_v2.SegmentV2.PagePointerPB)) {
        return super.equals(obj);
      }
      doris.segment_v2.SegmentV2.PagePointerPB other = (doris.segment_v2.SegmentV2.PagePointerPB) obj;

      if (hasOffset() != other.hasOffset()) return false;
      if (hasOffset()) {
        if (getOffset()
            != other.getOffset()) return false;
      }
      if (hasSize() != other.hasSize()) return false;
      if (hasSize()) {
        if (getSize()
            != other.getSize()) 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 (hasOffset()) {
        hash = (37 * hash) + OFFSET_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getOffset());
      }
      if (hasSize()) {
        hash = (37 * hash) + SIZE_FIELD_NUMBER;
        hash = (53 * hash) + getSize();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static doris.segment_v2.SegmentV2.PagePointerPB parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.PagePointerPB parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.PagePointerPB parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.PagePointerPB parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.PagePointerPB parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.PagePointerPB parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.PagePointerPB parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.segment_v2.SegmentV2.PagePointerPB 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 doris.segment_v2.SegmentV2.PagePointerPB parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static doris.segment_v2.SegmentV2.PagePointerPB 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 doris.segment_v2.SegmentV2.PagePointerPB parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.segment_v2.SegmentV2.PagePointerPB 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(doris.segment_v2.SegmentV2.PagePointerPB 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;
    }
    /**
     * <pre>
     * page position info
     * </pre>
     *
     * Protobuf type {@code doris.segment_v2.PagePointerPB}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:doris.segment_v2.PagePointerPB)
        doris.segment_v2.SegmentV2.PagePointerPBOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_PagePointerPB_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_PagePointerPB_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                doris.segment_v2.SegmentV2.PagePointerPB.class, doris.segment_v2.SegmentV2.PagePointerPB.Builder.class);
      }

      // Construct using doris.segment_v2.SegmentV2.PagePointerPB.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        offset_ = 0L;
        size_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_PagePointerPB_descriptor;
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.PagePointerPB getDefaultInstanceForType() {
        return doris.segment_v2.SegmentV2.PagePointerPB.getDefaultInstance();
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.PagePointerPB build() {
        doris.segment_v2.SegmentV2.PagePointerPB result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.PagePointerPB buildPartial() {
        doris.segment_v2.SegmentV2.PagePointerPB result = new doris.segment_v2.SegmentV2.PagePointerPB(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(doris.segment_v2.SegmentV2.PagePointerPB result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.offset_ = offset_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.size_ = size_;
          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 doris.segment_v2.SegmentV2.PagePointerPB) {
          return mergeFrom((doris.segment_v2.SegmentV2.PagePointerPB)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(doris.segment_v2.SegmentV2.PagePointerPB other) {
        if (other == doris.segment_v2.SegmentV2.PagePointerPB.getDefaultInstance()) return this;
        if (other.hasOffset()) {
          setOffset(other.getOffset());
        }
        if (other.hasSize()) {
          setSize(other.getSize());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (!hasOffset()) {
          return false;
        }
        if (!hasSize()) {
          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: {
                offset_ = input.readUInt64();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 16: {
                size_ = input.readUInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              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 offset_ ;
      /**
       * <pre>
       * offset in segment file
       * </pre>
       *
       * <code>required uint64 offset = 1;</code>
       * @return Whether the offset field is set.
       */
      @java.lang.Override
      public boolean hasOffset() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * offset in segment file
       * </pre>
       *
       * <code>required uint64 offset = 1;</code>
       * @return The offset.
       */
      @java.lang.Override
      public long getOffset() {
        return offset_;
      }
      /**
       * <pre>
       * offset in segment file
       * </pre>
       *
       * <code>required uint64 offset = 1;</code>
       * @param value The offset to set.
       * @return This builder for chaining.
       */
      public Builder setOffset(long value) {

        offset_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * offset in segment file
       * </pre>
       *
       * <code>required uint64 offset = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearOffset() {
        bitField0_ = (bitField0_ & ~0x00000001);
        offset_ = 0L;
        onChanged();
        return this;
      }

      private int size_ ;
      /**
       * <pre>
       * size of page in byte
       * </pre>
       *
       * <code>required uint32 size = 2;</code>
       * @return Whether the size field is set.
       */
      @java.lang.Override
      public boolean hasSize() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * size of page in byte
       * </pre>
       *
       * <code>required uint32 size = 2;</code>
       * @return The size.
       */
      @java.lang.Override
      public int getSize() {
        return size_;
      }
      /**
       * <pre>
       * size of page in byte
       * </pre>
       *
       * <code>required uint32 size = 2;</code>
       * @param value The size to set.
       * @return This builder for chaining.
       */
      public Builder setSize(int value) {

        size_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * size of page in byte
       * </pre>
       *
       * <code>required uint32 size = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearSize() {
        bitField0_ = (bitField0_ & ~0x00000002);
        size_ = 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.segment_v2.PagePointerPB)
    }

    // @@protoc_insertion_point(class_scope:doris.segment_v2.PagePointerPB)
    private static final doris.segment_v2.SegmentV2.PagePointerPB DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new doris.segment_v2.SegmentV2.PagePointerPB();
    }

    public static doris.segment_v2.SegmentV2.PagePointerPB getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<PagePointerPB>
        PARSER = new com.google.protobuf.AbstractParser<PagePointerPB>() {
      @java.lang.Override
      public PagePointerPB 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<PagePointerPB> parser() {
      return PARSER;
    }

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

    @java.lang.Override
    public doris.segment_v2.SegmentV2.PagePointerPB getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface MetadataPairPBOrBuilder extends
      // @@protoc_insertion_point(interface_extends:doris.segment_v2.MetadataPairPB)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>optional string key = 1;</code>
     * @return Whether the key field is set.
     */
    boolean hasKey();
    /**
     * <code>optional string key = 1;</code>
     * @return The key.
     */
    java.lang.String getKey();
    /**
     * <code>optional string key = 1;</code>
     * @return The bytes for key.
     */
    com.google.protobuf.ByteString
        getKeyBytes();

    /**
     * <code>optional bytes value = 2;</code>
     * @return Whether the value field is set.
     */
    boolean hasValue();
    /**
     * <code>optional bytes value = 2;</code>
     * @return The value.
     */
    com.google.protobuf.ByteString getValue();
  }
  /**
   * Protobuf type {@code doris.segment_v2.MetadataPairPB}
   */
  public static final class MetadataPairPB extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:doris.segment_v2.MetadataPairPB)
      MetadataPairPBOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use MetadataPairPB.newBuilder() to construct.
    private MetadataPairPB(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private MetadataPairPB() {
      key_ = "";
      value_ = com.google.protobuf.ByteString.EMPTY;
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_MetadataPairPB_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_MetadataPairPB_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              doris.segment_v2.SegmentV2.MetadataPairPB.class, doris.segment_v2.SegmentV2.MetadataPairPB.Builder.class);
    }

    private int bitField0_;
    public static final int KEY_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object key_ = "";
    /**
     * <code>optional string key = 1;</code>
     * @return Whether the key field is set.
     */
    @java.lang.Override
    public boolean hasKey() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>optional string key = 1;</code>
     * @return The key.
     */
    @java.lang.Override
    public java.lang.String getKey() {
      java.lang.Object ref = key_;
      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()) {
          key_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string key = 1;</code>
     * @return The bytes for key.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getKeyBytes() {
      java.lang.Object ref = key_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        key_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VALUE_FIELD_NUMBER = 2;
    private com.google.protobuf.ByteString value_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <code>optional bytes value = 2;</code>
     * @return Whether the value field is set.
     */
    @java.lang.Override
    public boolean hasValue() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>optional bytes value = 2;</code>
     * @return The value.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getValue() {
      return value_;
    }

    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 {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, key_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeBytes(2, value_);
      }
      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.GeneratedMessageV3.computeStringSize(1, key_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, value_);
      }
      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 doris.segment_v2.SegmentV2.MetadataPairPB)) {
        return super.equals(obj);
      }
      doris.segment_v2.SegmentV2.MetadataPairPB other = (doris.segment_v2.SegmentV2.MetadataPairPB) obj;

      if (hasKey() != other.hasKey()) return false;
      if (hasKey()) {
        if (!getKey()
            .equals(other.getKey())) return false;
      }
      if (hasValue() != other.hasValue()) return false;
      if (hasValue()) {
        if (!getValue()
            .equals(other.getValue())) 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 (hasKey()) {
        hash = (37 * hash) + KEY_FIELD_NUMBER;
        hash = (53 * hash) + getKey().hashCode();
      }
      if (hasValue()) {
        hash = (37 * hash) + VALUE_FIELD_NUMBER;
        hash = (53 * hash) + getValue().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static doris.segment_v2.SegmentV2.MetadataPairPB parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.MetadataPairPB parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.MetadataPairPB parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.MetadataPairPB parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.MetadataPairPB parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.MetadataPairPB parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.MetadataPairPB parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.segment_v2.SegmentV2.MetadataPairPB 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 doris.segment_v2.SegmentV2.MetadataPairPB parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static doris.segment_v2.SegmentV2.MetadataPairPB 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 doris.segment_v2.SegmentV2.MetadataPairPB parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.segment_v2.SegmentV2.MetadataPairPB 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(doris.segment_v2.SegmentV2.MetadataPairPB 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.segment_v2.MetadataPairPB}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:doris.segment_v2.MetadataPairPB)
        doris.segment_v2.SegmentV2.MetadataPairPBOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_MetadataPairPB_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_MetadataPairPB_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                doris.segment_v2.SegmentV2.MetadataPairPB.class, doris.segment_v2.SegmentV2.MetadataPairPB.Builder.class);
      }

      // Construct using doris.segment_v2.SegmentV2.MetadataPairPB.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        key_ = "";
        value_ = com.google.protobuf.ByteString.EMPTY;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_MetadataPairPB_descriptor;
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.MetadataPairPB getDefaultInstanceForType() {
        return doris.segment_v2.SegmentV2.MetadataPairPB.getDefaultInstance();
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.MetadataPairPB build() {
        doris.segment_v2.SegmentV2.MetadataPairPB result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.MetadataPairPB buildPartial() {
        doris.segment_v2.SegmentV2.MetadataPairPB result = new doris.segment_v2.SegmentV2.MetadataPairPB(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(doris.segment_v2.SegmentV2.MetadataPairPB result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.key_ = key_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.value_ = value_;
          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 doris.segment_v2.SegmentV2.MetadataPairPB) {
          return mergeFrom((doris.segment_v2.SegmentV2.MetadataPairPB)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(doris.segment_v2.SegmentV2.MetadataPairPB other) {
        if (other == doris.segment_v2.SegmentV2.MetadataPairPB.getDefaultInstance()) return this;
        if (other.hasKey()) {
          key_ = other.key_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasValue()) {
          setValue(other.getValue());
        }
        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: {
                key_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                value_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              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 java.lang.Object key_ = "";
      /**
       * <code>optional string key = 1;</code>
       * @return Whether the key field is set.
       */
      public boolean hasKey() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional string key = 1;</code>
       * @return The key.
       */
      public java.lang.String getKey() {
        java.lang.Object ref = key_;
        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()) {
            key_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string key = 1;</code>
       * @return The bytes for key.
       */
      public com.google.protobuf.ByteString
          getKeyBytes() {
        java.lang.Object ref = key_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          key_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string key = 1;</code>
       * @param value The key to set.
       * @return This builder for chaining.
       */
      public Builder setKey(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        key_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <code>optional string key = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearKey() {
        key_ = getDefaultInstance().getKey();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>optional string key = 1;</code>
       * @param value The bytes for key to set.
       * @return This builder for chaining.
       */
      public Builder setKeyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        key_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString value_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>optional bytes value = 2;</code>
       * @return Whether the value field is set.
       */
      @java.lang.Override
      public boolean hasValue() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional bytes value = 2;</code>
       * @return The value.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getValue() {
        return value_;
      }
      /**
       * <code>optional bytes value = 2;</code>
       * @param value The value to set.
       * @return This builder for chaining.
       */
      public Builder setValue(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        value_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>optional bytes value = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearValue() {
        bitField0_ = (bitField0_ & ~0x00000002);
        value_ = getDefaultInstance().getValue();
        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.segment_v2.MetadataPairPB)
    }

    // @@protoc_insertion_point(class_scope:doris.segment_v2.MetadataPairPB)
    private static final doris.segment_v2.SegmentV2.MetadataPairPB DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new doris.segment_v2.SegmentV2.MetadataPairPB();
    }

    public static doris.segment_v2.SegmentV2.MetadataPairPB getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<MetadataPairPB>
        PARSER = new com.google.protobuf.AbstractParser<MetadataPairPB>() {
      @java.lang.Override
      public MetadataPairPB 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<MetadataPairPB> parser() {
      return PARSER;
    }

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

    @java.lang.Override
    public doris.segment_v2.SegmentV2.MetadataPairPB getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DataPageFooterPBOrBuilder extends
      // @@protoc_insertion_point(interface_extends:doris.segment_v2.DataPageFooterPB)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * required: ordinal of the first value
     * </pre>
     *
     * <code>optional uint64 first_ordinal = 1;</code>
     * @return Whether the firstOrdinal field is set.
     */
    boolean hasFirstOrdinal();
    /**
     * <pre>
     * required: ordinal of the first value
     * </pre>
     *
     * <code>optional uint64 first_ordinal = 1;</code>
     * @return The firstOrdinal.
     */
    long getFirstOrdinal();

    /**
     * <pre>
     * required: number of values, including NULLs
     * </pre>
     *
     * <code>optional uint64 num_values = 2;</code>
     * @return Whether the numValues field is set.
     */
    boolean hasNumValues();
    /**
     * <pre>
     * required: number of values, including NULLs
     * </pre>
     *
     * <code>optional uint64 num_values = 2;</code>
     * @return The numValues.
     */
    long getNumValues();

    /**
     * <pre>
     * required: size of nullmap, 0 if the page doesn't contain NULL
     * </pre>
     *
     * <code>optional uint32 nullmap_size = 3;</code>
     * @return Whether the nullmapSize field is set.
     */
    boolean hasNullmapSize();
    /**
     * <pre>
     * required: size of nullmap, 0 if the page doesn't contain NULL
     * </pre>
     *
     * <code>optional uint32 nullmap_size = 3;</code>
     * @return The nullmapSize.
     */
    int getNullmapSize();

    /**
     * <pre>
     * only for array column
     * Save the offset of next page 
     * </pre>
     *
     * <code>optional uint64 next_array_item_ordinal = 4;</code>
     * @return Whether the nextArrayItemOrdinal field is set.
     */
    boolean hasNextArrayItemOrdinal();
    /**
     * <pre>
     * only for array column
     * Save the offset of next page 
     * </pre>
     *
     * <code>optional uint64 next_array_item_ordinal = 4;</code>
     * @return The nextArrayItemOrdinal.
     */
    long getNextArrayItemOrdinal();
  }
  /**
   * Protobuf type {@code doris.segment_v2.DataPageFooterPB}
   */
  public static final class DataPageFooterPB extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:doris.segment_v2.DataPageFooterPB)
      DataPageFooterPBOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DataPageFooterPB.newBuilder() to construct.
    private DataPageFooterPB(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DataPageFooterPB() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_DataPageFooterPB_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_DataPageFooterPB_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              doris.segment_v2.SegmentV2.DataPageFooterPB.class, doris.segment_v2.SegmentV2.DataPageFooterPB.Builder.class);
    }

    private int bitField0_;
    public static final int FIRST_ORDINAL_FIELD_NUMBER = 1;
    private long firstOrdinal_ = 0L;
    /**
     * <pre>
     * required: ordinal of the first value
     * </pre>
     *
     * <code>optional uint64 first_ordinal = 1;</code>
     * @return Whether the firstOrdinal field is set.
     */
    @java.lang.Override
    public boolean hasFirstOrdinal() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * required: ordinal of the first value
     * </pre>
     *
     * <code>optional uint64 first_ordinal = 1;</code>
     * @return The firstOrdinal.
     */
    @java.lang.Override
    public long getFirstOrdinal() {
      return firstOrdinal_;
    }

    public static final int NUM_VALUES_FIELD_NUMBER = 2;
    private long numValues_ = 0L;
    /**
     * <pre>
     * required: number of values, including NULLs
     * </pre>
     *
     * <code>optional uint64 num_values = 2;</code>
     * @return Whether the numValues field is set.
     */
    @java.lang.Override
    public boolean hasNumValues() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * required: number of values, including NULLs
     * </pre>
     *
     * <code>optional uint64 num_values = 2;</code>
     * @return The numValues.
     */
    @java.lang.Override
    public long getNumValues() {
      return numValues_;
    }

    public static final int NULLMAP_SIZE_FIELD_NUMBER = 3;
    private int nullmapSize_ = 0;
    /**
     * <pre>
     * required: size of nullmap, 0 if the page doesn't contain NULL
     * </pre>
     *
     * <code>optional uint32 nullmap_size = 3;</code>
     * @return Whether the nullmapSize field is set.
     */
    @java.lang.Override
    public boolean hasNullmapSize() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * required: size of nullmap, 0 if the page doesn't contain NULL
     * </pre>
     *
     * <code>optional uint32 nullmap_size = 3;</code>
     * @return The nullmapSize.
     */
    @java.lang.Override
    public int getNullmapSize() {
      return nullmapSize_;
    }

    public static final int NEXT_ARRAY_ITEM_ORDINAL_FIELD_NUMBER = 4;
    private long nextArrayItemOrdinal_ = 0L;
    /**
     * <pre>
     * only for array column
     * Save the offset of next page 
     * </pre>
     *
     * <code>optional uint64 next_array_item_ordinal = 4;</code>
     * @return Whether the nextArrayItemOrdinal field is set.
     */
    @java.lang.Override
    public boolean hasNextArrayItemOrdinal() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * only for array column
     * Save the offset of next page 
     * </pre>
     *
     * <code>optional uint64 next_array_item_ordinal = 4;</code>
     * @return The nextArrayItemOrdinal.
     */
    @java.lang.Override
    public long getNextArrayItemOrdinal() {
      return nextArrayItemOrdinal_;
    }

    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 {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeUInt64(1, firstOrdinal_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeUInt64(2, numValues_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeUInt32(3, nullmapSize_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeUInt64(4, nextArrayItemOrdinal_);
      }
      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
          .computeUInt64Size(1, firstOrdinal_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(2, numValues_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(3, nullmapSize_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(4, nextArrayItemOrdinal_);
      }
      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 doris.segment_v2.SegmentV2.DataPageFooterPB)) {
        return super.equals(obj);
      }
      doris.segment_v2.SegmentV2.DataPageFooterPB other = (doris.segment_v2.SegmentV2.DataPageFooterPB) obj;

      if (hasFirstOrdinal() != other.hasFirstOrdinal()) return false;
      if (hasFirstOrdinal()) {
        if (getFirstOrdinal()
            != other.getFirstOrdinal()) return false;
      }
      if (hasNumValues() != other.hasNumValues()) return false;
      if (hasNumValues()) {
        if (getNumValues()
            != other.getNumValues()) return false;
      }
      if (hasNullmapSize() != other.hasNullmapSize()) return false;
      if (hasNullmapSize()) {
        if (getNullmapSize()
            != other.getNullmapSize()) return false;
      }
      if (hasNextArrayItemOrdinal() != other.hasNextArrayItemOrdinal()) return false;
      if (hasNextArrayItemOrdinal()) {
        if (getNextArrayItemOrdinal()
            != other.getNextArrayItemOrdinal()) 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 (hasFirstOrdinal()) {
        hash = (37 * hash) + FIRST_ORDINAL_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getFirstOrdinal());
      }
      if (hasNumValues()) {
        hash = (37 * hash) + NUM_VALUES_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getNumValues());
      }
      if (hasNullmapSize()) {
        hash = (37 * hash) + NULLMAP_SIZE_FIELD_NUMBER;
        hash = (53 * hash) + getNullmapSize();
      }
      if (hasNextArrayItemOrdinal()) {
        hash = (37 * hash) + NEXT_ARRAY_ITEM_ORDINAL_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getNextArrayItemOrdinal());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static doris.segment_v2.SegmentV2.DataPageFooterPB parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.DataPageFooterPB parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.DataPageFooterPB parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.DataPageFooterPB parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.DataPageFooterPB parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.DataPageFooterPB parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.DataPageFooterPB parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.segment_v2.SegmentV2.DataPageFooterPB 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 doris.segment_v2.SegmentV2.DataPageFooterPB parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static doris.segment_v2.SegmentV2.DataPageFooterPB 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 doris.segment_v2.SegmentV2.DataPageFooterPB parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.segment_v2.SegmentV2.DataPageFooterPB 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(doris.segment_v2.SegmentV2.DataPageFooterPB 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.segment_v2.DataPageFooterPB}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:doris.segment_v2.DataPageFooterPB)
        doris.segment_v2.SegmentV2.DataPageFooterPBOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_DataPageFooterPB_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_DataPageFooterPB_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                doris.segment_v2.SegmentV2.DataPageFooterPB.class, doris.segment_v2.SegmentV2.DataPageFooterPB.Builder.class);
      }

      // Construct using doris.segment_v2.SegmentV2.DataPageFooterPB.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        firstOrdinal_ = 0L;
        numValues_ = 0L;
        nullmapSize_ = 0;
        nextArrayItemOrdinal_ = 0L;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_DataPageFooterPB_descriptor;
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.DataPageFooterPB getDefaultInstanceForType() {
        return doris.segment_v2.SegmentV2.DataPageFooterPB.getDefaultInstance();
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.DataPageFooterPB build() {
        doris.segment_v2.SegmentV2.DataPageFooterPB result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.DataPageFooterPB buildPartial() {
        doris.segment_v2.SegmentV2.DataPageFooterPB result = new doris.segment_v2.SegmentV2.DataPageFooterPB(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(doris.segment_v2.SegmentV2.DataPageFooterPB result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.firstOrdinal_ = firstOrdinal_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.numValues_ = numValues_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.nullmapSize_ = nullmapSize_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.nextArrayItemOrdinal_ = nextArrayItemOrdinal_;
          to_bitField0_ |= 0x00000008;
        }
        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 doris.segment_v2.SegmentV2.DataPageFooterPB) {
          return mergeFrom((doris.segment_v2.SegmentV2.DataPageFooterPB)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(doris.segment_v2.SegmentV2.DataPageFooterPB other) {
        if (other == doris.segment_v2.SegmentV2.DataPageFooterPB.getDefaultInstance()) return this;
        if (other.hasFirstOrdinal()) {
          setFirstOrdinal(other.getFirstOrdinal());
        }
        if (other.hasNumValues()) {
          setNumValues(other.getNumValues());
        }
        if (other.hasNullmapSize()) {
          setNullmapSize(other.getNullmapSize());
        }
        if (other.hasNextArrayItemOrdinal()) {
          setNextArrayItemOrdinal(other.getNextArrayItemOrdinal());
        }
        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 8: {
                firstOrdinal_ = input.readUInt64();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 16: {
                numValues_ = input.readUInt64();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 24: {
                nullmapSize_ = input.readUInt32();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 32: {
                nextArrayItemOrdinal_ = input.readUInt64();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
              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 firstOrdinal_ ;
      /**
       * <pre>
       * required: ordinal of the first value
       * </pre>
       *
       * <code>optional uint64 first_ordinal = 1;</code>
       * @return Whether the firstOrdinal field is set.
       */
      @java.lang.Override
      public boolean hasFirstOrdinal() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * required: ordinal of the first value
       * </pre>
       *
       * <code>optional uint64 first_ordinal = 1;</code>
       * @return The firstOrdinal.
       */
      @java.lang.Override
      public long getFirstOrdinal() {
        return firstOrdinal_;
      }
      /**
       * <pre>
       * required: ordinal of the first value
       * </pre>
       *
       * <code>optional uint64 first_ordinal = 1;</code>
       * @param value The firstOrdinal to set.
       * @return This builder for chaining.
       */
      public Builder setFirstOrdinal(long value) {

        firstOrdinal_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * required: ordinal of the first value
       * </pre>
       *
       * <code>optional uint64 first_ordinal = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearFirstOrdinal() {
        bitField0_ = (bitField0_ & ~0x00000001);
        firstOrdinal_ = 0L;
        onChanged();
        return this;
      }

      private long numValues_ ;
      /**
       * <pre>
       * required: number of values, including NULLs
       * </pre>
       *
       * <code>optional uint64 num_values = 2;</code>
       * @return Whether the numValues field is set.
       */
      @java.lang.Override
      public boolean hasNumValues() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * required: number of values, including NULLs
       * </pre>
       *
       * <code>optional uint64 num_values = 2;</code>
       * @return The numValues.
       */
      @java.lang.Override
      public long getNumValues() {
        return numValues_;
      }
      /**
       * <pre>
       * required: number of values, including NULLs
       * </pre>
       *
       * <code>optional uint64 num_values = 2;</code>
       * @param value The numValues to set.
       * @return This builder for chaining.
       */
      public Builder setNumValues(long value) {

        numValues_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * required: number of values, including NULLs
       * </pre>
       *
       * <code>optional uint64 num_values = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearNumValues() {
        bitField0_ = (bitField0_ & ~0x00000002);
        numValues_ = 0L;
        onChanged();
        return this;
      }

      private int nullmapSize_ ;
      /**
       * <pre>
       * required: size of nullmap, 0 if the page doesn't contain NULL
       * </pre>
       *
       * <code>optional uint32 nullmap_size = 3;</code>
       * @return Whether the nullmapSize field is set.
       */
      @java.lang.Override
      public boolean hasNullmapSize() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * required: size of nullmap, 0 if the page doesn't contain NULL
       * </pre>
       *
       * <code>optional uint32 nullmap_size = 3;</code>
       * @return The nullmapSize.
       */
      @java.lang.Override
      public int getNullmapSize() {
        return nullmapSize_;
      }
      /**
       * <pre>
       * required: size of nullmap, 0 if the page doesn't contain NULL
       * </pre>
       *
       * <code>optional uint32 nullmap_size = 3;</code>
       * @param value The nullmapSize to set.
       * @return This builder for chaining.
       */
      public Builder setNullmapSize(int value) {

        nullmapSize_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * required: size of nullmap, 0 if the page doesn't contain NULL
       * </pre>
       *
       * <code>optional uint32 nullmap_size = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearNullmapSize() {
        bitField0_ = (bitField0_ & ~0x00000004);
        nullmapSize_ = 0;
        onChanged();
        return this;
      }

      private long nextArrayItemOrdinal_ ;
      /**
       * <pre>
       * only for array column
       * Save the offset of next page 
       * </pre>
       *
       * <code>optional uint64 next_array_item_ordinal = 4;</code>
       * @return Whether the nextArrayItemOrdinal field is set.
       */
      @java.lang.Override
      public boolean hasNextArrayItemOrdinal() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * only for array column
       * Save the offset of next page 
       * </pre>
       *
       * <code>optional uint64 next_array_item_ordinal = 4;</code>
       * @return The nextArrayItemOrdinal.
       */
      @java.lang.Override
      public long getNextArrayItemOrdinal() {
        return nextArrayItemOrdinal_;
      }
      /**
       * <pre>
       * only for array column
       * Save the offset of next page 
       * </pre>
       *
       * <code>optional uint64 next_array_item_ordinal = 4;</code>
       * @param value The nextArrayItemOrdinal to set.
       * @return This builder for chaining.
       */
      public Builder setNextArrayItemOrdinal(long value) {

        nextArrayItemOrdinal_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * only for array column
       * Save the offset of next page 
       * </pre>
       *
       * <code>optional uint64 next_array_item_ordinal = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearNextArrayItemOrdinal() {
        bitField0_ = (bitField0_ & ~0x00000008);
        nextArrayItemOrdinal_ = 0L;
        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.segment_v2.DataPageFooterPB)
    }

    // @@protoc_insertion_point(class_scope:doris.segment_v2.DataPageFooterPB)
    private static final doris.segment_v2.SegmentV2.DataPageFooterPB DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new doris.segment_v2.SegmentV2.DataPageFooterPB();
    }

    public static doris.segment_v2.SegmentV2.DataPageFooterPB getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<DataPageFooterPB>
        PARSER = new com.google.protobuf.AbstractParser<DataPageFooterPB>() {
      @java.lang.Override
      public DataPageFooterPB 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<DataPageFooterPB> parser() {
      return PARSER;
    }

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

    @java.lang.Override
    public doris.segment_v2.SegmentV2.DataPageFooterPB getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface IndexPageFooterPBOrBuilder extends
      // @@protoc_insertion_point(interface_extends:doris.segment_v2.IndexPageFooterPB)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * required: number of index entries in this page
     * </pre>
     *
     * <code>optional uint32 num_entries = 1;</code>
     * @return Whether the numEntries field is set.
     */
    boolean hasNumEntries();
    /**
     * <pre>
     * required: number of index entries in this page
     * </pre>
     *
     * <code>optional uint32 num_entries = 1;</code>
     * @return The numEntries.
     */
    int getNumEntries();

    /**
     * <pre>
     * required: type of the index page
     * </pre>
     *
     * <code>optional .doris.segment_v2.IndexPageFooterPB.Type type = 2;</code>
     * @return Whether the type field is set.
     */
    boolean hasType();
    /**
     * <pre>
     * required: type of the index page
     * </pre>
     *
     * <code>optional .doris.segment_v2.IndexPageFooterPB.Type type = 2;</code>
     * @return The type.
     */
    doris.segment_v2.SegmentV2.IndexPageFooterPB.Type getType();
  }
  /**
   * Protobuf type {@code doris.segment_v2.IndexPageFooterPB}
   */
  public static final class IndexPageFooterPB extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:doris.segment_v2.IndexPageFooterPB)
      IndexPageFooterPBOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use IndexPageFooterPB.newBuilder() to construct.
    private IndexPageFooterPB(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private IndexPageFooterPB() {
      type_ = 0;
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_IndexPageFooterPB_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_IndexPageFooterPB_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              doris.segment_v2.SegmentV2.IndexPageFooterPB.class, doris.segment_v2.SegmentV2.IndexPageFooterPB.Builder.class);
    }

    /**
     * Protobuf enum {@code doris.segment_v2.IndexPageFooterPB.Type}
     */
    public enum Type
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNKNOWN_INDEX_PAGE_TYPE = 0;</code>
       */
      UNKNOWN_INDEX_PAGE_TYPE(0),
      /**
       * <code>LEAF = 1;</code>
       */
      LEAF(1),
      /**
       * <code>INTERNAL = 2;</code>
       */
      INTERNAL(2),
      ;

      /**
       * <code>UNKNOWN_INDEX_PAGE_TYPE = 0;</code>
       */
      public static final int UNKNOWN_INDEX_PAGE_TYPE_VALUE = 0;
      /**
       * <code>LEAF = 1;</code>
       */
      public static final int LEAF_VALUE = 1;
      /**
       * <code>INTERNAL = 2;</code>
       */
      public static final int INTERNAL_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 Type 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 Type forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN_INDEX_PAGE_TYPE;
          case 1: return LEAF;
          case 2: return INTERNAL;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Type>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Type> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Type>() {
              public Type findValueByNumber(int number) {
                return Type.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 doris.segment_v2.SegmentV2.IndexPageFooterPB.getDescriptor().getEnumTypes().get(0);
      }

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

      public static Type 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 Type(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:doris.segment_v2.IndexPageFooterPB.Type)
    }

    private int bitField0_;
    public static final int NUM_ENTRIES_FIELD_NUMBER = 1;
    private int numEntries_ = 0;
    /**
     * <pre>
     * required: number of index entries in this page
     * </pre>
     *
     * <code>optional uint32 num_entries = 1;</code>
     * @return Whether the numEntries field is set.
     */
    @java.lang.Override
    public boolean hasNumEntries() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * required: number of index entries in this page
     * </pre>
     *
     * <code>optional uint32 num_entries = 1;</code>
     * @return The numEntries.
     */
    @java.lang.Override
    public int getNumEntries() {
      return numEntries_;
    }

    public static final int TYPE_FIELD_NUMBER = 2;
    private int type_ = 0;
    /**
     * <pre>
     * required: type of the index page
     * </pre>
     *
     * <code>optional .doris.segment_v2.IndexPageFooterPB.Type type = 2;</code>
     * @return Whether the type field is set.
     */
    @java.lang.Override public boolean hasType() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * required: type of the index page
     * </pre>
     *
     * <code>optional .doris.segment_v2.IndexPageFooterPB.Type type = 2;</code>
     * @return The type.
     */
    @java.lang.Override public doris.segment_v2.SegmentV2.IndexPageFooterPB.Type getType() {
      doris.segment_v2.SegmentV2.IndexPageFooterPB.Type result = doris.segment_v2.SegmentV2.IndexPageFooterPB.Type.forNumber(type_);
      return result == null ? doris.segment_v2.SegmentV2.IndexPageFooterPB.Type.UNKNOWN_INDEX_PAGE_TYPE : 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;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeUInt32(1, numEntries_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeEnum(2, type_);
      }
      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
          .computeUInt32Size(1, numEntries_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(2, type_);
      }
      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 doris.segment_v2.SegmentV2.IndexPageFooterPB)) {
        return super.equals(obj);
      }
      doris.segment_v2.SegmentV2.IndexPageFooterPB other = (doris.segment_v2.SegmentV2.IndexPageFooterPB) obj;

      if (hasNumEntries() != other.hasNumEntries()) return false;
      if (hasNumEntries()) {
        if (getNumEntries()
            != other.getNumEntries()) return false;
      }
      if (hasType() != other.hasType()) return false;
      if (hasType()) {
        if (type_ != other.type_) 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 (hasNumEntries()) {
        hash = (37 * hash) + NUM_ENTRIES_FIELD_NUMBER;
        hash = (53 * hash) + getNumEntries();
      }
      if (hasType()) {
        hash = (37 * hash) + TYPE_FIELD_NUMBER;
        hash = (53 * hash) + type_;
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static doris.segment_v2.SegmentV2.IndexPageFooterPB parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.IndexPageFooterPB parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.IndexPageFooterPB parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.IndexPageFooterPB parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.IndexPageFooterPB parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.IndexPageFooterPB parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.IndexPageFooterPB parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.segment_v2.SegmentV2.IndexPageFooterPB 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 doris.segment_v2.SegmentV2.IndexPageFooterPB parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static doris.segment_v2.SegmentV2.IndexPageFooterPB 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 doris.segment_v2.SegmentV2.IndexPageFooterPB parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.segment_v2.SegmentV2.IndexPageFooterPB 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(doris.segment_v2.SegmentV2.IndexPageFooterPB 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.segment_v2.IndexPageFooterPB}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:doris.segment_v2.IndexPageFooterPB)
        doris.segment_v2.SegmentV2.IndexPageFooterPBOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_IndexPageFooterPB_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_IndexPageFooterPB_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                doris.segment_v2.SegmentV2.IndexPageFooterPB.class, doris.segment_v2.SegmentV2.IndexPageFooterPB.Builder.class);
      }

      // Construct using doris.segment_v2.SegmentV2.IndexPageFooterPB.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        numEntries_ = 0;
        type_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_IndexPageFooterPB_descriptor;
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.IndexPageFooterPB getDefaultInstanceForType() {
        return doris.segment_v2.SegmentV2.IndexPageFooterPB.getDefaultInstance();
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.IndexPageFooterPB build() {
        doris.segment_v2.SegmentV2.IndexPageFooterPB result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.IndexPageFooterPB buildPartial() {
        doris.segment_v2.SegmentV2.IndexPageFooterPB result = new doris.segment_v2.SegmentV2.IndexPageFooterPB(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(doris.segment_v2.SegmentV2.IndexPageFooterPB result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.numEntries_ = numEntries_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.type_ = type_;
          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 doris.segment_v2.SegmentV2.IndexPageFooterPB) {
          return mergeFrom((doris.segment_v2.SegmentV2.IndexPageFooterPB)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(doris.segment_v2.SegmentV2.IndexPageFooterPB other) {
        if (other == doris.segment_v2.SegmentV2.IndexPageFooterPB.getDefaultInstance()) return this;
        if (other.hasNumEntries()) {
          setNumEntries(other.getNumEntries());
        }
        if (other.hasType()) {
          setType(other.getType());
        }
        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 8: {
                numEntries_ = input.readUInt32();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 16: {
                int tmpRaw = input.readEnum();
                doris.segment_v2.SegmentV2.IndexPageFooterPB.Type tmpValue =
                    doris.segment_v2.SegmentV2.IndexPageFooterPB.Type.forNumber(tmpRaw);
                if (tmpValue == null) {
                  mergeUnknownVarintField(2, tmpRaw);
                } else {
                  type_ = tmpRaw;
                  bitField0_ |= 0x00000002;
                }
                break;
              } // case 16
              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 numEntries_ ;
      /**
       * <pre>
       * required: number of index entries in this page
       * </pre>
       *
       * <code>optional uint32 num_entries = 1;</code>
       * @return Whether the numEntries field is set.
       */
      @java.lang.Override
      public boolean hasNumEntries() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * required: number of index entries in this page
       * </pre>
       *
       * <code>optional uint32 num_entries = 1;</code>
       * @return The numEntries.
       */
      @java.lang.Override
      public int getNumEntries() {
        return numEntries_;
      }
      /**
       * <pre>
       * required: number of index entries in this page
       * </pre>
       *
       * <code>optional uint32 num_entries = 1;</code>
       * @param value The numEntries to set.
       * @return This builder for chaining.
       */
      public Builder setNumEntries(int value) {

        numEntries_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * required: number of index entries in this page
       * </pre>
       *
       * <code>optional uint32 num_entries = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearNumEntries() {
        bitField0_ = (bitField0_ & ~0x00000001);
        numEntries_ = 0;
        onChanged();
        return this;
      }

      private int type_ = 0;
      /**
       * <pre>
       * required: type of the index page
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexPageFooterPB.Type type = 2;</code>
       * @return Whether the type field is set.
       */
      @java.lang.Override public boolean hasType() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * required: type of the index page
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexPageFooterPB.Type type = 2;</code>
       * @return The type.
       */
      @java.lang.Override
      public doris.segment_v2.SegmentV2.IndexPageFooterPB.Type getType() {
        doris.segment_v2.SegmentV2.IndexPageFooterPB.Type result = doris.segment_v2.SegmentV2.IndexPageFooterPB.Type.forNumber(type_);
        return result == null ? doris.segment_v2.SegmentV2.IndexPageFooterPB.Type.UNKNOWN_INDEX_PAGE_TYPE : result;
      }
      /**
       * <pre>
       * required: type of the index page
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexPageFooterPB.Type type = 2;</code>
       * @param value The type to set.
       * @return This builder for chaining.
       */
      public Builder setType(doris.segment_v2.SegmentV2.IndexPageFooterPB.Type value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000002;
        type_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * required: type of the index page
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexPageFooterPB.Type type = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearType() {
        bitField0_ = (bitField0_ & ~0x00000002);
        type_ = 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.segment_v2.IndexPageFooterPB)
    }

    // @@protoc_insertion_point(class_scope:doris.segment_v2.IndexPageFooterPB)
    private static final doris.segment_v2.SegmentV2.IndexPageFooterPB DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new doris.segment_v2.SegmentV2.IndexPageFooterPB();
    }

    public static doris.segment_v2.SegmentV2.IndexPageFooterPB getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<IndexPageFooterPB>
        PARSER = new com.google.protobuf.AbstractParser<IndexPageFooterPB>() {
      @java.lang.Override
      public IndexPageFooterPB 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<IndexPageFooterPB> parser() {
      return PARSER;
    }

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

    @java.lang.Override
    public doris.segment_v2.SegmentV2.IndexPageFooterPB getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DictPageFooterPBOrBuilder extends
      // @@protoc_insertion_point(interface_extends:doris.segment_v2.DictPageFooterPB)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * required: encoding for dictionary
     * </pre>
     *
     * <code>optional .doris.segment_v2.EncodingTypePB encoding = 1;</code>
     * @return Whether the encoding field is set.
     */
    boolean hasEncoding();
    /**
     * <pre>
     * required: encoding for dictionary
     * </pre>
     *
     * <code>optional .doris.segment_v2.EncodingTypePB encoding = 1;</code>
     * @return The encoding.
     */
    doris.segment_v2.SegmentV2.EncodingTypePB getEncoding();
  }
  /**
   * Protobuf type {@code doris.segment_v2.DictPageFooterPB}
   */
  public static final class DictPageFooterPB extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:doris.segment_v2.DictPageFooterPB)
      DictPageFooterPBOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DictPageFooterPB.newBuilder() to construct.
    private DictPageFooterPB(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DictPageFooterPB() {
      encoding_ = 0;
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_DictPageFooterPB_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_DictPageFooterPB_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              doris.segment_v2.SegmentV2.DictPageFooterPB.class, doris.segment_v2.SegmentV2.DictPageFooterPB.Builder.class);
    }

    private int bitField0_;
    public static final int ENCODING_FIELD_NUMBER = 1;
    private int encoding_ = 0;
    /**
     * <pre>
     * required: encoding for dictionary
     * </pre>
     *
     * <code>optional .doris.segment_v2.EncodingTypePB encoding = 1;</code>
     * @return Whether the encoding field is set.
     */
    @java.lang.Override public boolean hasEncoding() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * required: encoding for dictionary
     * </pre>
     *
     * <code>optional .doris.segment_v2.EncodingTypePB encoding = 1;</code>
     * @return The encoding.
     */
    @java.lang.Override public doris.segment_v2.SegmentV2.EncodingTypePB getEncoding() {
      doris.segment_v2.SegmentV2.EncodingTypePB result = doris.segment_v2.SegmentV2.EncodingTypePB.forNumber(encoding_);
      return result == null ? doris.segment_v2.SegmentV2.EncodingTypePB.UNKNOWN_ENCODING : 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;

      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, encoding_);
      }
      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, encoding_);
      }
      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 doris.segment_v2.SegmentV2.DictPageFooterPB)) {
        return super.equals(obj);
      }
      doris.segment_v2.SegmentV2.DictPageFooterPB other = (doris.segment_v2.SegmentV2.DictPageFooterPB) obj;

      if (hasEncoding() != other.hasEncoding()) return false;
      if (hasEncoding()) {
        if (encoding_ != other.encoding_) 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 (hasEncoding()) {
        hash = (37 * hash) + ENCODING_FIELD_NUMBER;
        hash = (53 * hash) + encoding_;
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static doris.segment_v2.SegmentV2.DictPageFooterPB parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.DictPageFooterPB parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.DictPageFooterPB parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.DictPageFooterPB parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.DictPageFooterPB parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.DictPageFooterPB parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.DictPageFooterPB parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.segment_v2.SegmentV2.DictPageFooterPB 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 doris.segment_v2.SegmentV2.DictPageFooterPB parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static doris.segment_v2.SegmentV2.DictPageFooterPB 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 doris.segment_v2.SegmentV2.DictPageFooterPB parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.segment_v2.SegmentV2.DictPageFooterPB 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(doris.segment_v2.SegmentV2.DictPageFooterPB 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.segment_v2.DictPageFooterPB}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:doris.segment_v2.DictPageFooterPB)
        doris.segment_v2.SegmentV2.DictPageFooterPBOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_DictPageFooterPB_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_DictPageFooterPB_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                doris.segment_v2.SegmentV2.DictPageFooterPB.class, doris.segment_v2.SegmentV2.DictPageFooterPB.Builder.class);
      }

      // Construct using doris.segment_v2.SegmentV2.DictPageFooterPB.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        encoding_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_DictPageFooterPB_descriptor;
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.DictPageFooterPB getDefaultInstanceForType() {
        return doris.segment_v2.SegmentV2.DictPageFooterPB.getDefaultInstance();
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.DictPageFooterPB build() {
        doris.segment_v2.SegmentV2.DictPageFooterPB result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.DictPageFooterPB buildPartial() {
        doris.segment_v2.SegmentV2.DictPageFooterPB result = new doris.segment_v2.SegmentV2.DictPageFooterPB(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(doris.segment_v2.SegmentV2.DictPageFooterPB result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.encoding_ = encoding_;
          to_bitField0_ |= 0x00000001;
        }
        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 doris.segment_v2.SegmentV2.DictPageFooterPB) {
          return mergeFrom((doris.segment_v2.SegmentV2.DictPageFooterPB)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(doris.segment_v2.SegmentV2.DictPageFooterPB other) {
        if (other == doris.segment_v2.SegmentV2.DictPageFooterPB.getDefaultInstance()) return this;
        if (other.hasEncoding()) {
          setEncoding(other.getEncoding());
        }
        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 8: {
                int tmpRaw = input.readEnum();
                doris.segment_v2.SegmentV2.EncodingTypePB tmpValue =
                    doris.segment_v2.SegmentV2.EncodingTypePB.forNumber(tmpRaw);
                if (tmpValue == null) {
                  mergeUnknownVarintField(1, tmpRaw);
                } else {
                  encoding_ = tmpRaw;
                  bitField0_ |= 0x00000001;
                }
                break;
              } // case 8
              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 encoding_ = 0;
      /**
       * <pre>
       * required: encoding for dictionary
       * </pre>
       *
       * <code>optional .doris.segment_v2.EncodingTypePB encoding = 1;</code>
       * @return Whether the encoding field is set.
       */
      @java.lang.Override public boolean hasEncoding() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * required: encoding for dictionary
       * </pre>
       *
       * <code>optional .doris.segment_v2.EncodingTypePB encoding = 1;</code>
       * @return The encoding.
       */
      @java.lang.Override
      public doris.segment_v2.SegmentV2.EncodingTypePB getEncoding() {
        doris.segment_v2.SegmentV2.EncodingTypePB result = doris.segment_v2.SegmentV2.EncodingTypePB.forNumber(encoding_);
        return result == null ? doris.segment_v2.SegmentV2.EncodingTypePB.UNKNOWN_ENCODING : result;
      }
      /**
       * <pre>
       * required: encoding for dictionary
       * </pre>
       *
       * <code>optional .doris.segment_v2.EncodingTypePB encoding = 1;</code>
       * @param value The encoding to set.
       * @return This builder for chaining.
       */
      public Builder setEncoding(doris.segment_v2.SegmentV2.EncodingTypePB value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        encoding_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * required: encoding for dictionary
       * </pre>
       *
       * <code>optional .doris.segment_v2.EncodingTypePB encoding = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearEncoding() {
        bitField0_ = (bitField0_ & ~0x00000001);
        encoding_ = 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.segment_v2.DictPageFooterPB)
    }

    // @@protoc_insertion_point(class_scope:doris.segment_v2.DictPageFooterPB)
    private static final doris.segment_v2.SegmentV2.DictPageFooterPB DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new doris.segment_v2.SegmentV2.DictPageFooterPB();
    }

    public static doris.segment_v2.SegmentV2.DictPageFooterPB getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<DictPageFooterPB>
        PARSER = new com.google.protobuf.AbstractParser<DictPageFooterPB>() {
      @java.lang.Override
      public DictPageFooterPB 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<DictPageFooterPB> parser() {
      return PARSER;
    }

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

    @java.lang.Override
    public doris.segment_v2.SegmentV2.DictPageFooterPB getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ShortKeyFooterPBOrBuilder extends
      // @@protoc_insertion_point(interface_extends:doris.segment_v2.ShortKeyFooterPB)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * How many index item in this index.
     * </pre>
     *
     * <code>optional uint32 num_items = 1;</code>
     * @return Whether the numItems field is set.
     */
    boolean hasNumItems();
    /**
     * <pre>
     * How many index item in this index.
     * </pre>
     *
     * <code>optional uint32 num_items = 1;</code>
     * @return The numItems.
     */
    int getNumItems();

    /**
     * <pre>
     * The total bytes occupied by the index key
     * </pre>
     *
     * <code>optional uint32 key_bytes = 2;</code>
     * @return Whether the keyBytes field is set.
     */
    boolean hasKeyBytes();
    /**
     * <pre>
     * The total bytes occupied by the index key
     * </pre>
     *
     * <code>optional uint32 key_bytes = 2;</code>
     * @return The keyBytes.
     */
    int getKeyBytes();

    /**
     * <pre>
     * The total bytes occupied by the key offsets
     * </pre>
     *
     * <code>optional uint32 offset_bytes = 3;</code>
     * @return Whether the offsetBytes field is set.
     */
    boolean hasOffsetBytes();
    /**
     * <pre>
     * The total bytes occupied by the key offsets
     * </pre>
     *
     * <code>optional uint32 offset_bytes = 3;</code>
     * @return The offsetBytes.
     */
    int getOffsetBytes();

    /**
     * <pre>
     * Segment id which this index is belong to 
     * </pre>
     *
     * <code>optional uint32 segment_id = 4;</code>
     * @return Whether the segmentId field is set.
     */
    boolean hasSegmentId();
    /**
     * <pre>
     * Segment id which this index is belong to 
     * </pre>
     *
     * <code>optional uint32 segment_id = 4;</code>
     * @return The segmentId.
     */
    int getSegmentId();

    /**
     * <pre>
     * number rows in each block
     * </pre>
     *
     * <code>optional uint32 num_rows_per_block = 5;</code>
     * @return Whether the numRowsPerBlock field is set.
     */
    boolean hasNumRowsPerBlock();
    /**
     * <pre>
     * number rows in each block
     * </pre>
     *
     * <code>optional uint32 num_rows_per_block = 5;</code>
     * @return The numRowsPerBlock.
     */
    int getNumRowsPerBlock();

    /**
     * <pre>
     * How many rows in this segment
     * </pre>
     *
     * <code>optional uint32 num_segment_rows = 6;</code>
     * @return Whether the numSegmentRows field is set.
     */
    boolean hasNumSegmentRows();
    /**
     * <pre>
     * How many rows in this segment
     * </pre>
     *
     * <code>optional uint32 num_segment_rows = 6;</code>
     * @return The numSegmentRows.
     */
    int getNumSegmentRows();
  }
  /**
   * Protobuf type {@code doris.segment_v2.ShortKeyFooterPB}
   */
  public static final class ShortKeyFooterPB extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:doris.segment_v2.ShortKeyFooterPB)
      ShortKeyFooterPBOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ShortKeyFooterPB.newBuilder() to construct.
    private ShortKeyFooterPB(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ShortKeyFooterPB() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_ShortKeyFooterPB_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_ShortKeyFooterPB_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              doris.segment_v2.SegmentV2.ShortKeyFooterPB.class, doris.segment_v2.SegmentV2.ShortKeyFooterPB.Builder.class);
    }

    private int bitField0_;
    public static final int NUM_ITEMS_FIELD_NUMBER = 1;
    private int numItems_ = 0;
    /**
     * <pre>
     * How many index item in this index.
     * </pre>
     *
     * <code>optional uint32 num_items = 1;</code>
     * @return Whether the numItems field is set.
     */
    @java.lang.Override
    public boolean hasNumItems() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * How many index item in this index.
     * </pre>
     *
     * <code>optional uint32 num_items = 1;</code>
     * @return The numItems.
     */
    @java.lang.Override
    public int getNumItems() {
      return numItems_;
    }

    public static final int KEY_BYTES_FIELD_NUMBER = 2;
    private int keyBytes_ = 0;
    /**
     * <pre>
     * The total bytes occupied by the index key
     * </pre>
     *
     * <code>optional uint32 key_bytes = 2;</code>
     * @return Whether the keyBytes field is set.
     */
    @java.lang.Override
    public boolean hasKeyBytes() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * The total bytes occupied by the index key
     * </pre>
     *
     * <code>optional uint32 key_bytes = 2;</code>
     * @return The keyBytes.
     */
    @java.lang.Override
    public int getKeyBytes() {
      return keyBytes_;
    }

    public static final int OFFSET_BYTES_FIELD_NUMBER = 3;
    private int offsetBytes_ = 0;
    /**
     * <pre>
     * The total bytes occupied by the key offsets
     * </pre>
     *
     * <code>optional uint32 offset_bytes = 3;</code>
     * @return Whether the offsetBytes field is set.
     */
    @java.lang.Override
    public boolean hasOffsetBytes() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * The total bytes occupied by the key offsets
     * </pre>
     *
     * <code>optional uint32 offset_bytes = 3;</code>
     * @return The offsetBytes.
     */
    @java.lang.Override
    public int getOffsetBytes() {
      return offsetBytes_;
    }

    public static final int SEGMENT_ID_FIELD_NUMBER = 4;
    private int segmentId_ = 0;
    /**
     * <pre>
     * Segment id which this index is belong to 
     * </pre>
     *
     * <code>optional uint32 segment_id = 4;</code>
     * @return Whether the segmentId field is set.
     */
    @java.lang.Override
    public boolean hasSegmentId() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * Segment id which this index is belong to 
     * </pre>
     *
     * <code>optional uint32 segment_id = 4;</code>
     * @return The segmentId.
     */
    @java.lang.Override
    public int getSegmentId() {
      return segmentId_;
    }

    public static final int NUM_ROWS_PER_BLOCK_FIELD_NUMBER = 5;
    private int numRowsPerBlock_ = 0;
    /**
     * <pre>
     * number rows in each block
     * </pre>
     *
     * <code>optional uint32 num_rows_per_block = 5;</code>
     * @return Whether the numRowsPerBlock field is set.
     */
    @java.lang.Override
    public boolean hasNumRowsPerBlock() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * number rows in each block
     * </pre>
     *
     * <code>optional uint32 num_rows_per_block = 5;</code>
     * @return The numRowsPerBlock.
     */
    @java.lang.Override
    public int getNumRowsPerBlock() {
      return numRowsPerBlock_;
    }

    public static final int NUM_SEGMENT_ROWS_FIELD_NUMBER = 6;
    private int numSegmentRows_ = 0;
    /**
     * <pre>
     * How many rows in this segment
     * </pre>
     *
     * <code>optional uint32 num_segment_rows = 6;</code>
     * @return Whether the numSegmentRows field is set.
     */
    @java.lang.Override
    public boolean hasNumSegmentRows() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * How many rows in this segment
     * </pre>
     *
     * <code>optional uint32 num_segment_rows = 6;</code>
     * @return The numSegmentRows.
     */
    @java.lang.Override
    public int getNumSegmentRows() {
      return numSegmentRows_;
    }

    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 {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeUInt32(1, numItems_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeUInt32(2, keyBytes_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeUInt32(3, offsetBytes_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeUInt32(4, segmentId_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeUInt32(5, numRowsPerBlock_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeUInt32(6, numSegmentRows_);
      }
      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
          .computeUInt32Size(1, numItems_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, keyBytes_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(3, offsetBytes_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(4, segmentId_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(5, numRowsPerBlock_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(6, numSegmentRows_);
      }
      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 doris.segment_v2.SegmentV2.ShortKeyFooterPB)) {
        return super.equals(obj);
      }
      doris.segment_v2.SegmentV2.ShortKeyFooterPB other = (doris.segment_v2.SegmentV2.ShortKeyFooterPB) obj;

      if (hasNumItems() != other.hasNumItems()) return false;
      if (hasNumItems()) {
        if (getNumItems()
            != other.getNumItems()) return false;
      }
      if (hasKeyBytes() != other.hasKeyBytes()) return false;
      if (hasKeyBytes()) {
        if (getKeyBytes()
            != other.getKeyBytes()) return false;
      }
      if (hasOffsetBytes() != other.hasOffsetBytes()) return false;
      if (hasOffsetBytes()) {
        if (getOffsetBytes()
            != other.getOffsetBytes()) return false;
      }
      if (hasSegmentId() != other.hasSegmentId()) return false;
      if (hasSegmentId()) {
        if (getSegmentId()
            != other.getSegmentId()) return false;
      }
      if (hasNumRowsPerBlock() != other.hasNumRowsPerBlock()) return false;
      if (hasNumRowsPerBlock()) {
        if (getNumRowsPerBlock()
            != other.getNumRowsPerBlock()) return false;
      }
      if (hasNumSegmentRows() != other.hasNumSegmentRows()) return false;
      if (hasNumSegmentRows()) {
        if (getNumSegmentRows()
            != other.getNumSegmentRows()) 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 (hasNumItems()) {
        hash = (37 * hash) + NUM_ITEMS_FIELD_NUMBER;
        hash = (53 * hash) + getNumItems();
      }
      if (hasKeyBytes()) {
        hash = (37 * hash) + KEY_BYTES_FIELD_NUMBER;
        hash = (53 * hash) + getKeyBytes();
      }
      if (hasOffsetBytes()) {
        hash = (37 * hash) + OFFSET_BYTES_FIELD_NUMBER;
        hash = (53 * hash) + getOffsetBytes();
      }
      if (hasSegmentId()) {
        hash = (37 * hash) + SEGMENT_ID_FIELD_NUMBER;
        hash = (53 * hash) + getSegmentId();
      }
      if (hasNumRowsPerBlock()) {
        hash = (37 * hash) + NUM_ROWS_PER_BLOCK_FIELD_NUMBER;
        hash = (53 * hash) + getNumRowsPerBlock();
      }
      if (hasNumSegmentRows()) {
        hash = (37 * hash) + NUM_SEGMENT_ROWS_FIELD_NUMBER;
        hash = (53 * hash) + getNumSegmentRows();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static doris.segment_v2.SegmentV2.ShortKeyFooterPB parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.ShortKeyFooterPB parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.ShortKeyFooterPB parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.ShortKeyFooterPB parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.ShortKeyFooterPB parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.ShortKeyFooterPB parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.ShortKeyFooterPB parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.segment_v2.SegmentV2.ShortKeyFooterPB 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 doris.segment_v2.SegmentV2.ShortKeyFooterPB parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static doris.segment_v2.SegmentV2.ShortKeyFooterPB 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 doris.segment_v2.SegmentV2.ShortKeyFooterPB parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.segment_v2.SegmentV2.ShortKeyFooterPB 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(doris.segment_v2.SegmentV2.ShortKeyFooterPB 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.segment_v2.ShortKeyFooterPB}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:doris.segment_v2.ShortKeyFooterPB)
        doris.segment_v2.SegmentV2.ShortKeyFooterPBOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_ShortKeyFooterPB_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_ShortKeyFooterPB_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                doris.segment_v2.SegmentV2.ShortKeyFooterPB.class, doris.segment_v2.SegmentV2.ShortKeyFooterPB.Builder.class);
      }

      // Construct using doris.segment_v2.SegmentV2.ShortKeyFooterPB.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        numItems_ = 0;
        keyBytes_ = 0;
        offsetBytes_ = 0;
        segmentId_ = 0;
        numRowsPerBlock_ = 0;
        numSegmentRows_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_ShortKeyFooterPB_descriptor;
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.ShortKeyFooterPB getDefaultInstanceForType() {
        return doris.segment_v2.SegmentV2.ShortKeyFooterPB.getDefaultInstance();
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.ShortKeyFooterPB build() {
        doris.segment_v2.SegmentV2.ShortKeyFooterPB result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.ShortKeyFooterPB buildPartial() {
        doris.segment_v2.SegmentV2.ShortKeyFooterPB result = new doris.segment_v2.SegmentV2.ShortKeyFooterPB(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(doris.segment_v2.SegmentV2.ShortKeyFooterPB result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.numItems_ = numItems_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.keyBytes_ = keyBytes_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.offsetBytes_ = offsetBytes_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.segmentId_ = segmentId_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.numRowsPerBlock_ = numRowsPerBlock_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.numSegmentRows_ = numSegmentRows_;
          to_bitField0_ |= 0x00000020;
        }
        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 doris.segment_v2.SegmentV2.ShortKeyFooterPB) {
          return mergeFrom((doris.segment_v2.SegmentV2.ShortKeyFooterPB)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(doris.segment_v2.SegmentV2.ShortKeyFooterPB other) {
        if (other == doris.segment_v2.SegmentV2.ShortKeyFooterPB.getDefaultInstance()) return this;
        if (other.hasNumItems()) {
          setNumItems(other.getNumItems());
        }
        if (other.hasKeyBytes()) {
          setKeyBytes(other.getKeyBytes());
        }
        if (other.hasOffsetBytes()) {
          setOffsetBytes(other.getOffsetBytes());
        }
        if (other.hasSegmentId()) {
          setSegmentId(other.getSegmentId());
        }
        if (other.hasNumRowsPerBlock()) {
          setNumRowsPerBlock(other.getNumRowsPerBlock());
        }
        if (other.hasNumSegmentRows()) {
          setNumSegmentRows(other.getNumSegmentRows());
        }
        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 8: {
                numItems_ = input.readUInt32();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 16: {
                keyBytes_ = input.readUInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 24: {
                offsetBytes_ = input.readUInt32();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 32: {
                segmentId_ = input.readUInt32();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
              case 40: {
                numRowsPerBlock_ = input.readUInt32();
                bitField0_ |= 0x00000010;
                break;
              } // case 40
              case 48: {
                numSegmentRows_ = input.readUInt32();
                bitField0_ |= 0x00000020;
                break;
              } // case 48
              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 numItems_ ;
      /**
       * <pre>
       * How many index item in this index.
       * </pre>
       *
       * <code>optional uint32 num_items = 1;</code>
       * @return Whether the numItems field is set.
       */
      @java.lang.Override
      public boolean hasNumItems() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * How many index item in this index.
       * </pre>
       *
       * <code>optional uint32 num_items = 1;</code>
       * @return The numItems.
       */
      @java.lang.Override
      public int getNumItems() {
        return numItems_;
      }
      /**
       * <pre>
       * How many index item in this index.
       * </pre>
       *
       * <code>optional uint32 num_items = 1;</code>
       * @param value The numItems to set.
       * @return This builder for chaining.
       */
      public Builder setNumItems(int value) {

        numItems_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * How many index item in this index.
       * </pre>
       *
       * <code>optional uint32 num_items = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearNumItems() {
        bitField0_ = (bitField0_ & ~0x00000001);
        numItems_ = 0;
        onChanged();
        return this;
      }

      private int keyBytes_ ;
      /**
       * <pre>
       * The total bytes occupied by the index key
       * </pre>
       *
       * <code>optional uint32 key_bytes = 2;</code>
       * @return Whether the keyBytes field is set.
       */
      @java.lang.Override
      public boolean hasKeyBytes() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * The total bytes occupied by the index key
       * </pre>
       *
       * <code>optional uint32 key_bytes = 2;</code>
       * @return The keyBytes.
       */
      @java.lang.Override
      public int getKeyBytes() {
        return keyBytes_;
      }
      /**
       * <pre>
       * The total bytes occupied by the index key
       * </pre>
       *
       * <code>optional uint32 key_bytes = 2;</code>
       * @param value The keyBytes to set.
       * @return This builder for chaining.
       */
      public Builder setKeyBytes(int value) {

        keyBytes_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The total bytes occupied by the index key
       * </pre>
       *
       * <code>optional uint32 key_bytes = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearKeyBytes() {
        bitField0_ = (bitField0_ & ~0x00000002);
        keyBytes_ = 0;
        onChanged();
        return this;
      }

      private int offsetBytes_ ;
      /**
       * <pre>
       * The total bytes occupied by the key offsets
       * </pre>
       *
       * <code>optional uint32 offset_bytes = 3;</code>
       * @return Whether the offsetBytes field is set.
       */
      @java.lang.Override
      public boolean hasOffsetBytes() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * The total bytes occupied by the key offsets
       * </pre>
       *
       * <code>optional uint32 offset_bytes = 3;</code>
       * @return The offsetBytes.
       */
      @java.lang.Override
      public int getOffsetBytes() {
        return offsetBytes_;
      }
      /**
       * <pre>
       * The total bytes occupied by the key offsets
       * </pre>
       *
       * <code>optional uint32 offset_bytes = 3;</code>
       * @param value The offsetBytes to set.
       * @return This builder for chaining.
       */
      public Builder setOffsetBytes(int value) {

        offsetBytes_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The total bytes occupied by the key offsets
       * </pre>
       *
       * <code>optional uint32 offset_bytes = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearOffsetBytes() {
        bitField0_ = (bitField0_ & ~0x00000004);
        offsetBytes_ = 0;
        onChanged();
        return this;
      }

      private int segmentId_ ;
      /**
       * <pre>
       * Segment id which this index is belong to 
       * </pre>
       *
       * <code>optional uint32 segment_id = 4;</code>
       * @return Whether the segmentId field is set.
       */
      @java.lang.Override
      public boolean hasSegmentId() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * Segment id which this index is belong to 
       * </pre>
       *
       * <code>optional uint32 segment_id = 4;</code>
       * @return The segmentId.
       */
      @java.lang.Override
      public int getSegmentId() {
        return segmentId_;
      }
      /**
       * <pre>
       * Segment id which this index is belong to 
       * </pre>
       *
       * <code>optional uint32 segment_id = 4;</code>
       * @param value The segmentId to set.
       * @return This builder for chaining.
       */
      public Builder setSegmentId(int value) {

        segmentId_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Segment id which this index is belong to 
       * </pre>
       *
       * <code>optional uint32 segment_id = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearSegmentId() {
        bitField0_ = (bitField0_ & ~0x00000008);
        segmentId_ = 0;
        onChanged();
        return this;
      }

      private int numRowsPerBlock_ ;
      /**
       * <pre>
       * number rows in each block
       * </pre>
       *
       * <code>optional uint32 num_rows_per_block = 5;</code>
       * @return Whether the numRowsPerBlock field is set.
       */
      @java.lang.Override
      public boolean hasNumRowsPerBlock() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * number rows in each block
       * </pre>
       *
       * <code>optional uint32 num_rows_per_block = 5;</code>
       * @return The numRowsPerBlock.
       */
      @java.lang.Override
      public int getNumRowsPerBlock() {
        return numRowsPerBlock_;
      }
      /**
       * <pre>
       * number rows in each block
       * </pre>
       *
       * <code>optional uint32 num_rows_per_block = 5;</code>
       * @param value The numRowsPerBlock to set.
       * @return This builder for chaining.
       */
      public Builder setNumRowsPerBlock(int value) {

        numRowsPerBlock_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * number rows in each block
       * </pre>
       *
       * <code>optional uint32 num_rows_per_block = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearNumRowsPerBlock() {
        bitField0_ = (bitField0_ & ~0x00000010);
        numRowsPerBlock_ = 0;
        onChanged();
        return this;
      }

      private int numSegmentRows_ ;
      /**
       * <pre>
       * How many rows in this segment
       * </pre>
       *
       * <code>optional uint32 num_segment_rows = 6;</code>
       * @return Whether the numSegmentRows field is set.
       */
      @java.lang.Override
      public boolean hasNumSegmentRows() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * How many rows in this segment
       * </pre>
       *
       * <code>optional uint32 num_segment_rows = 6;</code>
       * @return The numSegmentRows.
       */
      @java.lang.Override
      public int getNumSegmentRows() {
        return numSegmentRows_;
      }
      /**
       * <pre>
       * How many rows in this segment
       * </pre>
       *
       * <code>optional uint32 num_segment_rows = 6;</code>
       * @param value The numSegmentRows to set.
       * @return This builder for chaining.
       */
      public Builder setNumSegmentRows(int value) {

        numSegmentRows_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * How many rows in this segment
       * </pre>
       *
       * <code>optional uint32 num_segment_rows = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearNumSegmentRows() {
        bitField0_ = (bitField0_ & ~0x00000020);
        numSegmentRows_ = 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.segment_v2.ShortKeyFooterPB)
    }

    // @@protoc_insertion_point(class_scope:doris.segment_v2.ShortKeyFooterPB)
    private static final doris.segment_v2.SegmentV2.ShortKeyFooterPB DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new doris.segment_v2.SegmentV2.ShortKeyFooterPB();
    }

    public static doris.segment_v2.SegmentV2.ShortKeyFooterPB getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<ShortKeyFooterPB>
        PARSER = new com.google.protobuf.AbstractParser<ShortKeyFooterPB>() {
      @java.lang.Override
      public ShortKeyFooterPB 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<ShortKeyFooterPB> parser() {
      return PARSER;
    }

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

    @java.lang.Override
    public doris.segment_v2.SegmentV2.ShortKeyFooterPB getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PageFooterPBOrBuilder extends
      // @@protoc_insertion_point(interface_extends:doris.segment_v2.PageFooterPB)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * required: indicates which of the *_footer fields is set
     * </pre>
     *
     * <code>optional .doris.segment_v2.PageTypePB type = 1;</code>
     * @return Whether the type field is set.
     */
    boolean hasType();
    /**
     * <pre>
     * required: indicates which of the *_footer fields is set
     * </pre>
     *
     * <code>optional .doris.segment_v2.PageTypePB type = 1;</code>
     * @return The type.
     */
    doris.segment_v2.SegmentV2.PageTypePB getType();

    /**
     * <pre>
     * required: page body size before compression (exclude footer and crc).
     * page body is uncompressed when it's equal to page body size
     * </pre>
     *
     * <code>optional uint32 uncompressed_size = 2;</code>
     * @return Whether the uncompressedSize field is set.
     */
    boolean hasUncompressedSize();
    /**
     * <pre>
     * required: page body size before compression (exclude footer and crc).
     * page body is uncompressed when it's equal to page body size
     * </pre>
     *
     * <code>optional uint32 uncompressed_size = 2;</code>
     * @return The uncompressedSize.
     */
    int getUncompressedSize();

    /**
     * <pre>
     * present only when type == DATA_PAGE
     * </pre>
     *
     * <code>optional .doris.segment_v2.DataPageFooterPB data_page_footer = 7;</code>
     * @return Whether the dataPageFooter field is set.
     */
    boolean hasDataPageFooter();
    /**
     * <pre>
     * present only when type == DATA_PAGE
     * </pre>
     *
     * <code>optional .doris.segment_v2.DataPageFooterPB data_page_footer = 7;</code>
     * @return The dataPageFooter.
     */
    doris.segment_v2.SegmentV2.DataPageFooterPB getDataPageFooter();
    /**
     * <pre>
     * present only when type == DATA_PAGE
     * </pre>
     *
     * <code>optional .doris.segment_v2.DataPageFooterPB data_page_footer = 7;</code>
     */
    doris.segment_v2.SegmentV2.DataPageFooterPBOrBuilder getDataPageFooterOrBuilder();

    /**
     * <pre>
     * present only when type == INDEX_PAGE
     * </pre>
     *
     * <code>optional .doris.segment_v2.IndexPageFooterPB index_page_footer = 8;</code>
     * @return Whether the indexPageFooter field is set.
     */
    boolean hasIndexPageFooter();
    /**
     * <pre>
     * present only when type == INDEX_PAGE
     * </pre>
     *
     * <code>optional .doris.segment_v2.IndexPageFooterPB index_page_footer = 8;</code>
     * @return The indexPageFooter.
     */
    doris.segment_v2.SegmentV2.IndexPageFooterPB getIndexPageFooter();
    /**
     * <pre>
     * present only when type == INDEX_PAGE
     * </pre>
     *
     * <code>optional .doris.segment_v2.IndexPageFooterPB index_page_footer = 8;</code>
     */
    doris.segment_v2.SegmentV2.IndexPageFooterPBOrBuilder getIndexPageFooterOrBuilder();

    /**
     * <pre>
     * present only when type == DICTIONARY_PAGE
     * </pre>
     *
     * <code>optional .doris.segment_v2.DictPageFooterPB dict_page_footer = 9;</code>
     * @return Whether the dictPageFooter field is set.
     */
    boolean hasDictPageFooter();
    /**
     * <pre>
     * present only when type == DICTIONARY_PAGE
     * </pre>
     *
     * <code>optional .doris.segment_v2.DictPageFooterPB dict_page_footer = 9;</code>
     * @return The dictPageFooter.
     */
    doris.segment_v2.SegmentV2.DictPageFooterPB getDictPageFooter();
    /**
     * <pre>
     * present only when type == DICTIONARY_PAGE
     * </pre>
     *
     * <code>optional .doris.segment_v2.DictPageFooterPB dict_page_footer = 9;</code>
     */
    doris.segment_v2.SegmentV2.DictPageFooterPBOrBuilder getDictPageFooterOrBuilder();

    /**
     * <pre>
     * present only when type == SHORT_KEY_PAGE
     * </pre>
     *
     * <code>optional .doris.segment_v2.ShortKeyFooterPB short_key_page_footer = 10;</code>
     * @return Whether the shortKeyPageFooter field is set.
     */
    boolean hasShortKeyPageFooter();
    /**
     * <pre>
     * present only when type == SHORT_KEY_PAGE
     * </pre>
     *
     * <code>optional .doris.segment_v2.ShortKeyFooterPB short_key_page_footer = 10;</code>
     * @return The shortKeyPageFooter.
     */
    doris.segment_v2.SegmentV2.ShortKeyFooterPB getShortKeyPageFooter();
    /**
     * <pre>
     * present only when type == SHORT_KEY_PAGE
     * </pre>
     *
     * <code>optional .doris.segment_v2.ShortKeyFooterPB short_key_page_footer = 10;</code>
     */
    doris.segment_v2.SegmentV2.ShortKeyFooterPBOrBuilder getShortKeyPageFooterOrBuilder();
  }
  /**
   * Protobuf type {@code doris.segment_v2.PageFooterPB}
   */
  public static final class PageFooterPB extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:doris.segment_v2.PageFooterPB)
      PageFooterPBOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PageFooterPB.newBuilder() to construct.
    private PageFooterPB(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PageFooterPB() {
      type_ = 0;
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_PageFooterPB_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_PageFooterPB_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              doris.segment_v2.SegmentV2.PageFooterPB.class, doris.segment_v2.SegmentV2.PageFooterPB.Builder.class);
    }

    private int bitField0_;
    public static final int TYPE_FIELD_NUMBER = 1;
    private int type_ = 0;
    /**
     * <pre>
     * required: indicates which of the *_footer fields is set
     * </pre>
     *
     * <code>optional .doris.segment_v2.PageTypePB type = 1;</code>
     * @return Whether the type field is set.
     */
    @java.lang.Override public boolean hasType() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * required: indicates which of the *_footer fields is set
     * </pre>
     *
     * <code>optional .doris.segment_v2.PageTypePB type = 1;</code>
     * @return The type.
     */
    @java.lang.Override public doris.segment_v2.SegmentV2.PageTypePB getType() {
      doris.segment_v2.SegmentV2.PageTypePB result = doris.segment_v2.SegmentV2.PageTypePB.forNumber(type_);
      return result == null ? doris.segment_v2.SegmentV2.PageTypePB.UNKNOWN_PAGE_TYPE : result;
    }

    public static final int UNCOMPRESSED_SIZE_FIELD_NUMBER = 2;
    private int uncompressedSize_ = 0;
    /**
     * <pre>
     * required: page body size before compression (exclude footer and crc).
     * page body is uncompressed when it's equal to page body size
     * </pre>
     *
     * <code>optional uint32 uncompressed_size = 2;</code>
     * @return Whether the uncompressedSize field is set.
     */
    @java.lang.Override
    public boolean hasUncompressedSize() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * required: page body size before compression (exclude footer and crc).
     * page body is uncompressed when it's equal to page body size
     * </pre>
     *
     * <code>optional uint32 uncompressed_size = 2;</code>
     * @return The uncompressedSize.
     */
    @java.lang.Override
    public int getUncompressedSize() {
      return uncompressedSize_;
    }

    public static final int DATA_PAGE_FOOTER_FIELD_NUMBER = 7;
    private doris.segment_v2.SegmentV2.DataPageFooterPB dataPageFooter_;
    /**
     * <pre>
     * present only when type == DATA_PAGE
     * </pre>
     *
     * <code>optional .doris.segment_v2.DataPageFooterPB data_page_footer = 7;</code>
     * @return Whether the dataPageFooter field is set.
     */
    @java.lang.Override
    public boolean hasDataPageFooter() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * present only when type == DATA_PAGE
     * </pre>
     *
     * <code>optional .doris.segment_v2.DataPageFooterPB data_page_footer = 7;</code>
     * @return The dataPageFooter.
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.DataPageFooterPB getDataPageFooter() {
      return dataPageFooter_ == null ? doris.segment_v2.SegmentV2.DataPageFooterPB.getDefaultInstance() : dataPageFooter_;
    }
    /**
     * <pre>
     * present only when type == DATA_PAGE
     * </pre>
     *
     * <code>optional .doris.segment_v2.DataPageFooterPB data_page_footer = 7;</code>
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.DataPageFooterPBOrBuilder getDataPageFooterOrBuilder() {
      return dataPageFooter_ == null ? doris.segment_v2.SegmentV2.DataPageFooterPB.getDefaultInstance() : dataPageFooter_;
    }

    public static final int INDEX_PAGE_FOOTER_FIELD_NUMBER = 8;
    private doris.segment_v2.SegmentV2.IndexPageFooterPB indexPageFooter_;
    /**
     * <pre>
     * present only when type == INDEX_PAGE
     * </pre>
     *
     * <code>optional .doris.segment_v2.IndexPageFooterPB index_page_footer = 8;</code>
     * @return Whether the indexPageFooter field is set.
     */
    @java.lang.Override
    public boolean hasIndexPageFooter() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * present only when type == INDEX_PAGE
     * </pre>
     *
     * <code>optional .doris.segment_v2.IndexPageFooterPB index_page_footer = 8;</code>
     * @return The indexPageFooter.
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.IndexPageFooterPB getIndexPageFooter() {
      return indexPageFooter_ == null ? doris.segment_v2.SegmentV2.IndexPageFooterPB.getDefaultInstance() : indexPageFooter_;
    }
    /**
     * <pre>
     * present only when type == INDEX_PAGE
     * </pre>
     *
     * <code>optional .doris.segment_v2.IndexPageFooterPB index_page_footer = 8;</code>
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.IndexPageFooterPBOrBuilder getIndexPageFooterOrBuilder() {
      return indexPageFooter_ == null ? doris.segment_v2.SegmentV2.IndexPageFooterPB.getDefaultInstance() : indexPageFooter_;
    }

    public static final int DICT_PAGE_FOOTER_FIELD_NUMBER = 9;
    private doris.segment_v2.SegmentV2.DictPageFooterPB dictPageFooter_;
    /**
     * <pre>
     * present only when type == DICTIONARY_PAGE
     * </pre>
     *
     * <code>optional .doris.segment_v2.DictPageFooterPB dict_page_footer = 9;</code>
     * @return Whether the dictPageFooter field is set.
     */
    @java.lang.Override
    public boolean hasDictPageFooter() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * present only when type == DICTIONARY_PAGE
     * </pre>
     *
     * <code>optional .doris.segment_v2.DictPageFooterPB dict_page_footer = 9;</code>
     * @return The dictPageFooter.
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.DictPageFooterPB getDictPageFooter() {
      return dictPageFooter_ == null ? doris.segment_v2.SegmentV2.DictPageFooterPB.getDefaultInstance() : dictPageFooter_;
    }
    /**
     * <pre>
     * present only when type == DICTIONARY_PAGE
     * </pre>
     *
     * <code>optional .doris.segment_v2.DictPageFooterPB dict_page_footer = 9;</code>
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.DictPageFooterPBOrBuilder getDictPageFooterOrBuilder() {
      return dictPageFooter_ == null ? doris.segment_v2.SegmentV2.DictPageFooterPB.getDefaultInstance() : dictPageFooter_;
    }

    public static final int SHORT_KEY_PAGE_FOOTER_FIELD_NUMBER = 10;
    private doris.segment_v2.SegmentV2.ShortKeyFooterPB shortKeyPageFooter_;
    /**
     * <pre>
     * present only when type == SHORT_KEY_PAGE
     * </pre>
     *
     * <code>optional .doris.segment_v2.ShortKeyFooterPB short_key_page_footer = 10;</code>
     * @return Whether the shortKeyPageFooter field is set.
     */
    @java.lang.Override
    public boolean hasShortKeyPageFooter() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * present only when type == SHORT_KEY_PAGE
     * </pre>
     *
     * <code>optional .doris.segment_v2.ShortKeyFooterPB short_key_page_footer = 10;</code>
     * @return The shortKeyPageFooter.
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.ShortKeyFooterPB getShortKeyPageFooter() {
      return shortKeyPageFooter_ == null ? doris.segment_v2.SegmentV2.ShortKeyFooterPB.getDefaultInstance() : shortKeyPageFooter_;
    }
    /**
     * <pre>
     * present only when type == SHORT_KEY_PAGE
     * </pre>
     *
     * <code>optional .doris.segment_v2.ShortKeyFooterPB short_key_page_footer = 10;</code>
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.ShortKeyFooterPBOrBuilder getShortKeyPageFooterOrBuilder() {
      return shortKeyPageFooter_ == null ? doris.segment_v2.SegmentV2.ShortKeyFooterPB.getDefaultInstance() : shortKeyPageFooter_;
    }

    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 {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeEnum(1, type_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeUInt32(2, uncompressedSize_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(7, getDataPageFooter());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeMessage(8, getIndexPageFooter());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeMessage(9, getDictPageFooter());
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeMessage(10, getShortKeyPageFooter());
      }
      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
          .computeUInt32Size(2, uncompressedSize_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, getDataPageFooter());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, getIndexPageFooter());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, getDictPageFooter());
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, getShortKeyPageFooter());
      }
      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 doris.segment_v2.SegmentV2.PageFooterPB)) {
        return super.equals(obj);
      }
      doris.segment_v2.SegmentV2.PageFooterPB other = (doris.segment_v2.SegmentV2.PageFooterPB) obj;

      if (hasType() != other.hasType()) return false;
      if (hasType()) {
        if (type_ != other.type_) return false;
      }
      if (hasUncompressedSize() != other.hasUncompressedSize()) return false;
      if (hasUncompressedSize()) {
        if (getUncompressedSize()
            != other.getUncompressedSize()) return false;
      }
      if (hasDataPageFooter() != other.hasDataPageFooter()) return false;
      if (hasDataPageFooter()) {
        if (!getDataPageFooter()
            .equals(other.getDataPageFooter())) return false;
      }
      if (hasIndexPageFooter() != other.hasIndexPageFooter()) return false;
      if (hasIndexPageFooter()) {
        if (!getIndexPageFooter()
            .equals(other.getIndexPageFooter())) return false;
      }
      if (hasDictPageFooter() != other.hasDictPageFooter()) return false;
      if (hasDictPageFooter()) {
        if (!getDictPageFooter()
            .equals(other.getDictPageFooter())) return false;
      }
      if (hasShortKeyPageFooter() != other.hasShortKeyPageFooter()) return false;
      if (hasShortKeyPageFooter()) {
        if (!getShortKeyPageFooter()
            .equals(other.getShortKeyPageFooter())) 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 (hasUncompressedSize()) {
        hash = (37 * hash) + UNCOMPRESSED_SIZE_FIELD_NUMBER;
        hash = (53 * hash) + getUncompressedSize();
      }
      if (hasDataPageFooter()) {
        hash = (37 * hash) + DATA_PAGE_FOOTER_FIELD_NUMBER;
        hash = (53 * hash) + getDataPageFooter().hashCode();
      }
      if (hasIndexPageFooter()) {
        hash = (37 * hash) + INDEX_PAGE_FOOTER_FIELD_NUMBER;
        hash = (53 * hash) + getIndexPageFooter().hashCode();
      }
      if (hasDictPageFooter()) {
        hash = (37 * hash) + DICT_PAGE_FOOTER_FIELD_NUMBER;
        hash = (53 * hash) + getDictPageFooter().hashCode();
      }
      if (hasShortKeyPageFooter()) {
        hash = (37 * hash) + SHORT_KEY_PAGE_FOOTER_FIELD_NUMBER;
        hash = (53 * hash) + getShortKeyPageFooter().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static doris.segment_v2.SegmentV2.PageFooterPB parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.PageFooterPB parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.PageFooterPB parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.PageFooterPB parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.PageFooterPB parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.PageFooterPB parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.PageFooterPB parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.segment_v2.SegmentV2.PageFooterPB 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 doris.segment_v2.SegmentV2.PageFooterPB parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static doris.segment_v2.SegmentV2.PageFooterPB 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 doris.segment_v2.SegmentV2.PageFooterPB parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.segment_v2.SegmentV2.PageFooterPB 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(doris.segment_v2.SegmentV2.PageFooterPB 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.segment_v2.PageFooterPB}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:doris.segment_v2.PageFooterPB)
        doris.segment_v2.SegmentV2.PageFooterPBOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_PageFooterPB_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_PageFooterPB_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                doris.segment_v2.SegmentV2.PageFooterPB.class, doris.segment_v2.SegmentV2.PageFooterPB.Builder.class);
      }

      // Construct using doris.segment_v2.SegmentV2.PageFooterPB.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getDataPageFooterFieldBuilder();
          getIndexPageFooterFieldBuilder();
          getDictPageFooterFieldBuilder();
          getShortKeyPageFooterFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        type_ = 0;
        uncompressedSize_ = 0;
        dataPageFooter_ = null;
        if (dataPageFooterBuilder_ != null) {
          dataPageFooterBuilder_.dispose();
          dataPageFooterBuilder_ = null;
        }
        indexPageFooter_ = null;
        if (indexPageFooterBuilder_ != null) {
          indexPageFooterBuilder_.dispose();
          indexPageFooterBuilder_ = null;
        }
        dictPageFooter_ = null;
        if (dictPageFooterBuilder_ != null) {
          dictPageFooterBuilder_.dispose();
          dictPageFooterBuilder_ = null;
        }
        shortKeyPageFooter_ = null;
        if (shortKeyPageFooterBuilder_ != null) {
          shortKeyPageFooterBuilder_.dispose();
          shortKeyPageFooterBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_PageFooterPB_descriptor;
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.PageFooterPB getDefaultInstanceForType() {
        return doris.segment_v2.SegmentV2.PageFooterPB.getDefaultInstance();
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.PageFooterPB build() {
        doris.segment_v2.SegmentV2.PageFooterPB result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.PageFooterPB buildPartial() {
        doris.segment_v2.SegmentV2.PageFooterPB result = new doris.segment_v2.SegmentV2.PageFooterPB(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(doris.segment_v2.SegmentV2.PageFooterPB 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.uncompressedSize_ = uncompressedSize_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.dataPageFooter_ = dataPageFooterBuilder_ == null
              ? dataPageFooter_
              : dataPageFooterBuilder_.build();
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.indexPageFooter_ = indexPageFooterBuilder_ == null
              ? indexPageFooter_
              : indexPageFooterBuilder_.build();
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.dictPageFooter_ = dictPageFooterBuilder_ == null
              ? dictPageFooter_
              : dictPageFooterBuilder_.build();
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.shortKeyPageFooter_ = shortKeyPageFooterBuilder_ == null
              ? shortKeyPageFooter_
              : shortKeyPageFooterBuilder_.build();
          to_bitField0_ |= 0x00000020;
        }
        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 doris.segment_v2.SegmentV2.PageFooterPB) {
          return mergeFrom((doris.segment_v2.SegmentV2.PageFooterPB)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(doris.segment_v2.SegmentV2.PageFooterPB other) {
        if (other == doris.segment_v2.SegmentV2.PageFooterPB.getDefaultInstance()) return this;
        if (other.hasType()) {
          setType(other.getType());
        }
        if (other.hasUncompressedSize()) {
          setUncompressedSize(other.getUncompressedSize());
        }
        if (other.hasDataPageFooter()) {
          mergeDataPageFooter(other.getDataPageFooter());
        }
        if (other.hasIndexPageFooter()) {
          mergeIndexPageFooter(other.getIndexPageFooter());
        }
        if (other.hasDictPageFooter()) {
          mergeDictPageFooter(other.getDictPageFooter());
        }
        if (other.hasShortKeyPageFooter()) {
          mergeShortKeyPageFooter(other.getShortKeyPageFooter());
        }
        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 8: {
                int tmpRaw = input.readEnum();
                doris.segment_v2.SegmentV2.PageTypePB tmpValue =
                    doris.segment_v2.SegmentV2.PageTypePB.forNumber(tmpRaw);
                if (tmpValue == null) {
                  mergeUnknownVarintField(1, tmpRaw);
                } else {
                  type_ = tmpRaw;
                  bitField0_ |= 0x00000001;
                }
                break;
              } // case 8
              case 16: {
                uncompressedSize_ = input.readUInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 58: {
                input.readMessage(
                    getDataPageFooterFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 58
              case 66: {
                input.readMessage(
                    getIndexPageFooterFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000008;
                break;
              } // case 66
              case 74: {
                input.readMessage(
                    getDictPageFooterFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000010;
                break;
              } // case 74
              case 82: {
                input.readMessage(
                    getShortKeyPageFooterFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000020;
                break;
              } // case 82
              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_ = 0;
      /**
       * <pre>
       * required: indicates which of the *_footer fields is set
       * </pre>
       *
       * <code>optional .doris.segment_v2.PageTypePB type = 1;</code>
       * @return Whether the type field is set.
       */
      @java.lang.Override public boolean hasType() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * required: indicates which of the *_footer fields is set
       * </pre>
       *
       * <code>optional .doris.segment_v2.PageTypePB type = 1;</code>
       * @return The type.
       */
      @java.lang.Override
      public doris.segment_v2.SegmentV2.PageTypePB getType() {
        doris.segment_v2.SegmentV2.PageTypePB result = doris.segment_v2.SegmentV2.PageTypePB.forNumber(type_);
        return result == null ? doris.segment_v2.SegmentV2.PageTypePB.UNKNOWN_PAGE_TYPE : result;
      }
      /**
       * <pre>
       * required: indicates which of the *_footer fields is set
       * </pre>
       *
       * <code>optional .doris.segment_v2.PageTypePB type = 1;</code>
       * @param value The type to set.
       * @return This builder for chaining.
       */
      public Builder setType(doris.segment_v2.SegmentV2.PageTypePB value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        type_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * required: indicates which of the *_footer fields is set
       * </pre>
       *
       * <code>optional .doris.segment_v2.PageTypePB type = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearType() {
        bitField0_ = (bitField0_ & ~0x00000001);
        type_ = 0;
        onChanged();
        return this;
      }

      private int uncompressedSize_ ;
      /**
       * <pre>
       * required: page body size before compression (exclude footer and crc).
       * page body is uncompressed when it's equal to page body size
       * </pre>
       *
       * <code>optional uint32 uncompressed_size = 2;</code>
       * @return Whether the uncompressedSize field is set.
       */
      @java.lang.Override
      public boolean hasUncompressedSize() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * required: page body size before compression (exclude footer and crc).
       * page body is uncompressed when it's equal to page body size
       * </pre>
       *
       * <code>optional uint32 uncompressed_size = 2;</code>
       * @return The uncompressedSize.
       */
      @java.lang.Override
      public int getUncompressedSize() {
        return uncompressedSize_;
      }
      /**
       * <pre>
       * required: page body size before compression (exclude footer and crc).
       * page body is uncompressed when it's equal to page body size
       * </pre>
       *
       * <code>optional uint32 uncompressed_size = 2;</code>
       * @param value The uncompressedSize to set.
       * @return This builder for chaining.
       */
      public Builder setUncompressedSize(int value) {

        uncompressedSize_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * required: page body size before compression (exclude footer and crc).
       * page body is uncompressed when it's equal to page body size
       * </pre>
       *
       * <code>optional uint32 uncompressed_size = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearUncompressedSize() {
        bitField0_ = (bitField0_ & ~0x00000002);
        uncompressedSize_ = 0;
        onChanged();
        return this;
      }

      private doris.segment_v2.SegmentV2.DataPageFooterPB dataPageFooter_;
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.DataPageFooterPB, doris.segment_v2.SegmentV2.DataPageFooterPB.Builder, doris.segment_v2.SegmentV2.DataPageFooterPBOrBuilder> dataPageFooterBuilder_;
      /**
       * <pre>
       * present only when type == DATA_PAGE
       * </pre>
       *
       * <code>optional .doris.segment_v2.DataPageFooterPB data_page_footer = 7;</code>
       * @return Whether the dataPageFooter field is set.
       */
      public boolean hasDataPageFooter() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * present only when type == DATA_PAGE
       * </pre>
       *
       * <code>optional .doris.segment_v2.DataPageFooterPB data_page_footer = 7;</code>
       * @return The dataPageFooter.
       */
      public doris.segment_v2.SegmentV2.DataPageFooterPB getDataPageFooter() {
        if (dataPageFooterBuilder_ == null) {
          return dataPageFooter_ == null ? doris.segment_v2.SegmentV2.DataPageFooterPB.getDefaultInstance() : dataPageFooter_;
        } else {
          return dataPageFooterBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * present only when type == DATA_PAGE
       * </pre>
       *
       * <code>optional .doris.segment_v2.DataPageFooterPB data_page_footer = 7;</code>
       */
      public Builder setDataPageFooter(doris.segment_v2.SegmentV2.DataPageFooterPB value) {
        if (dataPageFooterBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          dataPageFooter_ = value;
        } else {
          dataPageFooterBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * present only when type == DATA_PAGE
       * </pre>
       *
       * <code>optional .doris.segment_v2.DataPageFooterPB data_page_footer = 7;</code>
       */
      public Builder setDataPageFooter(
          doris.segment_v2.SegmentV2.DataPageFooterPB.Builder builderForValue) {
        if (dataPageFooterBuilder_ == null) {
          dataPageFooter_ = builderForValue.build();
        } else {
          dataPageFooterBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * present only when type == DATA_PAGE
       * </pre>
       *
       * <code>optional .doris.segment_v2.DataPageFooterPB data_page_footer = 7;</code>
       */
      public Builder mergeDataPageFooter(doris.segment_v2.SegmentV2.DataPageFooterPB value) {
        if (dataPageFooterBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            dataPageFooter_ != null &&
            dataPageFooter_ != doris.segment_v2.SegmentV2.DataPageFooterPB.getDefaultInstance()) {
            getDataPageFooterBuilder().mergeFrom(value);
          } else {
            dataPageFooter_ = value;
          }
        } else {
          dataPageFooterBuilder_.mergeFrom(value);
        }
        if (dataPageFooter_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * present only when type == DATA_PAGE
       * </pre>
       *
       * <code>optional .doris.segment_v2.DataPageFooterPB data_page_footer = 7;</code>
       */
      public Builder clearDataPageFooter() {
        bitField0_ = (bitField0_ & ~0x00000004);
        dataPageFooter_ = null;
        if (dataPageFooterBuilder_ != null) {
          dataPageFooterBuilder_.dispose();
          dataPageFooterBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * present only when type == DATA_PAGE
       * </pre>
       *
       * <code>optional .doris.segment_v2.DataPageFooterPB data_page_footer = 7;</code>
       */
      public doris.segment_v2.SegmentV2.DataPageFooterPB.Builder getDataPageFooterBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getDataPageFooterFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * present only when type == DATA_PAGE
       * </pre>
       *
       * <code>optional .doris.segment_v2.DataPageFooterPB data_page_footer = 7;</code>
       */
      public doris.segment_v2.SegmentV2.DataPageFooterPBOrBuilder getDataPageFooterOrBuilder() {
        if (dataPageFooterBuilder_ != null) {
          return dataPageFooterBuilder_.getMessageOrBuilder();
        } else {
          return dataPageFooter_ == null ?
              doris.segment_v2.SegmentV2.DataPageFooterPB.getDefaultInstance() : dataPageFooter_;
        }
      }
      /**
       * <pre>
       * present only when type == DATA_PAGE
       * </pre>
       *
       * <code>optional .doris.segment_v2.DataPageFooterPB data_page_footer = 7;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.DataPageFooterPB, doris.segment_v2.SegmentV2.DataPageFooterPB.Builder, doris.segment_v2.SegmentV2.DataPageFooterPBOrBuilder> 
          getDataPageFooterFieldBuilder() {
        if (dataPageFooterBuilder_ == null) {
          dataPageFooterBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              doris.segment_v2.SegmentV2.DataPageFooterPB, doris.segment_v2.SegmentV2.DataPageFooterPB.Builder, doris.segment_v2.SegmentV2.DataPageFooterPBOrBuilder>(
                  getDataPageFooter(),
                  getParentForChildren(),
                  isClean());
          dataPageFooter_ = null;
        }
        return dataPageFooterBuilder_;
      }

      private doris.segment_v2.SegmentV2.IndexPageFooterPB indexPageFooter_;
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.IndexPageFooterPB, doris.segment_v2.SegmentV2.IndexPageFooterPB.Builder, doris.segment_v2.SegmentV2.IndexPageFooterPBOrBuilder> indexPageFooterBuilder_;
      /**
       * <pre>
       * present only when type == INDEX_PAGE
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexPageFooterPB index_page_footer = 8;</code>
       * @return Whether the indexPageFooter field is set.
       */
      public boolean hasIndexPageFooter() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * present only when type == INDEX_PAGE
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexPageFooterPB index_page_footer = 8;</code>
       * @return The indexPageFooter.
       */
      public doris.segment_v2.SegmentV2.IndexPageFooterPB getIndexPageFooter() {
        if (indexPageFooterBuilder_ == null) {
          return indexPageFooter_ == null ? doris.segment_v2.SegmentV2.IndexPageFooterPB.getDefaultInstance() : indexPageFooter_;
        } else {
          return indexPageFooterBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * present only when type == INDEX_PAGE
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexPageFooterPB index_page_footer = 8;</code>
       */
      public Builder setIndexPageFooter(doris.segment_v2.SegmentV2.IndexPageFooterPB value) {
        if (indexPageFooterBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          indexPageFooter_ = value;
        } else {
          indexPageFooterBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * present only when type == INDEX_PAGE
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexPageFooterPB index_page_footer = 8;</code>
       */
      public Builder setIndexPageFooter(
          doris.segment_v2.SegmentV2.IndexPageFooterPB.Builder builderForValue) {
        if (indexPageFooterBuilder_ == null) {
          indexPageFooter_ = builderForValue.build();
        } else {
          indexPageFooterBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * present only when type == INDEX_PAGE
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexPageFooterPB index_page_footer = 8;</code>
       */
      public Builder mergeIndexPageFooter(doris.segment_v2.SegmentV2.IndexPageFooterPB value) {
        if (indexPageFooterBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0) &&
            indexPageFooter_ != null &&
            indexPageFooter_ != doris.segment_v2.SegmentV2.IndexPageFooterPB.getDefaultInstance()) {
            getIndexPageFooterBuilder().mergeFrom(value);
          } else {
            indexPageFooter_ = value;
          }
        } else {
          indexPageFooterBuilder_.mergeFrom(value);
        }
        if (indexPageFooter_ != null) {
          bitField0_ |= 0x00000008;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * present only when type == INDEX_PAGE
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexPageFooterPB index_page_footer = 8;</code>
       */
      public Builder clearIndexPageFooter() {
        bitField0_ = (bitField0_ & ~0x00000008);
        indexPageFooter_ = null;
        if (indexPageFooterBuilder_ != null) {
          indexPageFooterBuilder_.dispose();
          indexPageFooterBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * present only when type == INDEX_PAGE
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexPageFooterPB index_page_footer = 8;</code>
       */
      public doris.segment_v2.SegmentV2.IndexPageFooterPB.Builder getIndexPageFooterBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getIndexPageFooterFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * present only when type == INDEX_PAGE
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexPageFooterPB index_page_footer = 8;</code>
       */
      public doris.segment_v2.SegmentV2.IndexPageFooterPBOrBuilder getIndexPageFooterOrBuilder() {
        if (indexPageFooterBuilder_ != null) {
          return indexPageFooterBuilder_.getMessageOrBuilder();
        } else {
          return indexPageFooter_ == null ?
              doris.segment_v2.SegmentV2.IndexPageFooterPB.getDefaultInstance() : indexPageFooter_;
        }
      }
      /**
       * <pre>
       * present only when type == INDEX_PAGE
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexPageFooterPB index_page_footer = 8;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.IndexPageFooterPB, doris.segment_v2.SegmentV2.IndexPageFooterPB.Builder, doris.segment_v2.SegmentV2.IndexPageFooterPBOrBuilder> 
          getIndexPageFooterFieldBuilder() {
        if (indexPageFooterBuilder_ == null) {
          indexPageFooterBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              doris.segment_v2.SegmentV2.IndexPageFooterPB, doris.segment_v2.SegmentV2.IndexPageFooterPB.Builder, doris.segment_v2.SegmentV2.IndexPageFooterPBOrBuilder>(
                  getIndexPageFooter(),
                  getParentForChildren(),
                  isClean());
          indexPageFooter_ = null;
        }
        return indexPageFooterBuilder_;
      }

      private doris.segment_v2.SegmentV2.DictPageFooterPB dictPageFooter_;
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.DictPageFooterPB, doris.segment_v2.SegmentV2.DictPageFooterPB.Builder, doris.segment_v2.SegmentV2.DictPageFooterPBOrBuilder> dictPageFooterBuilder_;
      /**
       * <pre>
       * present only when type == DICTIONARY_PAGE
       * </pre>
       *
       * <code>optional .doris.segment_v2.DictPageFooterPB dict_page_footer = 9;</code>
       * @return Whether the dictPageFooter field is set.
       */
      public boolean hasDictPageFooter() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * present only when type == DICTIONARY_PAGE
       * </pre>
       *
       * <code>optional .doris.segment_v2.DictPageFooterPB dict_page_footer = 9;</code>
       * @return The dictPageFooter.
       */
      public doris.segment_v2.SegmentV2.DictPageFooterPB getDictPageFooter() {
        if (dictPageFooterBuilder_ == null) {
          return dictPageFooter_ == null ? doris.segment_v2.SegmentV2.DictPageFooterPB.getDefaultInstance() : dictPageFooter_;
        } else {
          return dictPageFooterBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * present only when type == DICTIONARY_PAGE
       * </pre>
       *
       * <code>optional .doris.segment_v2.DictPageFooterPB dict_page_footer = 9;</code>
       */
      public Builder setDictPageFooter(doris.segment_v2.SegmentV2.DictPageFooterPB value) {
        if (dictPageFooterBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          dictPageFooter_ = value;
        } else {
          dictPageFooterBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * present only when type == DICTIONARY_PAGE
       * </pre>
       *
       * <code>optional .doris.segment_v2.DictPageFooterPB dict_page_footer = 9;</code>
       */
      public Builder setDictPageFooter(
          doris.segment_v2.SegmentV2.DictPageFooterPB.Builder builderForValue) {
        if (dictPageFooterBuilder_ == null) {
          dictPageFooter_ = builderForValue.build();
        } else {
          dictPageFooterBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * present only when type == DICTIONARY_PAGE
       * </pre>
       *
       * <code>optional .doris.segment_v2.DictPageFooterPB dict_page_footer = 9;</code>
       */
      public Builder mergeDictPageFooter(doris.segment_v2.SegmentV2.DictPageFooterPB value) {
        if (dictPageFooterBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0) &&
            dictPageFooter_ != null &&
            dictPageFooter_ != doris.segment_v2.SegmentV2.DictPageFooterPB.getDefaultInstance()) {
            getDictPageFooterBuilder().mergeFrom(value);
          } else {
            dictPageFooter_ = value;
          }
        } else {
          dictPageFooterBuilder_.mergeFrom(value);
        }
        if (dictPageFooter_ != null) {
          bitField0_ |= 0x00000010;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * present only when type == DICTIONARY_PAGE
       * </pre>
       *
       * <code>optional .doris.segment_v2.DictPageFooterPB dict_page_footer = 9;</code>
       */
      public Builder clearDictPageFooter() {
        bitField0_ = (bitField0_ & ~0x00000010);
        dictPageFooter_ = null;
        if (dictPageFooterBuilder_ != null) {
          dictPageFooterBuilder_.dispose();
          dictPageFooterBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * present only when type == DICTIONARY_PAGE
       * </pre>
       *
       * <code>optional .doris.segment_v2.DictPageFooterPB dict_page_footer = 9;</code>
       */
      public doris.segment_v2.SegmentV2.DictPageFooterPB.Builder getDictPageFooterBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getDictPageFooterFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * present only when type == DICTIONARY_PAGE
       * </pre>
       *
       * <code>optional .doris.segment_v2.DictPageFooterPB dict_page_footer = 9;</code>
       */
      public doris.segment_v2.SegmentV2.DictPageFooterPBOrBuilder getDictPageFooterOrBuilder() {
        if (dictPageFooterBuilder_ != null) {
          return dictPageFooterBuilder_.getMessageOrBuilder();
        } else {
          return dictPageFooter_ == null ?
              doris.segment_v2.SegmentV2.DictPageFooterPB.getDefaultInstance() : dictPageFooter_;
        }
      }
      /**
       * <pre>
       * present only when type == DICTIONARY_PAGE
       * </pre>
       *
       * <code>optional .doris.segment_v2.DictPageFooterPB dict_page_footer = 9;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.DictPageFooterPB, doris.segment_v2.SegmentV2.DictPageFooterPB.Builder, doris.segment_v2.SegmentV2.DictPageFooterPBOrBuilder> 
          getDictPageFooterFieldBuilder() {
        if (dictPageFooterBuilder_ == null) {
          dictPageFooterBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              doris.segment_v2.SegmentV2.DictPageFooterPB, doris.segment_v2.SegmentV2.DictPageFooterPB.Builder, doris.segment_v2.SegmentV2.DictPageFooterPBOrBuilder>(
                  getDictPageFooter(),
                  getParentForChildren(),
                  isClean());
          dictPageFooter_ = null;
        }
        return dictPageFooterBuilder_;
      }

      private doris.segment_v2.SegmentV2.ShortKeyFooterPB shortKeyPageFooter_;
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.ShortKeyFooterPB, doris.segment_v2.SegmentV2.ShortKeyFooterPB.Builder, doris.segment_v2.SegmentV2.ShortKeyFooterPBOrBuilder> shortKeyPageFooterBuilder_;
      /**
       * <pre>
       * present only when type == SHORT_KEY_PAGE
       * </pre>
       *
       * <code>optional .doris.segment_v2.ShortKeyFooterPB short_key_page_footer = 10;</code>
       * @return Whether the shortKeyPageFooter field is set.
       */
      public boolean hasShortKeyPageFooter() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * present only when type == SHORT_KEY_PAGE
       * </pre>
       *
       * <code>optional .doris.segment_v2.ShortKeyFooterPB short_key_page_footer = 10;</code>
       * @return The shortKeyPageFooter.
       */
      public doris.segment_v2.SegmentV2.ShortKeyFooterPB getShortKeyPageFooter() {
        if (shortKeyPageFooterBuilder_ == null) {
          return shortKeyPageFooter_ == null ? doris.segment_v2.SegmentV2.ShortKeyFooterPB.getDefaultInstance() : shortKeyPageFooter_;
        } else {
          return shortKeyPageFooterBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * present only when type == SHORT_KEY_PAGE
       * </pre>
       *
       * <code>optional .doris.segment_v2.ShortKeyFooterPB short_key_page_footer = 10;</code>
       */
      public Builder setShortKeyPageFooter(doris.segment_v2.SegmentV2.ShortKeyFooterPB value) {
        if (shortKeyPageFooterBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          shortKeyPageFooter_ = value;
        } else {
          shortKeyPageFooterBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * present only when type == SHORT_KEY_PAGE
       * </pre>
       *
       * <code>optional .doris.segment_v2.ShortKeyFooterPB short_key_page_footer = 10;</code>
       */
      public Builder setShortKeyPageFooter(
          doris.segment_v2.SegmentV2.ShortKeyFooterPB.Builder builderForValue) {
        if (shortKeyPageFooterBuilder_ == null) {
          shortKeyPageFooter_ = builderForValue.build();
        } else {
          shortKeyPageFooterBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * present only when type == SHORT_KEY_PAGE
       * </pre>
       *
       * <code>optional .doris.segment_v2.ShortKeyFooterPB short_key_page_footer = 10;</code>
       */
      public Builder mergeShortKeyPageFooter(doris.segment_v2.SegmentV2.ShortKeyFooterPB value) {
        if (shortKeyPageFooterBuilder_ == null) {
          if (((bitField0_ & 0x00000020) != 0) &&
            shortKeyPageFooter_ != null &&
            shortKeyPageFooter_ != doris.segment_v2.SegmentV2.ShortKeyFooterPB.getDefaultInstance()) {
            getShortKeyPageFooterBuilder().mergeFrom(value);
          } else {
            shortKeyPageFooter_ = value;
          }
        } else {
          shortKeyPageFooterBuilder_.mergeFrom(value);
        }
        if (shortKeyPageFooter_ != null) {
          bitField0_ |= 0x00000020;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * present only when type == SHORT_KEY_PAGE
       * </pre>
       *
       * <code>optional .doris.segment_v2.ShortKeyFooterPB short_key_page_footer = 10;</code>
       */
      public Builder clearShortKeyPageFooter() {
        bitField0_ = (bitField0_ & ~0x00000020);
        shortKeyPageFooter_ = null;
        if (shortKeyPageFooterBuilder_ != null) {
          shortKeyPageFooterBuilder_.dispose();
          shortKeyPageFooterBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * present only when type == SHORT_KEY_PAGE
       * </pre>
       *
       * <code>optional .doris.segment_v2.ShortKeyFooterPB short_key_page_footer = 10;</code>
       */
      public doris.segment_v2.SegmentV2.ShortKeyFooterPB.Builder getShortKeyPageFooterBuilder() {
        bitField0_ |= 0x00000020;
        onChanged();
        return getShortKeyPageFooterFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * present only when type == SHORT_KEY_PAGE
       * </pre>
       *
       * <code>optional .doris.segment_v2.ShortKeyFooterPB short_key_page_footer = 10;</code>
       */
      public doris.segment_v2.SegmentV2.ShortKeyFooterPBOrBuilder getShortKeyPageFooterOrBuilder() {
        if (shortKeyPageFooterBuilder_ != null) {
          return shortKeyPageFooterBuilder_.getMessageOrBuilder();
        } else {
          return shortKeyPageFooter_ == null ?
              doris.segment_v2.SegmentV2.ShortKeyFooterPB.getDefaultInstance() : shortKeyPageFooter_;
        }
      }
      /**
       * <pre>
       * present only when type == SHORT_KEY_PAGE
       * </pre>
       *
       * <code>optional .doris.segment_v2.ShortKeyFooterPB short_key_page_footer = 10;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.ShortKeyFooterPB, doris.segment_v2.SegmentV2.ShortKeyFooterPB.Builder, doris.segment_v2.SegmentV2.ShortKeyFooterPBOrBuilder> 
          getShortKeyPageFooterFieldBuilder() {
        if (shortKeyPageFooterBuilder_ == null) {
          shortKeyPageFooterBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              doris.segment_v2.SegmentV2.ShortKeyFooterPB, doris.segment_v2.SegmentV2.ShortKeyFooterPB.Builder, doris.segment_v2.SegmentV2.ShortKeyFooterPBOrBuilder>(
                  getShortKeyPageFooter(),
                  getParentForChildren(),
                  isClean());
          shortKeyPageFooter_ = null;
        }
        return shortKeyPageFooterBuilder_;
      }
      @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.segment_v2.PageFooterPB)
    }

    // @@protoc_insertion_point(class_scope:doris.segment_v2.PageFooterPB)
    private static final doris.segment_v2.SegmentV2.PageFooterPB DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new doris.segment_v2.SegmentV2.PageFooterPB();
    }

    public static doris.segment_v2.SegmentV2.PageFooterPB getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<PageFooterPB>
        PARSER = new com.google.protobuf.AbstractParser<PageFooterPB>() {
      @java.lang.Override
      public PageFooterPB 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<PageFooterPB> parser() {
      return PARSER;
    }

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

    @java.lang.Override
    public doris.segment_v2.SegmentV2.PageFooterPB getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ZoneMapPBOrBuilder extends
      // @@protoc_insertion_point(interface_extends:doris.segment_v2.ZoneMapPB)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * minimum not-null value, invalid when all values are null(has_not_null==false)
     * </pre>
     *
     * <code>optional bytes min = 1;</code>
     * @return Whether the min field is set.
     */
    boolean hasMin();
    /**
     * <pre>
     * minimum not-null value, invalid when all values are null(has_not_null==false)
     * </pre>
     *
     * <code>optional bytes min = 1;</code>
     * @return The min.
     */
    com.google.protobuf.ByteString getMin();

    /**
     * <pre>
     * maximum not-null value, invalid when all values are null (has_not_null==false)
     * </pre>
     *
     * <code>optional bytes max = 2;</code>
     * @return Whether the max field is set.
     */
    boolean hasMax();
    /**
     * <pre>
     * maximum not-null value, invalid when all values are null (has_not_null==false)
     * </pre>
     *
     * <code>optional bytes max = 2;</code>
     * @return The max.
     */
    com.google.protobuf.ByteString getMax();

    /**
     * <pre>
     * whether the zone has null value
     * </pre>
     *
     * <code>optional bool has_null = 3;</code>
     * @return Whether the hasNull field is set.
     */
    boolean hasHasNull();
    /**
     * <pre>
     * whether the zone has null value
     * </pre>
     *
     * <code>optional bool has_null = 3;</code>
     * @return The hasNull.
     */
    boolean getHasNull();

    /**
     * <pre>
     * whether the zone has not-null value
     * </pre>
     *
     * <code>optional bool has_not_null = 4;</code>
     * @return Whether the hasNotNull field is set.
     */
    boolean hasHasNotNull();
    /**
     * <pre>
     * whether the zone has not-null value
     * </pre>
     *
     * <code>optional bool has_not_null = 4;</code>
     * @return The hasNotNull.
     */
    boolean getHasNotNull();

    /**
     * <pre>
     * whether this zone is including all values;
     * </pre>
     *
     * <code>optional bool pass_all = 5 [default = false];</code>
     * @return Whether the passAll field is set.
     */
    boolean hasPassAll();
    /**
     * <pre>
     * whether this zone is including all values;
     * </pre>
     *
     * <code>optional bool pass_all = 5 [default = false];</code>
     * @return The passAll.
     */
    boolean getPassAll();
  }
  /**
   * Protobuf type {@code doris.segment_v2.ZoneMapPB}
   */
  public static final class ZoneMapPB extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:doris.segment_v2.ZoneMapPB)
      ZoneMapPBOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ZoneMapPB.newBuilder() to construct.
    private ZoneMapPB(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ZoneMapPB() {
      min_ = com.google.protobuf.ByteString.EMPTY;
      max_ = com.google.protobuf.ByteString.EMPTY;
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_ZoneMapPB_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_ZoneMapPB_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              doris.segment_v2.SegmentV2.ZoneMapPB.class, doris.segment_v2.SegmentV2.ZoneMapPB.Builder.class);
    }

    private int bitField0_;
    public static final int MIN_FIELD_NUMBER = 1;
    private com.google.protobuf.ByteString min_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <pre>
     * minimum not-null value, invalid when all values are null(has_not_null==false)
     * </pre>
     *
     * <code>optional bytes min = 1;</code>
     * @return Whether the min field is set.
     */
    @java.lang.Override
    public boolean hasMin() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * minimum not-null value, invalid when all values are null(has_not_null==false)
     * </pre>
     *
     * <code>optional bytes min = 1;</code>
     * @return The min.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getMin() {
      return min_;
    }

    public static final int MAX_FIELD_NUMBER = 2;
    private com.google.protobuf.ByteString max_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <pre>
     * maximum not-null value, invalid when all values are null (has_not_null==false)
     * </pre>
     *
     * <code>optional bytes max = 2;</code>
     * @return Whether the max field is set.
     */
    @java.lang.Override
    public boolean hasMax() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * maximum not-null value, invalid when all values are null (has_not_null==false)
     * </pre>
     *
     * <code>optional bytes max = 2;</code>
     * @return The max.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getMax() {
      return max_;
    }

    public static final int HAS_NULL_FIELD_NUMBER = 3;
    private boolean hasNull_ = false;
    /**
     * <pre>
     * whether the zone has null value
     * </pre>
     *
     * <code>optional bool has_null = 3;</code>
     * @return Whether the hasNull field is set.
     */
    @java.lang.Override
    public boolean hasHasNull() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * whether the zone has null value
     * </pre>
     *
     * <code>optional bool has_null = 3;</code>
     * @return The hasNull.
     */
    @java.lang.Override
    public boolean getHasNull() {
      return hasNull_;
    }

    public static final int HAS_NOT_NULL_FIELD_NUMBER = 4;
    private boolean hasNotNull_ = false;
    /**
     * <pre>
     * whether the zone has not-null value
     * </pre>
     *
     * <code>optional bool has_not_null = 4;</code>
     * @return Whether the hasNotNull field is set.
     */
    @java.lang.Override
    public boolean hasHasNotNull() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * whether the zone has not-null value
     * </pre>
     *
     * <code>optional bool has_not_null = 4;</code>
     * @return The hasNotNull.
     */
    @java.lang.Override
    public boolean getHasNotNull() {
      return hasNotNull_;
    }

    public static final int PASS_ALL_FIELD_NUMBER = 5;
    private boolean passAll_ = false;
    /**
     * <pre>
     * whether this zone is including all values;
     * </pre>
     *
     * <code>optional bool pass_all = 5 [default = false];</code>
     * @return Whether the passAll field is set.
     */
    @java.lang.Override
    public boolean hasPassAll() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * whether this zone is including all values;
     * </pre>
     *
     * <code>optional bool pass_all = 5 [default = false];</code>
     * @return The passAll.
     */
    @java.lang.Override
    public boolean getPassAll() {
      return passAll_;
    }

    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 {
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeBytes(1, min_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeBytes(2, max_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeBool(3, hasNull_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeBool(4, hasNotNull_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeBool(5, passAll_);
      }
      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
          .computeBytesSize(1, min_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, max_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, hasNull_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(4, hasNotNull_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(5, passAll_);
      }
      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 doris.segment_v2.SegmentV2.ZoneMapPB)) {
        return super.equals(obj);
      }
      doris.segment_v2.SegmentV2.ZoneMapPB other = (doris.segment_v2.SegmentV2.ZoneMapPB) obj;

      if (hasMin() != other.hasMin()) return false;
      if (hasMin()) {
        if (!getMin()
            .equals(other.getMin())) return false;
      }
      if (hasMax() != other.hasMax()) return false;
      if (hasMax()) {
        if (!getMax()
            .equals(other.getMax())) return false;
      }
      if (hasHasNull() != other.hasHasNull()) return false;
      if (hasHasNull()) {
        if (getHasNull()
            != other.getHasNull()) return false;
      }
      if (hasHasNotNull() != other.hasHasNotNull()) return false;
      if (hasHasNotNull()) {
        if (getHasNotNull()
            != other.getHasNotNull()) return false;
      }
      if (hasPassAll() != other.hasPassAll()) return false;
      if (hasPassAll()) {
        if (getPassAll()
            != other.getPassAll()) 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 (hasMin()) {
        hash = (37 * hash) + MIN_FIELD_NUMBER;
        hash = (53 * hash) + getMin().hashCode();
      }
      if (hasMax()) {
        hash = (37 * hash) + MAX_FIELD_NUMBER;
        hash = (53 * hash) + getMax().hashCode();
      }
      if (hasHasNull()) {
        hash = (37 * hash) + HAS_NULL_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getHasNull());
      }
      if (hasHasNotNull()) {
        hash = (37 * hash) + HAS_NOT_NULL_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getHasNotNull());
      }
      if (hasPassAll()) {
        hash = (37 * hash) + PASS_ALL_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getPassAll());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static doris.segment_v2.SegmentV2.ZoneMapPB parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.ZoneMapPB parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.ZoneMapPB parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.ZoneMapPB parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.ZoneMapPB parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.ZoneMapPB parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.ZoneMapPB parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.segment_v2.SegmentV2.ZoneMapPB 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 doris.segment_v2.SegmentV2.ZoneMapPB parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static doris.segment_v2.SegmentV2.ZoneMapPB 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 doris.segment_v2.SegmentV2.ZoneMapPB parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.segment_v2.SegmentV2.ZoneMapPB 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(doris.segment_v2.SegmentV2.ZoneMapPB 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.segment_v2.ZoneMapPB}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:doris.segment_v2.ZoneMapPB)
        doris.segment_v2.SegmentV2.ZoneMapPBOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_ZoneMapPB_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_ZoneMapPB_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                doris.segment_v2.SegmentV2.ZoneMapPB.class, doris.segment_v2.SegmentV2.ZoneMapPB.Builder.class);
      }

      // Construct using doris.segment_v2.SegmentV2.ZoneMapPB.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        min_ = com.google.protobuf.ByteString.EMPTY;
        max_ = com.google.protobuf.ByteString.EMPTY;
        hasNull_ = false;
        hasNotNull_ = false;
        passAll_ = false;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_ZoneMapPB_descriptor;
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.ZoneMapPB getDefaultInstanceForType() {
        return doris.segment_v2.SegmentV2.ZoneMapPB.getDefaultInstance();
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.ZoneMapPB build() {
        doris.segment_v2.SegmentV2.ZoneMapPB result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.ZoneMapPB buildPartial() {
        doris.segment_v2.SegmentV2.ZoneMapPB result = new doris.segment_v2.SegmentV2.ZoneMapPB(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(doris.segment_v2.SegmentV2.ZoneMapPB result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.min_ = min_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.max_ = max_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.hasNull_ = hasNull_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.hasNotNull_ = hasNotNull_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.passAll_ = passAll_;
          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 doris.segment_v2.SegmentV2.ZoneMapPB) {
          return mergeFrom((doris.segment_v2.SegmentV2.ZoneMapPB)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(doris.segment_v2.SegmentV2.ZoneMapPB other) {
        if (other == doris.segment_v2.SegmentV2.ZoneMapPB.getDefaultInstance()) return this;
        if (other.hasMin()) {
          setMin(other.getMin());
        }
        if (other.hasMax()) {
          setMax(other.getMax());
        }
        if (other.hasHasNull()) {
          setHasNull(other.getHasNull());
        }
        if (other.hasHasNotNull()) {
          setHasNotNull(other.getHasNotNull());
        }
        if (other.hasPassAll()) {
          setPassAll(other.getPassAll());
        }
        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: {
                min_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                max_ = input.readBytes();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 24: {
                hasNull_ = input.readBool();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 32: {
                hasNotNull_ = input.readBool();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
              case 40: {
                passAll_ = input.readBool();
                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 com.google.protobuf.ByteString min_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       * minimum not-null value, invalid when all values are null(has_not_null==false)
       * </pre>
       *
       * <code>optional bytes min = 1;</code>
       * @return Whether the min field is set.
       */
      @java.lang.Override
      public boolean hasMin() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * minimum not-null value, invalid when all values are null(has_not_null==false)
       * </pre>
       *
       * <code>optional bytes min = 1;</code>
       * @return The min.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getMin() {
        return min_;
      }
      /**
       * <pre>
       * minimum not-null value, invalid when all values are null(has_not_null==false)
       * </pre>
       *
       * <code>optional bytes min = 1;</code>
       * @param value The min to set.
       * @return This builder for chaining.
       */
      public Builder setMin(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        min_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * minimum not-null value, invalid when all values are null(has_not_null==false)
       * </pre>
       *
       * <code>optional bytes min = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearMin() {
        bitField0_ = (bitField0_ & ~0x00000001);
        min_ = getDefaultInstance().getMin();
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString max_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       * maximum not-null value, invalid when all values are null (has_not_null==false)
       * </pre>
       *
       * <code>optional bytes max = 2;</code>
       * @return Whether the max field is set.
       */
      @java.lang.Override
      public boolean hasMax() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * maximum not-null value, invalid when all values are null (has_not_null==false)
       * </pre>
       *
       * <code>optional bytes max = 2;</code>
       * @return The max.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getMax() {
        return max_;
      }
      /**
       * <pre>
       * maximum not-null value, invalid when all values are null (has_not_null==false)
       * </pre>
       *
       * <code>optional bytes max = 2;</code>
       * @param value The max to set.
       * @return This builder for chaining.
       */
      public Builder setMax(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        max_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * maximum not-null value, invalid when all values are null (has_not_null==false)
       * </pre>
       *
       * <code>optional bytes max = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearMax() {
        bitField0_ = (bitField0_ & ~0x00000002);
        max_ = getDefaultInstance().getMax();
        onChanged();
        return this;
      }

      private boolean hasNull_ ;
      /**
       * <pre>
       * whether the zone has null value
       * </pre>
       *
       * <code>optional bool has_null = 3;</code>
       * @return Whether the hasNull field is set.
       */
      @java.lang.Override
      public boolean hasHasNull() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * whether the zone has null value
       * </pre>
       *
       * <code>optional bool has_null = 3;</code>
       * @return The hasNull.
       */
      @java.lang.Override
      public boolean getHasNull() {
        return hasNull_;
      }
      /**
       * <pre>
       * whether the zone has null value
       * </pre>
       *
       * <code>optional bool has_null = 3;</code>
       * @param value The hasNull to set.
       * @return This builder for chaining.
       */
      public Builder setHasNull(boolean value) {

        hasNull_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * whether the zone has null value
       * </pre>
       *
       * <code>optional bool has_null = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearHasNull() {
        bitField0_ = (bitField0_ & ~0x00000004);
        hasNull_ = false;
        onChanged();
        return this;
      }

      private boolean hasNotNull_ ;
      /**
       * <pre>
       * whether the zone has not-null value
       * </pre>
       *
       * <code>optional bool has_not_null = 4;</code>
       * @return Whether the hasNotNull field is set.
       */
      @java.lang.Override
      public boolean hasHasNotNull() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * whether the zone has not-null value
       * </pre>
       *
       * <code>optional bool has_not_null = 4;</code>
       * @return The hasNotNull.
       */
      @java.lang.Override
      public boolean getHasNotNull() {
        return hasNotNull_;
      }
      /**
       * <pre>
       * whether the zone has not-null value
       * </pre>
       *
       * <code>optional bool has_not_null = 4;</code>
       * @param value The hasNotNull to set.
       * @return This builder for chaining.
       */
      public Builder setHasNotNull(boolean value) {

        hasNotNull_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * whether the zone has not-null value
       * </pre>
       *
       * <code>optional bool has_not_null = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearHasNotNull() {
        bitField0_ = (bitField0_ & ~0x00000008);
        hasNotNull_ = false;
        onChanged();
        return this;
      }

      private boolean passAll_ ;
      /**
       * <pre>
       * whether this zone is including all values;
       * </pre>
       *
       * <code>optional bool pass_all = 5 [default = false];</code>
       * @return Whether the passAll field is set.
       */
      @java.lang.Override
      public boolean hasPassAll() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * whether this zone is including all values;
       * </pre>
       *
       * <code>optional bool pass_all = 5 [default = false];</code>
       * @return The passAll.
       */
      @java.lang.Override
      public boolean getPassAll() {
        return passAll_;
      }
      /**
       * <pre>
       * whether this zone is including all values;
       * </pre>
       *
       * <code>optional bool pass_all = 5 [default = false];</code>
       * @param value The passAll to set.
       * @return This builder for chaining.
       */
      public Builder setPassAll(boolean value) {

        passAll_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * whether this zone is including all values;
       * </pre>
       *
       * <code>optional bool pass_all = 5 [default = false];</code>
       * @return This builder for chaining.
       */
      public Builder clearPassAll() {
        bitField0_ = (bitField0_ & ~0x00000010);
        passAll_ = false;
        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.segment_v2.ZoneMapPB)
    }

    // @@protoc_insertion_point(class_scope:doris.segment_v2.ZoneMapPB)
    private static final doris.segment_v2.SegmentV2.ZoneMapPB DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new doris.segment_v2.SegmentV2.ZoneMapPB();
    }

    public static doris.segment_v2.SegmentV2.ZoneMapPB getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<ZoneMapPB>
        PARSER = new com.google.protobuf.AbstractParser<ZoneMapPB>() {
      @java.lang.Override
      public ZoneMapPB 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<ZoneMapPB> parser() {
      return PARSER;
    }

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

    @java.lang.Override
    public doris.segment_v2.SegmentV2.ZoneMapPB getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ColumnPathPartInfoOrBuilder extends
      // @@protoc_insertion_point(interface_extends:doris.segment_v2.ColumnPathPartInfo)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * key represent a part of key in full parts info
     * </pre>
     *
     * <code>optional string key = 1;</code>
     * @return Whether the key field is set.
     */
    boolean hasKey();
    /**
     * <pre>
     * key represent a part of key in full parts info
     * </pre>
     *
     * <code>optional string key = 1;</code>
     * @return The key.
     */
    java.lang.String getKey();
    /**
     * <pre>
     * key represent a part of key in full parts info
     * </pre>
     *
     * <code>optional string key = 1;</code>
     * @return The bytes for key.
     */
    com.google.protobuf.ByteString
        getKeyBytes();

    /**
     * <pre>
     * is_nested indicates that the part if a nested array
     * </pre>
     *
     * <code>optional bool is_nested = 2;</code>
     * @return Whether the isNested field is set.
     */
    boolean hasIsNested();
    /**
     * <pre>
     * is_nested indicates that the part if a nested array
     * </pre>
     *
     * <code>optional bool is_nested = 2;</code>
     * @return The isNested.
     */
    boolean getIsNested();

    /**
     * <pre>
     * anonymous_array_level indicates the nested level of array
     * </pre>
     *
     * <code>optional uint32 anonymous_array_level = 3;</code>
     * @return Whether the anonymousArrayLevel field is set.
     */
    boolean hasAnonymousArrayLevel();
    /**
     * <pre>
     * anonymous_array_level indicates the nested level of array
     * </pre>
     *
     * <code>optional uint32 anonymous_array_level = 3;</code>
     * @return The anonymousArrayLevel.
     */
    int getAnonymousArrayLevel();
  }
  /**
   * Protobuf type {@code doris.segment_v2.ColumnPathPartInfo}
   */
  public static final class ColumnPathPartInfo extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:doris.segment_v2.ColumnPathPartInfo)
      ColumnPathPartInfoOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ColumnPathPartInfo.newBuilder() to construct.
    private ColumnPathPartInfo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ColumnPathPartInfo() {
      key_ = "";
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_ColumnPathPartInfo_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_ColumnPathPartInfo_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              doris.segment_v2.SegmentV2.ColumnPathPartInfo.class, doris.segment_v2.SegmentV2.ColumnPathPartInfo.Builder.class);
    }

    private int bitField0_;
    public static final int KEY_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object key_ = "";
    /**
     * <pre>
     * key represent a part of key in full parts info
     * </pre>
     *
     * <code>optional string key = 1;</code>
     * @return Whether the key field is set.
     */
    @java.lang.Override
    public boolean hasKey() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * key represent a part of key in full parts info
     * </pre>
     *
     * <code>optional string key = 1;</code>
     * @return The key.
     */
    @java.lang.Override
    public java.lang.String getKey() {
      java.lang.Object ref = key_;
      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()) {
          key_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * key represent a part of key in full parts info
     * </pre>
     *
     * <code>optional string key = 1;</code>
     * @return The bytes for key.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getKeyBytes() {
      java.lang.Object ref = key_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        key_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int IS_NESTED_FIELD_NUMBER = 2;
    private boolean isNested_ = false;
    /**
     * <pre>
     * is_nested indicates that the part if a nested array
     * </pre>
     *
     * <code>optional bool is_nested = 2;</code>
     * @return Whether the isNested field is set.
     */
    @java.lang.Override
    public boolean hasIsNested() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * is_nested indicates that the part if a nested array
     * </pre>
     *
     * <code>optional bool is_nested = 2;</code>
     * @return The isNested.
     */
    @java.lang.Override
    public boolean getIsNested() {
      return isNested_;
    }

    public static final int ANONYMOUS_ARRAY_LEVEL_FIELD_NUMBER = 3;
    private int anonymousArrayLevel_ = 0;
    /**
     * <pre>
     * anonymous_array_level indicates the nested level of array
     * </pre>
     *
     * <code>optional uint32 anonymous_array_level = 3;</code>
     * @return Whether the anonymousArrayLevel field is set.
     */
    @java.lang.Override
    public boolean hasAnonymousArrayLevel() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * anonymous_array_level indicates the nested level of array
     * </pre>
     *
     * <code>optional uint32 anonymous_array_level = 3;</code>
     * @return The anonymousArrayLevel.
     */
    @java.lang.Override
    public int getAnonymousArrayLevel() {
      return anonymousArrayLevel_;
    }

    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 {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, key_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeBool(2, isNested_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeUInt32(3, anonymousArrayLevel_);
      }
      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.GeneratedMessageV3.computeStringSize(1, key_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, isNested_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(3, anonymousArrayLevel_);
      }
      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 doris.segment_v2.SegmentV2.ColumnPathPartInfo)) {
        return super.equals(obj);
      }
      doris.segment_v2.SegmentV2.ColumnPathPartInfo other = (doris.segment_v2.SegmentV2.ColumnPathPartInfo) obj;

      if (hasKey() != other.hasKey()) return false;
      if (hasKey()) {
        if (!getKey()
            .equals(other.getKey())) return false;
      }
      if (hasIsNested() != other.hasIsNested()) return false;
      if (hasIsNested()) {
        if (getIsNested()
            != other.getIsNested()) return false;
      }
      if (hasAnonymousArrayLevel() != other.hasAnonymousArrayLevel()) return false;
      if (hasAnonymousArrayLevel()) {
        if (getAnonymousArrayLevel()
            != other.getAnonymousArrayLevel()) 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 (hasKey()) {
        hash = (37 * hash) + KEY_FIELD_NUMBER;
        hash = (53 * hash) + getKey().hashCode();
      }
      if (hasIsNested()) {
        hash = (37 * hash) + IS_NESTED_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getIsNested());
      }
      if (hasAnonymousArrayLevel()) {
        hash = (37 * hash) + ANONYMOUS_ARRAY_LEVEL_FIELD_NUMBER;
        hash = (53 * hash) + getAnonymousArrayLevel();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static doris.segment_v2.SegmentV2.ColumnPathPartInfo parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.ColumnPathPartInfo parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.ColumnPathPartInfo parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.ColumnPathPartInfo parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.ColumnPathPartInfo parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.ColumnPathPartInfo parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.ColumnPathPartInfo parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.segment_v2.SegmentV2.ColumnPathPartInfo 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 doris.segment_v2.SegmentV2.ColumnPathPartInfo parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static doris.segment_v2.SegmentV2.ColumnPathPartInfo 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 doris.segment_v2.SegmentV2.ColumnPathPartInfo parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.segment_v2.SegmentV2.ColumnPathPartInfo 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(doris.segment_v2.SegmentV2.ColumnPathPartInfo 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.segment_v2.ColumnPathPartInfo}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:doris.segment_v2.ColumnPathPartInfo)
        doris.segment_v2.SegmentV2.ColumnPathPartInfoOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_ColumnPathPartInfo_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_ColumnPathPartInfo_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                doris.segment_v2.SegmentV2.ColumnPathPartInfo.class, doris.segment_v2.SegmentV2.ColumnPathPartInfo.Builder.class);
      }

      // Construct using doris.segment_v2.SegmentV2.ColumnPathPartInfo.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        key_ = "";
        isNested_ = false;
        anonymousArrayLevel_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_ColumnPathPartInfo_descriptor;
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.ColumnPathPartInfo getDefaultInstanceForType() {
        return doris.segment_v2.SegmentV2.ColumnPathPartInfo.getDefaultInstance();
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.ColumnPathPartInfo build() {
        doris.segment_v2.SegmentV2.ColumnPathPartInfo result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.ColumnPathPartInfo buildPartial() {
        doris.segment_v2.SegmentV2.ColumnPathPartInfo result = new doris.segment_v2.SegmentV2.ColumnPathPartInfo(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(doris.segment_v2.SegmentV2.ColumnPathPartInfo result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.key_ = key_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.isNested_ = isNested_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.anonymousArrayLevel_ = anonymousArrayLevel_;
          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 doris.segment_v2.SegmentV2.ColumnPathPartInfo) {
          return mergeFrom((doris.segment_v2.SegmentV2.ColumnPathPartInfo)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(doris.segment_v2.SegmentV2.ColumnPathPartInfo other) {
        if (other == doris.segment_v2.SegmentV2.ColumnPathPartInfo.getDefaultInstance()) return this;
        if (other.hasKey()) {
          key_ = other.key_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.hasIsNested()) {
          setIsNested(other.getIsNested());
        }
        if (other.hasAnonymousArrayLevel()) {
          setAnonymousArrayLevel(other.getAnonymousArrayLevel());
        }
        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: {
                key_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 16: {
                isNested_ = input.readBool();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 24: {
                anonymousArrayLevel_ = input.readUInt32();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              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 java.lang.Object key_ = "";
      /**
       * <pre>
       * key represent a part of key in full parts info
       * </pre>
       *
       * <code>optional string key = 1;</code>
       * @return Whether the key field is set.
       */
      public boolean hasKey() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * key represent a part of key in full parts info
       * </pre>
       *
       * <code>optional string key = 1;</code>
       * @return The key.
       */
      public java.lang.String getKey() {
        java.lang.Object ref = key_;
        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()) {
            key_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * key represent a part of key in full parts info
       * </pre>
       *
       * <code>optional string key = 1;</code>
       * @return The bytes for key.
       */
      public com.google.protobuf.ByteString
          getKeyBytes() {
        java.lang.Object ref = key_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          key_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * key represent a part of key in full parts info
       * </pre>
       *
       * <code>optional string key = 1;</code>
       * @param value The key to set.
       * @return This builder for chaining.
       */
      public Builder setKey(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        key_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * key represent a part of key in full parts info
       * </pre>
       *
       * <code>optional string key = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearKey() {
        key_ = getDefaultInstance().getKey();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * key represent a part of key in full parts info
       * </pre>
       *
       * <code>optional string key = 1;</code>
       * @param value The bytes for key to set.
       * @return This builder for chaining.
       */
      public Builder setKeyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        key_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private boolean isNested_ ;
      /**
       * <pre>
       * is_nested indicates that the part if a nested array
       * </pre>
       *
       * <code>optional bool is_nested = 2;</code>
       * @return Whether the isNested field is set.
       */
      @java.lang.Override
      public boolean hasIsNested() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * is_nested indicates that the part if a nested array
       * </pre>
       *
       * <code>optional bool is_nested = 2;</code>
       * @return The isNested.
       */
      @java.lang.Override
      public boolean getIsNested() {
        return isNested_;
      }
      /**
       * <pre>
       * is_nested indicates that the part if a nested array
       * </pre>
       *
       * <code>optional bool is_nested = 2;</code>
       * @param value The isNested to set.
       * @return This builder for chaining.
       */
      public Builder setIsNested(boolean value) {

        isNested_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * is_nested indicates that the part if a nested array
       * </pre>
       *
       * <code>optional bool is_nested = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsNested() {
        bitField0_ = (bitField0_ & ~0x00000002);
        isNested_ = false;
        onChanged();
        return this;
      }

      private int anonymousArrayLevel_ ;
      /**
       * <pre>
       * anonymous_array_level indicates the nested level of array
       * </pre>
       *
       * <code>optional uint32 anonymous_array_level = 3;</code>
       * @return Whether the anonymousArrayLevel field is set.
       */
      @java.lang.Override
      public boolean hasAnonymousArrayLevel() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * anonymous_array_level indicates the nested level of array
       * </pre>
       *
       * <code>optional uint32 anonymous_array_level = 3;</code>
       * @return The anonymousArrayLevel.
       */
      @java.lang.Override
      public int getAnonymousArrayLevel() {
        return anonymousArrayLevel_;
      }
      /**
       * <pre>
       * anonymous_array_level indicates the nested level of array
       * </pre>
       *
       * <code>optional uint32 anonymous_array_level = 3;</code>
       * @param value The anonymousArrayLevel to set.
       * @return This builder for chaining.
       */
      public Builder setAnonymousArrayLevel(int value) {

        anonymousArrayLevel_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * anonymous_array_level indicates the nested level of array
       * </pre>
       *
       * <code>optional uint32 anonymous_array_level = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearAnonymousArrayLevel() {
        bitField0_ = (bitField0_ & ~0x00000004);
        anonymousArrayLevel_ = 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.segment_v2.ColumnPathPartInfo)
    }

    // @@protoc_insertion_point(class_scope:doris.segment_v2.ColumnPathPartInfo)
    private static final doris.segment_v2.SegmentV2.ColumnPathPartInfo DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new doris.segment_v2.SegmentV2.ColumnPathPartInfo();
    }

    public static doris.segment_v2.SegmentV2.ColumnPathPartInfo getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<ColumnPathPartInfo>
        PARSER = new com.google.protobuf.AbstractParser<ColumnPathPartInfo>() {
      @java.lang.Override
      public ColumnPathPartInfo 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<ColumnPathPartInfo> parser() {
      return PARSER;
    }

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

    @java.lang.Override
    public doris.segment_v2.SegmentV2.ColumnPathPartInfo getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ColumnPathInfoOrBuilder extends
      // @@protoc_insertion_point(interface_extends:doris.segment_v2.ColumnPathInfo)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The full path string representation
     * </pre>
     *
     * <code>optional string path = 1;</code>
     * @return Whether the path field is set.
     */
    boolean hasPath();
    /**
     * <pre>
     * The full path string representation
     * </pre>
     *
     * <code>optional string path = 1;</code>
     * @return The path.
     */
    java.lang.String getPath();
    /**
     * <pre>
     * The full path string representation
     * </pre>
     *
     * <code>optional string path = 1;</code>
     * @return The bytes for path.
     */
    com.google.protobuf.ByteString
        getPathBytes();

    /**
     * <pre>
     * A list of parts, each part indicate a sub path of the whole path
     * </pre>
     *
     * <code>repeated .doris.segment_v2.ColumnPathPartInfo path_part_infos = 2;</code>
     */
    java.util.List<doris.segment_v2.SegmentV2.ColumnPathPartInfo> 
        getPathPartInfosList();
    /**
     * <pre>
     * A list of parts, each part indicate a sub path of the whole path
     * </pre>
     *
     * <code>repeated .doris.segment_v2.ColumnPathPartInfo path_part_infos = 2;</code>
     */
    doris.segment_v2.SegmentV2.ColumnPathPartInfo getPathPartInfos(int index);
    /**
     * <pre>
     * A list of parts, each part indicate a sub path of the whole path
     * </pre>
     *
     * <code>repeated .doris.segment_v2.ColumnPathPartInfo path_part_infos = 2;</code>
     */
    int getPathPartInfosCount();
    /**
     * <pre>
     * A list of parts, each part indicate a sub path of the whole path
     * </pre>
     *
     * <code>repeated .doris.segment_v2.ColumnPathPartInfo path_part_infos = 2;</code>
     */
    java.util.List<? extends doris.segment_v2.SegmentV2.ColumnPathPartInfoOrBuilder> 
        getPathPartInfosOrBuilderList();
    /**
     * <pre>
     * A list of parts, each part indicate a sub path of the whole path
     * </pre>
     *
     * <code>repeated .doris.segment_v2.ColumnPathPartInfo path_part_infos = 2;</code>
     */
    doris.segment_v2.SegmentV2.ColumnPathPartInfoOrBuilder getPathPartInfosOrBuilder(
        int index);

    /**
     * <code>optional bool has_nested = 3;</code>
     * @return Whether the hasNested field is set.
     */
    boolean hasHasNested();
    /**
     * <code>optional bool has_nested = 3;</code>
     * @return The hasNested.
     */
    boolean getHasNested();

    /**
     * <pre>
     * The original parent variant's unique id, used to distinguish from different variants
     * </pre>
     *
     * <code>optional uint32 parrent_column_unique_id = 4;</code>
     * @return Whether the parrentColumnUniqueId field is set.
     */
    boolean hasParrentColumnUniqueId();
    /**
     * <pre>
     * The original parent variant's unique id, used to distinguish from different variants
     * </pre>
     *
     * <code>optional uint32 parrent_column_unique_id = 4;</code>
     * @return The parrentColumnUniqueId.
     */
    int getParrentColumnUniqueId();
  }
  /**
   * <pre>
   * Persist info for PathInData that represents path in document, e.g. JSON.
   * Each variant's subcolumn must persist it's path info to storage, since it only
   * uses path info to identify a column in storage instead of column unique id
   * </pre>
   *
   * Protobuf type {@code doris.segment_v2.ColumnPathInfo}
   */
  public static final class ColumnPathInfo extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:doris.segment_v2.ColumnPathInfo)
      ColumnPathInfoOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ColumnPathInfo.newBuilder() to construct.
    private ColumnPathInfo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ColumnPathInfo() {
      path_ = "";
      pathPartInfos_ = java.util.Collections.emptyList();
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_ColumnPathInfo_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_ColumnPathInfo_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              doris.segment_v2.SegmentV2.ColumnPathInfo.class, doris.segment_v2.SegmentV2.ColumnPathInfo.Builder.class);
    }

    private int bitField0_;
    public static final int PATH_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object path_ = "";
    /**
     * <pre>
     * The full path string representation
     * </pre>
     *
     * <code>optional string path = 1;</code>
     * @return Whether the path field is set.
     */
    @java.lang.Override
    public boolean hasPath() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * The full path string representation
     * </pre>
     *
     * <code>optional string path = 1;</code>
     * @return The path.
     */
    @java.lang.Override
    public java.lang.String getPath() {
      java.lang.Object ref = path_;
      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()) {
          path_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The full path string representation
     * </pre>
     *
     * <code>optional string path = 1;</code>
     * @return The bytes for path.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPathBytes() {
      java.lang.Object ref = path_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        path_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PATH_PART_INFOS_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private java.util.List<doris.segment_v2.SegmentV2.ColumnPathPartInfo> pathPartInfos_;
    /**
     * <pre>
     * A list of parts, each part indicate a sub path of the whole path
     * </pre>
     *
     * <code>repeated .doris.segment_v2.ColumnPathPartInfo path_part_infos = 2;</code>
     */
    @java.lang.Override
    public java.util.List<doris.segment_v2.SegmentV2.ColumnPathPartInfo> getPathPartInfosList() {
      return pathPartInfos_;
    }
    /**
     * <pre>
     * A list of parts, each part indicate a sub path of the whole path
     * </pre>
     *
     * <code>repeated .doris.segment_v2.ColumnPathPartInfo path_part_infos = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends doris.segment_v2.SegmentV2.ColumnPathPartInfoOrBuilder> 
        getPathPartInfosOrBuilderList() {
      return pathPartInfos_;
    }
    /**
     * <pre>
     * A list of parts, each part indicate a sub path of the whole path
     * </pre>
     *
     * <code>repeated .doris.segment_v2.ColumnPathPartInfo path_part_infos = 2;</code>
     */
    @java.lang.Override
    public int getPathPartInfosCount() {
      return pathPartInfos_.size();
    }
    /**
     * <pre>
     * A list of parts, each part indicate a sub path of the whole path
     * </pre>
     *
     * <code>repeated .doris.segment_v2.ColumnPathPartInfo path_part_infos = 2;</code>
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.ColumnPathPartInfo getPathPartInfos(int index) {
      return pathPartInfos_.get(index);
    }
    /**
     * <pre>
     * A list of parts, each part indicate a sub path of the whole path
     * </pre>
     *
     * <code>repeated .doris.segment_v2.ColumnPathPartInfo path_part_infos = 2;</code>
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.ColumnPathPartInfoOrBuilder getPathPartInfosOrBuilder(
        int index) {
      return pathPartInfos_.get(index);
    }

    public static final int HAS_NESTED_FIELD_NUMBER = 3;
    private boolean hasNested_ = false;
    /**
     * <code>optional bool has_nested = 3;</code>
     * @return Whether the hasNested field is set.
     */
    @java.lang.Override
    public boolean hasHasNested() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>optional bool has_nested = 3;</code>
     * @return The hasNested.
     */
    @java.lang.Override
    public boolean getHasNested() {
      return hasNested_;
    }

    public static final int PARRENT_COLUMN_UNIQUE_ID_FIELD_NUMBER = 4;
    private int parrentColumnUniqueId_ = 0;
    /**
     * <pre>
     * The original parent variant's unique id, used to distinguish from different variants
     * </pre>
     *
     * <code>optional uint32 parrent_column_unique_id = 4;</code>
     * @return Whether the parrentColumnUniqueId field is set.
     */
    @java.lang.Override
    public boolean hasParrentColumnUniqueId() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * The original parent variant's unique id, used to distinguish from different variants
     * </pre>
     *
     * <code>optional uint32 parrent_column_unique_id = 4;</code>
     * @return The parrentColumnUniqueId.
     */
    @java.lang.Override
    public int getParrentColumnUniqueId() {
      return parrentColumnUniqueId_;
    }

    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 {
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, path_);
      }
      for (int i = 0; i < pathPartInfos_.size(); i++) {
        output.writeMessage(2, pathPartInfos_.get(i));
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeBool(3, hasNested_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeUInt32(4, parrentColumnUniqueId_);
      }
      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.GeneratedMessageV3.computeStringSize(1, path_);
      }
      for (int i = 0; i < pathPartInfos_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, pathPartInfos_.get(i));
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, hasNested_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(4, parrentColumnUniqueId_);
      }
      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 doris.segment_v2.SegmentV2.ColumnPathInfo)) {
        return super.equals(obj);
      }
      doris.segment_v2.SegmentV2.ColumnPathInfo other = (doris.segment_v2.SegmentV2.ColumnPathInfo) obj;

      if (hasPath() != other.hasPath()) return false;
      if (hasPath()) {
        if (!getPath()
            .equals(other.getPath())) return false;
      }
      if (!getPathPartInfosList()
          .equals(other.getPathPartInfosList())) return false;
      if (hasHasNested() != other.hasHasNested()) return false;
      if (hasHasNested()) {
        if (getHasNested()
            != other.getHasNested()) return false;
      }
      if (hasParrentColumnUniqueId() != other.hasParrentColumnUniqueId()) return false;
      if (hasParrentColumnUniqueId()) {
        if (getParrentColumnUniqueId()
            != other.getParrentColumnUniqueId()) 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 (hasPath()) {
        hash = (37 * hash) + PATH_FIELD_NUMBER;
        hash = (53 * hash) + getPath().hashCode();
      }
      if (getPathPartInfosCount() > 0) {
        hash = (37 * hash) + PATH_PART_INFOS_FIELD_NUMBER;
        hash = (53 * hash) + getPathPartInfosList().hashCode();
      }
      if (hasHasNested()) {
        hash = (37 * hash) + HAS_NESTED_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getHasNested());
      }
      if (hasParrentColumnUniqueId()) {
        hash = (37 * hash) + PARRENT_COLUMN_UNIQUE_ID_FIELD_NUMBER;
        hash = (53 * hash) + getParrentColumnUniqueId();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static doris.segment_v2.SegmentV2.ColumnPathInfo parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.ColumnPathInfo parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.ColumnPathInfo parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.ColumnPathInfo parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.ColumnPathInfo parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.ColumnPathInfo parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.ColumnPathInfo parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.segment_v2.SegmentV2.ColumnPathInfo 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 doris.segment_v2.SegmentV2.ColumnPathInfo parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static doris.segment_v2.SegmentV2.ColumnPathInfo 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 doris.segment_v2.SegmentV2.ColumnPathInfo parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.segment_v2.SegmentV2.ColumnPathInfo 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(doris.segment_v2.SegmentV2.ColumnPathInfo 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;
    }
    /**
     * <pre>
     * Persist info for PathInData that represents path in document, e.g. JSON.
     * Each variant's subcolumn must persist it's path info to storage, since it only
     * uses path info to identify a column in storage instead of column unique id
     * </pre>
     *
     * Protobuf type {@code doris.segment_v2.ColumnPathInfo}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:doris.segment_v2.ColumnPathInfo)
        doris.segment_v2.SegmentV2.ColumnPathInfoOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_ColumnPathInfo_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_ColumnPathInfo_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                doris.segment_v2.SegmentV2.ColumnPathInfo.class, doris.segment_v2.SegmentV2.ColumnPathInfo.Builder.class);
      }

      // Construct using doris.segment_v2.SegmentV2.ColumnPathInfo.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        path_ = "";
        if (pathPartInfosBuilder_ == null) {
          pathPartInfos_ = java.util.Collections.emptyList();
        } else {
          pathPartInfos_ = null;
          pathPartInfosBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        hasNested_ = false;
        parrentColumnUniqueId_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_ColumnPathInfo_descriptor;
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.ColumnPathInfo getDefaultInstanceForType() {
        return doris.segment_v2.SegmentV2.ColumnPathInfo.getDefaultInstance();
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.ColumnPathInfo build() {
        doris.segment_v2.SegmentV2.ColumnPathInfo result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.ColumnPathInfo buildPartial() {
        doris.segment_v2.SegmentV2.ColumnPathInfo result = new doris.segment_v2.SegmentV2.ColumnPathInfo(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(doris.segment_v2.SegmentV2.ColumnPathInfo result) {
        if (pathPartInfosBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            pathPartInfos_ = java.util.Collections.unmodifiableList(pathPartInfos_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.pathPartInfos_ = pathPartInfos_;
        } else {
          result.pathPartInfos_ = pathPartInfosBuilder_.build();
        }
      }

      private void buildPartial0(doris.segment_v2.SegmentV2.ColumnPathInfo result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.path_ = path_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.hasNested_ = hasNested_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.parrentColumnUniqueId_ = parrentColumnUniqueId_;
          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 doris.segment_v2.SegmentV2.ColumnPathInfo) {
          return mergeFrom((doris.segment_v2.SegmentV2.ColumnPathInfo)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(doris.segment_v2.SegmentV2.ColumnPathInfo other) {
        if (other == doris.segment_v2.SegmentV2.ColumnPathInfo.getDefaultInstance()) return this;
        if (other.hasPath()) {
          path_ = other.path_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (pathPartInfosBuilder_ == null) {
          if (!other.pathPartInfos_.isEmpty()) {
            if (pathPartInfos_.isEmpty()) {
              pathPartInfos_ = other.pathPartInfos_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensurePathPartInfosIsMutable();
              pathPartInfos_.addAll(other.pathPartInfos_);
            }
            onChanged();
          }
        } else {
          if (!other.pathPartInfos_.isEmpty()) {
            if (pathPartInfosBuilder_.isEmpty()) {
              pathPartInfosBuilder_.dispose();
              pathPartInfosBuilder_ = null;
              pathPartInfos_ = other.pathPartInfos_;
              bitField0_ = (bitField0_ & ~0x00000002);
              pathPartInfosBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getPathPartInfosFieldBuilder() : null;
            } else {
              pathPartInfosBuilder_.addAllMessages(other.pathPartInfos_);
            }
          }
        }
        if (other.hasHasNested()) {
          setHasNested(other.getHasNested());
        }
        if (other.hasParrentColumnUniqueId()) {
          setParrentColumnUniqueId(other.getParrentColumnUniqueId());
        }
        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: {
                path_ = input.readBytes();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                doris.segment_v2.SegmentV2.ColumnPathPartInfo m =
                    input.readMessage(
                        doris.segment_v2.SegmentV2.ColumnPathPartInfo.PARSER,
                        extensionRegistry);
                if (pathPartInfosBuilder_ == null) {
                  ensurePathPartInfosIsMutable();
                  pathPartInfos_.add(m);
                } else {
                  pathPartInfosBuilder_.addMessage(m);
                }
                break;
              } // case 18
              case 24: {
                hasNested_ = input.readBool();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 32: {
                parrentColumnUniqueId_ = input.readUInt32();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
              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 java.lang.Object path_ = "";
      /**
       * <pre>
       * The full path string representation
       * </pre>
       *
       * <code>optional string path = 1;</code>
       * @return Whether the path field is set.
       */
      public boolean hasPath() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * The full path string representation
       * </pre>
       *
       * <code>optional string path = 1;</code>
       * @return The path.
       */
      public java.lang.String getPath() {
        java.lang.Object ref = path_;
        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()) {
            path_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The full path string representation
       * </pre>
       *
       * <code>optional string path = 1;</code>
       * @return The bytes for path.
       */
      public com.google.protobuf.ByteString
          getPathBytes() {
        java.lang.Object ref = path_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          path_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The full path string representation
       * </pre>
       *
       * <code>optional string path = 1;</code>
       * @param value The path to set.
       * @return This builder for chaining.
       */
      public Builder setPath(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        path_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The full path string representation
       * </pre>
       *
       * <code>optional string path = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearPath() {
        path_ = getDefaultInstance().getPath();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The full path string representation
       * </pre>
       *
       * <code>optional string path = 1;</code>
       * @param value The bytes for path to set.
       * @return This builder for chaining.
       */
      public Builder setPathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        path_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.util.List<doris.segment_v2.SegmentV2.ColumnPathPartInfo> pathPartInfos_ =
        java.util.Collections.emptyList();
      private void ensurePathPartInfosIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          pathPartInfos_ = new java.util.ArrayList<doris.segment_v2.SegmentV2.ColumnPathPartInfo>(pathPartInfos_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          doris.segment_v2.SegmentV2.ColumnPathPartInfo, doris.segment_v2.SegmentV2.ColumnPathPartInfo.Builder, doris.segment_v2.SegmentV2.ColumnPathPartInfoOrBuilder> pathPartInfosBuilder_;

      /**
       * <pre>
       * A list of parts, each part indicate a sub path of the whole path
       * </pre>
       *
       * <code>repeated .doris.segment_v2.ColumnPathPartInfo path_part_infos = 2;</code>
       */
      public java.util.List<doris.segment_v2.SegmentV2.ColumnPathPartInfo> getPathPartInfosList() {
        if (pathPartInfosBuilder_ == null) {
          return java.util.Collections.unmodifiableList(pathPartInfos_);
        } else {
          return pathPartInfosBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * A list of parts, each part indicate a sub path of the whole path
       * </pre>
       *
       * <code>repeated .doris.segment_v2.ColumnPathPartInfo path_part_infos = 2;</code>
       */
      public int getPathPartInfosCount() {
        if (pathPartInfosBuilder_ == null) {
          return pathPartInfos_.size();
        } else {
          return pathPartInfosBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * A list of parts, each part indicate a sub path of the whole path
       * </pre>
       *
       * <code>repeated .doris.segment_v2.ColumnPathPartInfo path_part_infos = 2;</code>
       */
      public doris.segment_v2.SegmentV2.ColumnPathPartInfo getPathPartInfos(int index) {
        if (pathPartInfosBuilder_ == null) {
          return pathPartInfos_.get(index);
        } else {
          return pathPartInfosBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * A list of parts, each part indicate a sub path of the whole path
       * </pre>
       *
       * <code>repeated .doris.segment_v2.ColumnPathPartInfo path_part_infos = 2;</code>
       */
      public Builder setPathPartInfos(
          int index, doris.segment_v2.SegmentV2.ColumnPathPartInfo value) {
        if (pathPartInfosBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePathPartInfosIsMutable();
          pathPartInfos_.set(index, value);
          onChanged();
        } else {
          pathPartInfosBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * A list of parts, each part indicate a sub path of the whole path
       * </pre>
       *
       * <code>repeated .doris.segment_v2.ColumnPathPartInfo path_part_infos = 2;</code>
       */
      public Builder setPathPartInfos(
          int index, doris.segment_v2.SegmentV2.ColumnPathPartInfo.Builder builderForValue) {
        if (pathPartInfosBuilder_ == null) {
          ensurePathPartInfosIsMutable();
          pathPartInfos_.set(index, builderForValue.build());
          onChanged();
        } else {
          pathPartInfosBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * A list of parts, each part indicate a sub path of the whole path
       * </pre>
       *
       * <code>repeated .doris.segment_v2.ColumnPathPartInfo path_part_infos = 2;</code>
       */
      public Builder addPathPartInfos(doris.segment_v2.SegmentV2.ColumnPathPartInfo value) {
        if (pathPartInfosBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePathPartInfosIsMutable();
          pathPartInfos_.add(value);
          onChanged();
        } else {
          pathPartInfosBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * A list of parts, each part indicate a sub path of the whole path
       * </pre>
       *
       * <code>repeated .doris.segment_v2.ColumnPathPartInfo path_part_infos = 2;</code>
       */
      public Builder addPathPartInfos(
          int index, doris.segment_v2.SegmentV2.ColumnPathPartInfo value) {
        if (pathPartInfosBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePathPartInfosIsMutable();
          pathPartInfos_.add(index, value);
          onChanged();
        } else {
          pathPartInfosBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * A list of parts, each part indicate a sub path of the whole path
       * </pre>
       *
       * <code>repeated .doris.segment_v2.ColumnPathPartInfo path_part_infos = 2;</code>
       */
      public Builder addPathPartInfos(
          doris.segment_v2.SegmentV2.ColumnPathPartInfo.Builder builderForValue) {
        if (pathPartInfosBuilder_ == null) {
          ensurePathPartInfosIsMutable();
          pathPartInfos_.add(builderForValue.build());
          onChanged();
        } else {
          pathPartInfosBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * A list of parts, each part indicate a sub path of the whole path
       * </pre>
       *
       * <code>repeated .doris.segment_v2.ColumnPathPartInfo path_part_infos = 2;</code>
       */
      public Builder addPathPartInfos(
          int index, doris.segment_v2.SegmentV2.ColumnPathPartInfo.Builder builderForValue) {
        if (pathPartInfosBuilder_ == null) {
          ensurePathPartInfosIsMutable();
          pathPartInfos_.add(index, builderForValue.build());
          onChanged();
        } else {
          pathPartInfosBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * A list of parts, each part indicate a sub path of the whole path
       * </pre>
       *
       * <code>repeated .doris.segment_v2.ColumnPathPartInfo path_part_infos = 2;</code>
       */
      public Builder addAllPathPartInfos(
          java.lang.Iterable<? extends doris.segment_v2.SegmentV2.ColumnPathPartInfo> values) {
        if (pathPartInfosBuilder_ == null) {
          ensurePathPartInfosIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, pathPartInfos_);
          onChanged();
        } else {
          pathPartInfosBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * A list of parts, each part indicate a sub path of the whole path
       * </pre>
       *
       * <code>repeated .doris.segment_v2.ColumnPathPartInfo path_part_infos = 2;</code>
       */
      public Builder clearPathPartInfos() {
        if (pathPartInfosBuilder_ == null) {
          pathPartInfos_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          pathPartInfosBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * A list of parts, each part indicate a sub path of the whole path
       * </pre>
       *
       * <code>repeated .doris.segment_v2.ColumnPathPartInfo path_part_infos = 2;</code>
       */
      public Builder removePathPartInfos(int index) {
        if (pathPartInfosBuilder_ == null) {
          ensurePathPartInfosIsMutable();
          pathPartInfos_.remove(index);
          onChanged();
        } else {
          pathPartInfosBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * A list of parts, each part indicate a sub path of the whole path
       * </pre>
       *
       * <code>repeated .doris.segment_v2.ColumnPathPartInfo path_part_infos = 2;</code>
       */
      public doris.segment_v2.SegmentV2.ColumnPathPartInfo.Builder getPathPartInfosBuilder(
          int index) {
        return getPathPartInfosFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * A list of parts, each part indicate a sub path of the whole path
       * </pre>
       *
       * <code>repeated .doris.segment_v2.ColumnPathPartInfo path_part_infos = 2;</code>
       */
      public doris.segment_v2.SegmentV2.ColumnPathPartInfoOrBuilder getPathPartInfosOrBuilder(
          int index) {
        if (pathPartInfosBuilder_ == null) {
          return pathPartInfos_.get(index);  } else {
          return pathPartInfosBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * A list of parts, each part indicate a sub path of the whole path
       * </pre>
       *
       * <code>repeated .doris.segment_v2.ColumnPathPartInfo path_part_infos = 2;</code>
       */
      public java.util.List<? extends doris.segment_v2.SegmentV2.ColumnPathPartInfoOrBuilder> 
           getPathPartInfosOrBuilderList() {
        if (pathPartInfosBuilder_ != null) {
          return pathPartInfosBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(pathPartInfos_);
        }
      }
      /**
       * <pre>
       * A list of parts, each part indicate a sub path of the whole path
       * </pre>
       *
       * <code>repeated .doris.segment_v2.ColumnPathPartInfo path_part_infos = 2;</code>
       */
      public doris.segment_v2.SegmentV2.ColumnPathPartInfo.Builder addPathPartInfosBuilder() {
        return getPathPartInfosFieldBuilder().addBuilder(
            doris.segment_v2.SegmentV2.ColumnPathPartInfo.getDefaultInstance());
      }
      /**
       * <pre>
       * A list of parts, each part indicate a sub path of the whole path
       * </pre>
       *
       * <code>repeated .doris.segment_v2.ColumnPathPartInfo path_part_infos = 2;</code>
       */
      public doris.segment_v2.SegmentV2.ColumnPathPartInfo.Builder addPathPartInfosBuilder(
          int index) {
        return getPathPartInfosFieldBuilder().addBuilder(
            index, doris.segment_v2.SegmentV2.ColumnPathPartInfo.getDefaultInstance());
      }
      /**
       * <pre>
       * A list of parts, each part indicate a sub path of the whole path
       * </pre>
       *
       * <code>repeated .doris.segment_v2.ColumnPathPartInfo path_part_infos = 2;</code>
       */
      public java.util.List<doris.segment_v2.SegmentV2.ColumnPathPartInfo.Builder> 
           getPathPartInfosBuilderList() {
        return getPathPartInfosFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          doris.segment_v2.SegmentV2.ColumnPathPartInfo, doris.segment_v2.SegmentV2.ColumnPathPartInfo.Builder, doris.segment_v2.SegmentV2.ColumnPathPartInfoOrBuilder> 
          getPathPartInfosFieldBuilder() {
        if (pathPartInfosBuilder_ == null) {
          pathPartInfosBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              doris.segment_v2.SegmentV2.ColumnPathPartInfo, doris.segment_v2.SegmentV2.ColumnPathPartInfo.Builder, doris.segment_v2.SegmentV2.ColumnPathPartInfoOrBuilder>(
                  pathPartInfos_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          pathPartInfos_ = null;
        }
        return pathPartInfosBuilder_;
      }

      private boolean hasNested_ ;
      /**
       * <code>optional bool has_nested = 3;</code>
       * @return Whether the hasNested field is set.
       */
      @java.lang.Override
      public boolean hasHasNested() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>optional bool has_nested = 3;</code>
       * @return The hasNested.
       */
      @java.lang.Override
      public boolean getHasNested() {
        return hasNested_;
      }
      /**
       * <code>optional bool has_nested = 3;</code>
       * @param value The hasNested to set.
       * @return This builder for chaining.
       */
      public Builder setHasNested(boolean value) {

        hasNested_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>optional bool has_nested = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearHasNested() {
        bitField0_ = (bitField0_ & ~0x00000004);
        hasNested_ = false;
        onChanged();
        return this;
      }

      private int parrentColumnUniqueId_ ;
      /**
       * <pre>
       * The original parent variant's unique id, used to distinguish from different variants
       * </pre>
       *
       * <code>optional uint32 parrent_column_unique_id = 4;</code>
       * @return Whether the parrentColumnUniqueId field is set.
       */
      @java.lang.Override
      public boolean hasParrentColumnUniqueId() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * The original parent variant's unique id, used to distinguish from different variants
       * </pre>
       *
       * <code>optional uint32 parrent_column_unique_id = 4;</code>
       * @return The parrentColumnUniqueId.
       */
      @java.lang.Override
      public int getParrentColumnUniqueId() {
        return parrentColumnUniqueId_;
      }
      /**
       * <pre>
       * The original parent variant's unique id, used to distinguish from different variants
       * </pre>
       *
       * <code>optional uint32 parrent_column_unique_id = 4;</code>
       * @param value The parrentColumnUniqueId to set.
       * @return This builder for chaining.
       */
      public Builder setParrentColumnUniqueId(int value) {

        parrentColumnUniqueId_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The original parent variant's unique id, used to distinguish from different variants
       * </pre>
       *
       * <code>optional uint32 parrent_column_unique_id = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearParrentColumnUniqueId() {
        bitField0_ = (bitField0_ & ~0x00000008);
        parrentColumnUniqueId_ = 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.segment_v2.ColumnPathInfo)
    }

    // @@protoc_insertion_point(class_scope:doris.segment_v2.ColumnPathInfo)
    private static final doris.segment_v2.SegmentV2.ColumnPathInfo DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new doris.segment_v2.SegmentV2.ColumnPathInfo();
    }

    public static doris.segment_v2.SegmentV2.ColumnPathInfo getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<ColumnPathInfo>
        PARSER = new com.google.protobuf.AbstractParser<ColumnPathInfo>() {
      @java.lang.Override
      public ColumnPathInfo 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<ColumnPathInfo> parser() {
      return PARSER;
    }

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

    @java.lang.Override
    public doris.segment_v2.SegmentV2.ColumnPathInfo getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ColumnMetaPBOrBuilder extends
      // @@protoc_insertion_point(interface_extends:doris.segment_v2.ColumnMetaPB)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * column id in table schema
     * </pre>
     *
     * <code>optional uint32 column_id = 1;</code>
     * @return Whether the columnId field is set.
     */
    boolean hasColumnId();
    /**
     * <pre>
     * column id in table schema
     * </pre>
     *
     * <code>optional uint32 column_id = 1;</code>
     * @return The columnId.
     */
    int getColumnId();

    /**
     * <pre>
     * unique column id
     * </pre>
     *
     * <code>optional uint32 unique_id = 2;</code>
     * @return Whether the uniqueId field is set.
     */
    boolean hasUniqueId();
    /**
     * <pre>
     * unique column id
     * </pre>
     *
     * <code>optional uint32 unique_id = 2;</code>
     * @return The uniqueId.
     */
    int getUniqueId();

    /**
     * <pre>
     * this field is FieldType's value
     * </pre>
     *
     * <code>optional int32 type = 3;</code>
     * @return Whether the type field is set.
     */
    boolean hasType();
    /**
     * <pre>
     * this field is FieldType's value
     * </pre>
     *
     * <code>optional int32 type = 3;</code>
     * @return The type.
     */
    int getType();

    /**
     * <pre>
     * var length for string type
     * </pre>
     *
     * <code>optional int32 length = 4;</code>
     * @return Whether the length field is set.
     */
    boolean hasLength();
    /**
     * <pre>
     * var length for string type
     * </pre>
     *
     * <code>optional int32 length = 4;</code>
     * @return The length.
     */
    int getLength();

    /**
     * <code>optional .doris.segment_v2.EncodingTypePB encoding = 5;</code>
     * @return Whether the encoding field is set.
     */
    boolean hasEncoding();
    /**
     * <code>optional .doris.segment_v2.EncodingTypePB encoding = 5;</code>
     * @return The encoding.
     */
    doris.segment_v2.SegmentV2.EncodingTypePB getEncoding();

    /**
     * <pre>
     * compress type for column
     * </pre>
     *
     * <code>optional .doris.segment_v2.CompressionTypePB compression = 6;</code>
     * @return Whether the compression field is set.
     */
    boolean hasCompression();
    /**
     * <pre>
     * compress type for column
     * </pre>
     *
     * <code>optional .doris.segment_v2.CompressionTypePB compression = 6;</code>
     * @return The compression.
     */
    doris.segment_v2.SegmentV2.CompressionTypePB getCompression();

    /**
     * <pre>
     * if this column can be nullable
     * </pre>
     *
     * <code>optional bool is_nullable = 7;</code>
     * @return Whether the isNullable field is set.
     */
    boolean hasIsNullable();
    /**
     * <pre>
     * if this column can be nullable
     * </pre>
     *
     * <code>optional bool is_nullable = 7;</code>
     * @return The isNullable.
     */
    boolean getIsNullable();

    /**
     * <pre>
     * metadata about all the column indexes
     * </pre>
     *
     * <code>repeated .doris.segment_v2.ColumnIndexMetaPB indexes = 8;</code>
     */
    java.util.List<doris.segment_v2.SegmentV2.ColumnIndexMetaPB> 
        getIndexesList();
    /**
     * <pre>
     * metadata about all the column indexes
     * </pre>
     *
     * <code>repeated .doris.segment_v2.ColumnIndexMetaPB indexes = 8;</code>
     */
    doris.segment_v2.SegmentV2.ColumnIndexMetaPB getIndexes(int index);
    /**
     * <pre>
     * metadata about all the column indexes
     * </pre>
     *
     * <code>repeated .doris.segment_v2.ColumnIndexMetaPB indexes = 8;</code>
     */
    int getIndexesCount();
    /**
     * <pre>
     * metadata about all the column indexes
     * </pre>
     *
     * <code>repeated .doris.segment_v2.ColumnIndexMetaPB indexes = 8;</code>
     */
    java.util.List<? extends doris.segment_v2.SegmentV2.ColumnIndexMetaPBOrBuilder> 
        getIndexesOrBuilderList();
    /**
     * <pre>
     * metadata about all the column indexes
     * </pre>
     *
     * <code>repeated .doris.segment_v2.ColumnIndexMetaPB indexes = 8;</code>
     */
    doris.segment_v2.SegmentV2.ColumnIndexMetaPBOrBuilder getIndexesOrBuilder(
        int index);

    /**
     * <pre>
     * pointer to dictionary page when using DICT_ENCODING
     * </pre>
     *
     * <code>optional .doris.segment_v2.PagePointerPB dict_page = 9;</code>
     * @return Whether the dictPage field is set.
     */
    boolean hasDictPage();
    /**
     * <pre>
     * pointer to dictionary page when using DICT_ENCODING
     * </pre>
     *
     * <code>optional .doris.segment_v2.PagePointerPB dict_page = 9;</code>
     * @return The dictPage.
     */
    doris.segment_v2.SegmentV2.PagePointerPB getDictPage();
    /**
     * <pre>
     * pointer to dictionary page when using DICT_ENCODING
     * </pre>
     *
     * <code>optional .doris.segment_v2.PagePointerPB dict_page = 9;</code>
     */
    doris.segment_v2.SegmentV2.PagePointerPBOrBuilder getDictPageOrBuilder();

    /**
     * <code>repeated .doris.segment_v2.ColumnMetaPB children_columns = 10;</code>
     */
    java.util.List<doris.segment_v2.SegmentV2.ColumnMetaPB> 
        getChildrenColumnsList();
    /**
     * <code>repeated .doris.segment_v2.ColumnMetaPB children_columns = 10;</code>
     */
    doris.segment_v2.SegmentV2.ColumnMetaPB getChildrenColumns(int index);
    /**
     * <code>repeated .doris.segment_v2.ColumnMetaPB children_columns = 10;</code>
     */
    int getChildrenColumnsCount();
    /**
     * <code>repeated .doris.segment_v2.ColumnMetaPB children_columns = 10;</code>
     */
    java.util.List<? extends doris.segment_v2.SegmentV2.ColumnMetaPBOrBuilder> 
        getChildrenColumnsOrBuilderList();
    /**
     * <code>repeated .doris.segment_v2.ColumnMetaPB children_columns = 10;</code>
     */
    doris.segment_v2.SegmentV2.ColumnMetaPBOrBuilder getChildrenColumnsOrBuilder(
        int index);

    /**
     * <pre>
     * required by array/struct/map reader to create child reader.
     * </pre>
     *
     * <code>optional uint64 num_rows = 11;</code>
     * @return Whether the numRows field is set.
     */
    boolean hasNumRows();
    /**
     * <pre>
     * required by array/struct/map reader to create child reader.
     * </pre>
     *
     * <code>optional uint64 num_rows = 11;</code>
     * @return The numRows.
     */
    long getNumRows();

    /**
     * <code>repeated string children_column_names = 12;</code>
     * @return A list containing the childrenColumnNames.
     */
    java.util.List<java.lang.String>
        getChildrenColumnNamesList();
    /**
     * <code>repeated string children_column_names = 12;</code>
     * @return The count of childrenColumnNames.
     */
    int getChildrenColumnNamesCount();
    /**
     * <code>repeated string children_column_names = 12;</code>
     * @param index The index of the element to return.
     * @return The childrenColumnNames at the given index.
     */
    java.lang.String getChildrenColumnNames(int index);
    /**
     * <code>repeated string children_column_names = 12;</code>
     * @param index The index of the value to return.
     * @return The bytes of the childrenColumnNames at the given index.
     */
    com.google.protobuf.ByteString
        getChildrenColumnNamesBytes(int index);

    /**
     * <pre>
     * persist info for PathInData that represents path in document, e.g. JSON.
     * </pre>
     *
     * <code>optional .doris.segment_v2.ColumnPathInfo column_path_info = 13;</code>
     * @return Whether the columnPathInfo field is set.
     */
    boolean hasColumnPathInfo();
    /**
     * <pre>
     * persist info for PathInData that represents path in document, e.g. JSON.
     * </pre>
     *
     * <code>optional .doris.segment_v2.ColumnPathInfo column_path_info = 13;</code>
     * @return The columnPathInfo.
     */
    doris.segment_v2.SegmentV2.ColumnPathInfo getColumnPathInfo();
    /**
     * <pre>
     * persist info for PathInData that represents path in document, e.g. JSON.
     * </pre>
     *
     * <code>optional .doris.segment_v2.ColumnPathInfo column_path_info = 13;</code>
     */
    doris.segment_v2.SegmentV2.ColumnPathInfoOrBuilder getColumnPathInfoOrBuilder();

    /**
     * <pre>
     * Extra type info to be compatible with tabet schema
     * </pre>
     *
     * <code>optional bytes default_value = 14;</code>
     * @return Whether the defaultValue field is set.
     */
    boolean hasDefaultValue();
    /**
     * <pre>
     * Extra type info to be compatible with tabet schema
     * </pre>
     *
     * <code>optional bytes default_value = 14;</code>
     * @return The defaultValue.
     */
    com.google.protobuf.ByteString getDefaultValue();

    /**
     * <pre>
     * ColumnMessage.precision
     * </pre>
     *
     * <code>optional int32 precision = 15;</code>
     * @return Whether the precision field is set.
     */
    boolean hasPrecision();
    /**
     * <pre>
     * ColumnMessage.precision
     * </pre>
     *
     * <code>optional int32 precision = 15;</code>
     * @return The precision.
     */
    int getPrecision();

    /**
     * <pre>
     * ColumnMessag
     * </pre>
     *
     * <code>optional int32 frac = 16;</code>
     * @return Whether the frac field is set.
     */
    boolean hasFrac();
    /**
     * <pre>
     * ColumnMessag
     * </pre>
     *
     * <code>optional int32 frac = 16;</code>
     * @return The frac.
     */
    int getFrac();

    /**
     * <pre>
     * sparse column within a variant column
     * </pre>
     *
     * <code>repeated .doris.segment_v2.ColumnMetaPB sparse_columns = 17;</code>
     */
    java.util.List<doris.segment_v2.SegmentV2.ColumnMetaPB> 
        getSparseColumnsList();
    /**
     * <pre>
     * sparse column within a variant column
     * </pre>
     *
     * <code>repeated .doris.segment_v2.ColumnMetaPB sparse_columns = 17;</code>
     */
    doris.segment_v2.SegmentV2.ColumnMetaPB getSparseColumns(int index);
    /**
     * <pre>
     * sparse column within a variant column
     * </pre>
     *
     * <code>repeated .doris.segment_v2.ColumnMetaPB sparse_columns = 17;</code>
     */
    int getSparseColumnsCount();
    /**
     * <pre>
     * sparse column within a variant column
     * </pre>
     *
     * <code>repeated .doris.segment_v2.ColumnMetaPB sparse_columns = 17;</code>
     */
    java.util.List<? extends doris.segment_v2.SegmentV2.ColumnMetaPBOrBuilder> 
        getSparseColumnsOrBuilderList();
    /**
     * <pre>
     * sparse column within a variant column
     * </pre>
     *
     * <code>repeated .doris.segment_v2.ColumnMetaPB sparse_columns = 17;</code>
     */
    doris.segment_v2.SegmentV2.ColumnMetaPBOrBuilder getSparseColumnsOrBuilder(
        int index);

    /**
     * <pre>
     * used on agg_state type
     * </pre>
     *
     * <code>optional bool result_is_nullable = 18;</code>
     * @return Whether the resultIsNullable field is set.
     */
    boolean hasResultIsNullable();
    /**
     * <pre>
     * used on agg_state type
     * </pre>
     *
     * <code>optional bool result_is_nullable = 18;</code>
     * @return The resultIsNullable.
     */
    boolean getResultIsNullable();

    /**
     * <pre>
     * used on agg_state type
     * </pre>
     *
     * <code>optional string function_name = 19;</code>
     * @return Whether the functionName field is set.
     */
    boolean hasFunctionName();
    /**
     * <pre>
     * used on agg_state type
     * </pre>
     *
     * <code>optional string function_name = 19;</code>
     * @return The functionName.
     */
    java.lang.String getFunctionName();
    /**
     * <pre>
     * used on agg_state type
     * </pre>
     *
     * <code>optional string function_name = 19;</code>
     * @return The bytes for functionName.
     */
    com.google.protobuf.ByteString
        getFunctionNameBytes();

    /**
     * <pre>
     * used on agg_state type
     * </pre>
     *
     * <code>optional int32 be_exec_version = 20;</code>
     * @return Whether the beExecVersion field is set.
     */
    boolean hasBeExecVersion();
    /**
     * <pre>
     * used on agg_state type
     * </pre>
     *
     * <code>optional int32 be_exec_version = 20;</code>
     * @return The beExecVersion.
     */
    int getBeExecVersion();
  }
  /**
   * Protobuf type {@code doris.segment_v2.ColumnMetaPB}
   */
  public static final class ColumnMetaPB extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:doris.segment_v2.ColumnMetaPB)
      ColumnMetaPBOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ColumnMetaPB.newBuilder() to construct.
    private ColumnMetaPB(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ColumnMetaPB() {
      encoding_ = 0;
      compression_ = 0;
      indexes_ = java.util.Collections.emptyList();
      childrenColumns_ = java.util.Collections.emptyList();
      childrenColumnNames_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      defaultValue_ = com.google.protobuf.ByteString.EMPTY;
      sparseColumns_ = java.util.Collections.emptyList();
      functionName_ = "";
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_ColumnMetaPB_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_ColumnMetaPB_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              doris.segment_v2.SegmentV2.ColumnMetaPB.class, doris.segment_v2.SegmentV2.ColumnMetaPB.Builder.class);
    }

    private int bitField0_;
    public static final int COLUMN_ID_FIELD_NUMBER = 1;
    private int columnId_ = 0;
    /**
     * <pre>
     * column id in table schema
     * </pre>
     *
     * <code>optional uint32 column_id = 1;</code>
     * @return Whether the columnId field is set.
     */
    @java.lang.Override
    public boolean hasColumnId() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * column id in table schema
     * </pre>
     *
     * <code>optional uint32 column_id = 1;</code>
     * @return The columnId.
     */
    @java.lang.Override
    public int getColumnId() {
      return columnId_;
    }

    public static final int UNIQUE_ID_FIELD_NUMBER = 2;
    private int uniqueId_ = 0;
    /**
     * <pre>
     * unique column id
     * </pre>
     *
     * <code>optional uint32 unique_id = 2;</code>
     * @return Whether the uniqueId field is set.
     */
    @java.lang.Override
    public boolean hasUniqueId() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * unique column id
     * </pre>
     *
     * <code>optional uint32 unique_id = 2;</code>
     * @return The uniqueId.
     */
    @java.lang.Override
    public int getUniqueId() {
      return uniqueId_;
    }

    public static final int TYPE_FIELD_NUMBER = 3;
    private int type_ = 0;
    /**
     * <pre>
     * this field is FieldType's value
     * </pre>
     *
     * <code>optional int32 type = 3;</code>
     * @return Whether the type field is set.
     */
    @java.lang.Override
    public boolean hasType() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * this field is FieldType's value
     * </pre>
     *
     * <code>optional int32 type = 3;</code>
     * @return The type.
     */
    @java.lang.Override
    public int getType() {
      return type_;
    }

    public static final int LENGTH_FIELD_NUMBER = 4;
    private int length_ = 0;
    /**
     * <pre>
     * var length for string type
     * </pre>
     *
     * <code>optional int32 length = 4;</code>
     * @return Whether the length field is set.
     */
    @java.lang.Override
    public boolean hasLength() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * var length for string type
     * </pre>
     *
     * <code>optional int32 length = 4;</code>
     * @return The length.
     */
    @java.lang.Override
    public int getLength() {
      return length_;
    }

    public static final int ENCODING_FIELD_NUMBER = 5;
    private int encoding_ = 0;
    /**
     * <code>optional .doris.segment_v2.EncodingTypePB encoding = 5;</code>
     * @return Whether the encoding field is set.
     */
    @java.lang.Override public boolean hasEncoding() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <code>optional .doris.segment_v2.EncodingTypePB encoding = 5;</code>
     * @return The encoding.
     */
    @java.lang.Override public doris.segment_v2.SegmentV2.EncodingTypePB getEncoding() {
      doris.segment_v2.SegmentV2.EncodingTypePB result = doris.segment_v2.SegmentV2.EncodingTypePB.forNumber(encoding_);
      return result == null ? doris.segment_v2.SegmentV2.EncodingTypePB.UNKNOWN_ENCODING : result;
    }

    public static final int COMPRESSION_FIELD_NUMBER = 6;
    private int compression_ = 0;
    /**
     * <pre>
     * compress type for column
     * </pre>
     *
     * <code>optional .doris.segment_v2.CompressionTypePB compression = 6;</code>
     * @return Whether the compression field is set.
     */
    @java.lang.Override public boolean hasCompression() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * compress type for column
     * </pre>
     *
     * <code>optional .doris.segment_v2.CompressionTypePB compression = 6;</code>
     * @return The compression.
     */
    @java.lang.Override public doris.segment_v2.SegmentV2.CompressionTypePB getCompression() {
      doris.segment_v2.SegmentV2.CompressionTypePB result = doris.segment_v2.SegmentV2.CompressionTypePB.forNumber(compression_);
      return result == null ? doris.segment_v2.SegmentV2.CompressionTypePB.UNKNOWN_COMPRESSION : result;
    }

    public static final int IS_NULLABLE_FIELD_NUMBER = 7;
    private boolean isNullable_ = false;
    /**
     * <pre>
     * if this column can be nullable
     * </pre>
     *
     * <code>optional bool is_nullable = 7;</code>
     * @return Whether the isNullable field is set.
     */
    @java.lang.Override
    public boolean hasIsNullable() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <pre>
     * if this column can be nullable
     * </pre>
     *
     * <code>optional bool is_nullable = 7;</code>
     * @return The isNullable.
     */
    @java.lang.Override
    public boolean getIsNullable() {
      return isNullable_;
    }

    public static final int INDEXES_FIELD_NUMBER = 8;
    @SuppressWarnings("serial")
    private java.util.List<doris.segment_v2.SegmentV2.ColumnIndexMetaPB> indexes_;
    /**
     * <pre>
     * metadata about all the column indexes
     * </pre>
     *
     * <code>repeated .doris.segment_v2.ColumnIndexMetaPB indexes = 8;</code>
     */
    @java.lang.Override
    public java.util.List<doris.segment_v2.SegmentV2.ColumnIndexMetaPB> getIndexesList() {
      return indexes_;
    }
    /**
     * <pre>
     * metadata about all the column indexes
     * </pre>
     *
     * <code>repeated .doris.segment_v2.ColumnIndexMetaPB indexes = 8;</code>
     */
    @java.lang.Override
    public java.util.List<? extends doris.segment_v2.SegmentV2.ColumnIndexMetaPBOrBuilder> 
        getIndexesOrBuilderList() {
      return indexes_;
    }
    /**
     * <pre>
     * metadata about all the column indexes
     * </pre>
     *
     * <code>repeated .doris.segment_v2.ColumnIndexMetaPB indexes = 8;</code>
     */
    @java.lang.Override
    public int getIndexesCount() {
      return indexes_.size();
    }
    /**
     * <pre>
     * metadata about all the column indexes
     * </pre>
     *
     * <code>repeated .doris.segment_v2.ColumnIndexMetaPB indexes = 8;</code>
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.ColumnIndexMetaPB getIndexes(int index) {
      return indexes_.get(index);
    }
    /**
     * <pre>
     * metadata about all the column indexes
     * </pre>
     *
     * <code>repeated .doris.segment_v2.ColumnIndexMetaPB indexes = 8;</code>
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.ColumnIndexMetaPBOrBuilder getIndexesOrBuilder(
        int index) {
      return indexes_.get(index);
    }

    public static final int DICT_PAGE_FIELD_NUMBER = 9;
    private doris.segment_v2.SegmentV2.PagePointerPB dictPage_;
    /**
     * <pre>
     * pointer to dictionary page when using DICT_ENCODING
     * </pre>
     *
     * <code>optional .doris.segment_v2.PagePointerPB dict_page = 9;</code>
     * @return Whether the dictPage field is set.
     */
    @java.lang.Override
    public boolean hasDictPage() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * <pre>
     * pointer to dictionary page when using DICT_ENCODING
     * </pre>
     *
     * <code>optional .doris.segment_v2.PagePointerPB dict_page = 9;</code>
     * @return The dictPage.
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.PagePointerPB getDictPage() {
      return dictPage_ == null ? doris.segment_v2.SegmentV2.PagePointerPB.getDefaultInstance() : dictPage_;
    }
    /**
     * <pre>
     * pointer to dictionary page when using DICT_ENCODING
     * </pre>
     *
     * <code>optional .doris.segment_v2.PagePointerPB dict_page = 9;</code>
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.PagePointerPBOrBuilder getDictPageOrBuilder() {
      return dictPage_ == null ? doris.segment_v2.SegmentV2.PagePointerPB.getDefaultInstance() : dictPage_;
    }

    public static final int CHILDREN_COLUMNS_FIELD_NUMBER = 10;
    @SuppressWarnings("serial")
    private java.util.List<doris.segment_v2.SegmentV2.ColumnMetaPB> childrenColumns_;
    /**
     * <code>repeated .doris.segment_v2.ColumnMetaPB children_columns = 10;</code>
     */
    @java.lang.Override
    public java.util.List<doris.segment_v2.SegmentV2.ColumnMetaPB> getChildrenColumnsList() {
      return childrenColumns_;
    }
    /**
     * <code>repeated .doris.segment_v2.ColumnMetaPB children_columns = 10;</code>
     */
    @java.lang.Override
    public java.util.List<? extends doris.segment_v2.SegmentV2.ColumnMetaPBOrBuilder> 
        getChildrenColumnsOrBuilderList() {
      return childrenColumns_;
    }
    /**
     * <code>repeated .doris.segment_v2.ColumnMetaPB children_columns = 10;</code>
     */
    @java.lang.Override
    public int getChildrenColumnsCount() {
      return childrenColumns_.size();
    }
    /**
     * <code>repeated .doris.segment_v2.ColumnMetaPB children_columns = 10;</code>
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.ColumnMetaPB getChildrenColumns(int index) {
      return childrenColumns_.get(index);
    }
    /**
     * <code>repeated .doris.segment_v2.ColumnMetaPB children_columns = 10;</code>
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.ColumnMetaPBOrBuilder getChildrenColumnsOrBuilder(
        int index) {
      return childrenColumns_.get(index);
    }

    public static final int NUM_ROWS_FIELD_NUMBER = 11;
    private long numRows_ = 0L;
    /**
     * <pre>
     * required by array/struct/map reader to create child reader.
     * </pre>
     *
     * <code>optional uint64 num_rows = 11;</code>
     * @return Whether the numRows field is set.
     */
    @java.lang.Override
    public boolean hasNumRows() {
      return ((bitField0_ & 0x00000100) != 0);
    }
    /**
     * <pre>
     * required by array/struct/map reader to create child reader.
     * </pre>
     *
     * <code>optional uint64 num_rows = 11;</code>
     * @return The numRows.
     */
    @java.lang.Override
    public long getNumRows() {
      return numRows_;
    }

    public static final int CHILDREN_COLUMN_NAMES_FIELD_NUMBER = 12;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList childrenColumnNames_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <code>repeated string children_column_names = 12;</code>
     * @return A list containing the childrenColumnNames.
     */
    public com.google.protobuf.ProtocolStringList
        getChildrenColumnNamesList() {
      return childrenColumnNames_;
    }
    /**
     * <code>repeated string children_column_names = 12;</code>
     * @return The count of childrenColumnNames.
     */
    public int getChildrenColumnNamesCount() {
      return childrenColumnNames_.size();
    }
    /**
     * <code>repeated string children_column_names = 12;</code>
     * @param index The index of the element to return.
     * @return The childrenColumnNames at the given index.
     */
    public java.lang.String getChildrenColumnNames(int index) {
      return childrenColumnNames_.get(index);
    }
    /**
     * <code>repeated string children_column_names = 12;</code>
     * @param index The index of the value to return.
     * @return The bytes of the childrenColumnNames at the given index.
     */
    public com.google.protobuf.ByteString
        getChildrenColumnNamesBytes(int index) {
      return childrenColumnNames_.getByteString(index);
    }

    public static final int COLUMN_PATH_INFO_FIELD_NUMBER = 13;
    private doris.segment_v2.SegmentV2.ColumnPathInfo columnPathInfo_;
    /**
     * <pre>
     * persist info for PathInData that represents path in document, e.g. JSON.
     * </pre>
     *
     * <code>optional .doris.segment_v2.ColumnPathInfo column_path_info = 13;</code>
     * @return Whether the columnPathInfo field is set.
     */
    @java.lang.Override
    public boolean hasColumnPathInfo() {
      return ((bitField0_ & 0x00000200) != 0);
    }
    /**
     * <pre>
     * persist info for PathInData that represents path in document, e.g. JSON.
     * </pre>
     *
     * <code>optional .doris.segment_v2.ColumnPathInfo column_path_info = 13;</code>
     * @return The columnPathInfo.
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.ColumnPathInfo getColumnPathInfo() {
      return columnPathInfo_ == null ? doris.segment_v2.SegmentV2.ColumnPathInfo.getDefaultInstance() : columnPathInfo_;
    }
    /**
     * <pre>
     * persist info for PathInData that represents path in document, e.g. JSON.
     * </pre>
     *
     * <code>optional .doris.segment_v2.ColumnPathInfo column_path_info = 13;</code>
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.ColumnPathInfoOrBuilder getColumnPathInfoOrBuilder() {
      return columnPathInfo_ == null ? doris.segment_v2.SegmentV2.ColumnPathInfo.getDefaultInstance() : columnPathInfo_;
    }

    public static final int DEFAULT_VALUE_FIELD_NUMBER = 14;
    private com.google.protobuf.ByteString defaultValue_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <pre>
     * Extra type info to be compatible with tabet schema
     * </pre>
     *
     * <code>optional bytes default_value = 14;</code>
     * @return Whether the defaultValue field is set.
     */
    @java.lang.Override
    public boolean hasDefaultValue() {
      return ((bitField0_ & 0x00000400) != 0);
    }
    /**
     * <pre>
     * Extra type info to be compatible with tabet schema
     * </pre>
     *
     * <code>optional bytes default_value = 14;</code>
     * @return The defaultValue.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getDefaultValue() {
      return defaultValue_;
    }

    public static final int PRECISION_FIELD_NUMBER = 15;
    private int precision_ = 0;
    /**
     * <pre>
     * ColumnMessage.precision
     * </pre>
     *
     * <code>optional int32 precision = 15;</code>
     * @return Whether the precision field is set.
     */
    @java.lang.Override
    public boolean hasPrecision() {
      return ((bitField0_ & 0x00000800) != 0);
    }
    /**
     * <pre>
     * ColumnMessage.precision
     * </pre>
     *
     * <code>optional int32 precision = 15;</code>
     * @return The precision.
     */
    @java.lang.Override
    public int getPrecision() {
      return precision_;
    }

    public static final int FRAC_FIELD_NUMBER = 16;
    private int frac_ = 0;
    /**
     * <pre>
     * ColumnMessag
     * </pre>
     *
     * <code>optional int32 frac = 16;</code>
     * @return Whether the frac field is set.
     */
    @java.lang.Override
    public boolean hasFrac() {
      return ((bitField0_ & 0x00001000) != 0);
    }
    /**
     * <pre>
     * ColumnMessag
     * </pre>
     *
     * <code>optional int32 frac = 16;</code>
     * @return The frac.
     */
    @java.lang.Override
    public int getFrac() {
      return frac_;
    }

    public static final int SPARSE_COLUMNS_FIELD_NUMBER = 17;
    @SuppressWarnings("serial")
    private java.util.List<doris.segment_v2.SegmentV2.ColumnMetaPB> sparseColumns_;
    /**
     * <pre>
     * sparse column within a variant column
     * </pre>
     *
     * <code>repeated .doris.segment_v2.ColumnMetaPB sparse_columns = 17;</code>
     */
    @java.lang.Override
    public java.util.List<doris.segment_v2.SegmentV2.ColumnMetaPB> getSparseColumnsList() {
      return sparseColumns_;
    }
    /**
     * <pre>
     * sparse column within a variant column
     * </pre>
     *
     * <code>repeated .doris.segment_v2.ColumnMetaPB sparse_columns = 17;</code>
     */
    @java.lang.Override
    public java.util.List<? extends doris.segment_v2.SegmentV2.ColumnMetaPBOrBuilder> 
        getSparseColumnsOrBuilderList() {
      return sparseColumns_;
    }
    /**
     * <pre>
     * sparse column within a variant column
     * </pre>
     *
     * <code>repeated .doris.segment_v2.ColumnMetaPB sparse_columns = 17;</code>
     */
    @java.lang.Override
    public int getSparseColumnsCount() {
      return sparseColumns_.size();
    }
    /**
     * <pre>
     * sparse column within a variant column
     * </pre>
     *
     * <code>repeated .doris.segment_v2.ColumnMetaPB sparse_columns = 17;</code>
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.ColumnMetaPB getSparseColumns(int index) {
      return sparseColumns_.get(index);
    }
    /**
     * <pre>
     * sparse column within a variant column
     * </pre>
     *
     * <code>repeated .doris.segment_v2.ColumnMetaPB sparse_columns = 17;</code>
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.ColumnMetaPBOrBuilder getSparseColumnsOrBuilder(
        int index) {
      return sparseColumns_.get(index);
    }

    public static final int RESULT_IS_NULLABLE_FIELD_NUMBER = 18;
    private boolean resultIsNullable_ = false;
    /**
     * <pre>
     * used on agg_state type
     * </pre>
     *
     * <code>optional bool result_is_nullable = 18;</code>
     * @return Whether the resultIsNullable field is set.
     */
    @java.lang.Override
    public boolean hasResultIsNullable() {
      return ((bitField0_ & 0x00002000) != 0);
    }
    /**
     * <pre>
     * used on agg_state type
     * </pre>
     *
     * <code>optional bool result_is_nullable = 18;</code>
     * @return The resultIsNullable.
     */
    @java.lang.Override
    public boolean getResultIsNullable() {
      return resultIsNullable_;
    }

    public static final int FUNCTION_NAME_FIELD_NUMBER = 19;
    @SuppressWarnings("serial")
    private volatile java.lang.Object functionName_ = "";
    /**
     * <pre>
     * used on agg_state type
     * </pre>
     *
     * <code>optional string function_name = 19;</code>
     * @return Whether the functionName field is set.
     */
    @java.lang.Override
    public boolean hasFunctionName() {
      return ((bitField0_ & 0x00004000) != 0);
    }
    /**
     * <pre>
     * used on agg_state type
     * </pre>
     *
     * <code>optional string function_name = 19;</code>
     * @return The functionName.
     */
    @java.lang.Override
    public java.lang.String getFunctionName() {
      java.lang.Object ref = functionName_;
      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()) {
          functionName_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * used on agg_state type
     * </pre>
     *
     * <code>optional string function_name = 19;</code>
     * @return The bytes for functionName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFunctionNameBytes() {
      java.lang.Object ref = functionName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        functionName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int BE_EXEC_VERSION_FIELD_NUMBER = 20;
    private int beExecVersion_ = 0;
    /**
     * <pre>
     * used on agg_state type
     * </pre>
     *
     * <code>optional int32 be_exec_version = 20;</code>
     * @return Whether the beExecVersion field is set.
     */
    @java.lang.Override
    public boolean hasBeExecVersion() {
      return ((bitField0_ & 0x00008000) != 0);
    }
    /**
     * <pre>
     * used on agg_state type
     * </pre>
     *
     * <code>optional int32 be_exec_version = 20;</code>
     * @return The beExecVersion.
     */
    @java.lang.Override
    public int getBeExecVersion() {
      return beExecVersion_;
    }

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

      for (int i = 0; i < getIndexesCount(); i++) {
        if (!getIndexes(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasDictPage()) {
        if (!getDictPage().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getChildrenColumnsCount(); i++) {
        if (!getChildrenColumns(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      for (int i = 0; i < getSparseColumnsCount(); i++) {
        if (!getSparseColumns(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.writeUInt32(1, columnId_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeUInt32(2, uniqueId_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeInt32(3, type_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeInt32(4, length_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeEnum(5, encoding_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeEnum(6, compression_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        output.writeBool(7, isNullable_);
      }
      for (int i = 0; i < indexes_.size(); i++) {
        output.writeMessage(8, indexes_.get(i));
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        output.writeMessage(9, getDictPage());
      }
      for (int i = 0; i < childrenColumns_.size(); i++) {
        output.writeMessage(10, childrenColumns_.get(i));
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        output.writeUInt64(11, numRows_);
      }
      for (int i = 0; i < childrenColumnNames_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 12, childrenColumnNames_.getRaw(i));
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        output.writeMessage(13, getColumnPathInfo());
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        output.writeBytes(14, defaultValue_);
      }
      if (((bitField0_ & 0x00000800) != 0)) {
        output.writeInt32(15, precision_);
      }
      if (((bitField0_ & 0x00001000) != 0)) {
        output.writeInt32(16, frac_);
      }
      for (int i = 0; i < sparseColumns_.size(); i++) {
        output.writeMessage(17, sparseColumns_.get(i));
      }
      if (((bitField0_ & 0x00002000) != 0)) {
        output.writeBool(18, resultIsNullable_);
      }
      if (((bitField0_ & 0x00004000) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 19, functionName_);
      }
      if (((bitField0_ & 0x00008000) != 0)) {
        output.writeInt32(20, beExecVersion_);
      }
      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
          .computeUInt32Size(1, columnId_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, uniqueId_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, type_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(4, length_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(5, encoding_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(6, compression_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(7, isNullable_);
      }
      for (int i = 0; i < indexes_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, indexes_.get(i));
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, getDictPage());
      }
      for (int i = 0; i < childrenColumns_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, childrenColumns_.get(i));
      }
      if (((bitField0_ & 0x00000100) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(11, numRows_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < childrenColumnNames_.size(); i++) {
          dataSize += computeStringSizeNoTag(childrenColumnNames_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getChildrenColumnNamesList().size();
      }
      if (((bitField0_ & 0x00000200) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(13, getColumnPathInfo());
      }
      if (((bitField0_ & 0x00000400) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(14, defaultValue_);
      }
      if (((bitField0_ & 0x00000800) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(15, precision_);
      }
      if (((bitField0_ & 0x00001000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(16, frac_);
      }
      for (int i = 0; i < sparseColumns_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(17, sparseColumns_.get(i));
      }
      if (((bitField0_ & 0x00002000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(18, resultIsNullable_);
      }
      if (((bitField0_ & 0x00004000) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(19, functionName_);
      }
      if (((bitField0_ & 0x00008000) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(20, beExecVersion_);
      }
      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 doris.segment_v2.SegmentV2.ColumnMetaPB)) {
        return super.equals(obj);
      }
      doris.segment_v2.SegmentV2.ColumnMetaPB other = (doris.segment_v2.SegmentV2.ColumnMetaPB) obj;

      if (hasColumnId() != other.hasColumnId()) return false;
      if (hasColumnId()) {
        if (getColumnId()
            != other.getColumnId()) return false;
      }
      if (hasUniqueId() != other.hasUniqueId()) return false;
      if (hasUniqueId()) {
        if (getUniqueId()
            != other.getUniqueId()) return false;
      }
      if (hasType() != other.hasType()) return false;
      if (hasType()) {
        if (getType()
            != other.getType()) return false;
      }
      if (hasLength() != other.hasLength()) return false;
      if (hasLength()) {
        if (getLength()
            != other.getLength()) return false;
      }
      if (hasEncoding() != other.hasEncoding()) return false;
      if (hasEncoding()) {
        if (encoding_ != other.encoding_) return false;
      }
      if (hasCompression() != other.hasCompression()) return false;
      if (hasCompression()) {
        if (compression_ != other.compression_) return false;
      }
      if (hasIsNullable() != other.hasIsNullable()) return false;
      if (hasIsNullable()) {
        if (getIsNullable()
            != other.getIsNullable()) return false;
      }
      if (!getIndexesList()
          .equals(other.getIndexesList())) return false;
      if (hasDictPage() != other.hasDictPage()) return false;
      if (hasDictPage()) {
        if (!getDictPage()
            .equals(other.getDictPage())) return false;
      }
      if (!getChildrenColumnsList()
          .equals(other.getChildrenColumnsList())) return false;
      if (hasNumRows() != other.hasNumRows()) return false;
      if (hasNumRows()) {
        if (getNumRows()
            != other.getNumRows()) return false;
      }
      if (!getChildrenColumnNamesList()
          .equals(other.getChildrenColumnNamesList())) return false;
      if (hasColumnPathInfo() != other.hasColumnPathInfo()) return false;
      if (hasColumnPathInfo()) {
        if (!getColumnPathInfo()
            .equals(other.getColumnPathInfo())) return false;
      }
      if (hasDefaultValue() != other.hasDefaultValue()) return false;
      if (hasDefaultValue()) {
        if (!getDefaultValue()
            .equals(other.getDefaultValue())) return false;
      }
      if (hasPrecision() != other.hasPrecision()) return false;
      if (hasPrecision()) {
        if (getPrecision()
            != other.getPrecision()) return false;
      }
      if (hasFrac() != other.hasFrac()) return false;
      if (hasFrac()) {
        if (getFrac()
            != other.getFrac()) return false;
      }
      if (!getSparseColumnsList()
          .equals(other.getSparseColumnsList())) return false;
      if (hasResultIsNullable() != other.hasResultIsNullable()) return false;
      if (hasResultIsNullable()) {
        if (getResultIsNullable()
            != other.getResultIsNullable()) return false;
      }
      if (hasFunctionName() != other.hasFunctionName()) return false;
      if (hasFunctionName()) {
        if (!getFunctionName()
            .equals(other.getFunctionName())) return false;
      }
      if (hasBeExecVersion() != other.hasBeExecVersion()) return false;
      if (hasBeExecVersion()) {
        if (getBeExecVersion()
            != other.getBeExecVersion()) 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 (hasColumnId()) {
        hash = (37 * hash) + COLUMN_ID_FIELD_NUMBER;
        hash = (53 * hash) + getColumnId();
      }
      if (hasUniqueId()) {
        hash = (37 * hash) + UNIQUE_ID_FIELD_NUMBER;
        hash = (53 * hash) + getUniqueId();
      }
      if (hasType()) {
        hash = (37 * hash) + TYPE_FIELD_NUMBER;
        hash = (53 * hash) + getType();
      }
      if (hasLength()) {
        hash = (37 * hash) + LENGTH_FIELD_NUMBER;
        hash = (53 * hash) + getLength();
      }
      if (hasEncoding()) {
        hash = (37 * hash) + ENCODING_FIELD_NUMBER;
        hash = (53 * hash) + encoding_;
      }
      if (hasCompression()) {
        hash = (37 * hash) + COMPRESSION_FIELD_NUMBER;
        hash = (53 * hash) + compression_;
      }
      if (hasIsNullable()) {
        hash = (37 * hash) + IS_NULLABLE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getIsNullable());
      }
      if (getIndexesCount() > 0) {
        hash = (37 * hash) + INDEXES_FIELD_NUMBER;
        hash = (53 * hash) + getIndexesList().hashCode();
      }
      if (hasDictPage()) {
        hash = (37 * hash) + DICT_PAGE_FIELD_NUMBER;
        hash = (53 * hash) + getDictPage().hashCode();
      }
      if (getChildrenColumnsCount() > 0) {
        hash = (37 * hash) + CHILDREN_COLUMNS_FIELD_NUMBER;
        hash = (53 * hash) + getChildrenColumnsList().hashCode();
      }
      if (hasNumRows()) {
        hash = (37 * hash) + NUM_ROWS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getNumRows());
      }
      if (getChildrenColumnNamesCount() > 0) {
        hash = (37 * hash) + CHILDREN_COLUMN_NAMES_FIELD_NUMBER;
        hash = (53 * hash) + getChildrenColumnNamesList().hashCode();
      }
      if (hasColumnPathInfo()) {
        hash = (37 * hash) + COLUMN_PATH_INFO_FIELD_NUMBER;
        hash = (53 * hash) + getColumnPathInfo().hashCode();
      }
      if (hasDefaultValue()) {
        hash = (37 * hash) + DEFAULT_VALUE_FIELD_NUMBER;
        hash = (53 * hash) + getDefaultValue().hashCode();
      }
      if (hasPrecision()) {
        hash = (37 * hash) + PRECISION_FIELD_NUMBER;
        hash = (53 * hash) + getPrecision();
      }
      if (hasFrac()) {
        hash = (37 * hash) + FRAC_FIELD_NUMBER;
        hash = (53 * hash) + getFrac();
      }
      if (getSparseColumnsCount() > 0) {
        hash = (37 * hash) + SPARSE_COLUMNS_FIELD_NUMBER;
        hash = (53 * hash) + getSparseColumnsList().hashCode();
      }
      if (hasResultIsNullable()) {
        hash = (37 * hash) + RESULT_IS_NULLABLE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getResultIsNullable());
      }
      if (hasFunctionName()) {
        hash = (37 * hash) + FUNCTION_NAME_FIELD_NUMBER;
        hash = (53 * hash) + getFunctionName().hashCode();
      }
      if (hasBeExecVersion()) {
        hash = (37 * hash) + BE_EXEC_VERSION_FIELD_NUMBER;
        hash = (53 * hash) + getBeExecVersion();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static doris.segment_v2.SegmentV2.ColumnMetaPB parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.ColumnMetaPB parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.ColumnMetaPB parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.ColumnMetaPB parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.ColumnMetaPB parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.ColumnMetaPB parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.ColumnMetaPB parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.segment_v2.SegmentV2.ColumnMetaPB 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 doris.segment_v2.SegmentV2.ColumnMetaPB parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static doris.segment_v2.SegmentV2.ColumnMetaPB 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 doris.segment_v2.SegmentV2.ColumnMetaPB parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.segment_v2.SegmentV2.ColumnMetaPB 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(doris.segment_v2.SegmentV2.ColumnMetaPB 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.segment_v2.ColumnMetaPB}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:doris.segment_v2.ColumnMetaPB)
        doris.segment_v2.SegmentV2.ColumnMetaPBOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_ColumnMetaPB_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_ColumnMetaPB_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                doris.segment_v2.SegmentV2.ColumnMetaPB.class, doris.segment_v2.SegmentV2.ColumnMetaPB.Builder.class);
      }

      // Construct using doris.segment_v2.SegmentV2.ColumnMetaPB.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getIndexesFieldBuilder();
          getDictPageFieldBuilder();
          getChildrenColumnsFieldBuilder();
          getColumnPathInfoFieldBuilder();
          getSparseColumnsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        columnId_ = 0;
        uniqueId_ = 0;
        type_ = 0;
        length_ = 0;
        encoding_ = 0;
        compression_ = 0;
        isNullable_ = false;
        if (indexesBuilder_ == null) {
          indexes_ = java.util.Collections.emptyList();
        } else {
          indexes_ = null;
          indexesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000080);
        dictPage_ = null;
        if (dictPageBuilder_ != null) {
          dictPageBuilder_.dispose();
          dictPageBuilder_ = null;
        }
        if (childrenColumnsBuilder_ == null) {
          childrenColumns_ = java.util.Collections.emptyList();
        } else {
          childrenColumns_ = null;
          childrenColumnsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000200);
        numRows_ = 0L;
        childrenColumnNames_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        columnPathInfo_ = null;
        if (columnPathInfoBuilder_ != null) {
          columnPathInfoBuilder_.dispose();
          columnPathInfoBuilder_ = null;
        }
        defaultValue_ = com.google.protobuf.ByteString.EMPTY;
        precision_ = 0;
        frac_ = 0;
        if (sparseColumnsBuilder_ == null) {
          sparseColumns_ = java.util.Collections.emptyList();
        } else {
          sparseColumns_ = null;
          sparseColumnsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00010000);
        resultIsNullable_ = false;
        functionName_ = "";
        beExecVersion_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_ColumnMetaPB_descriptor;
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.ColumnMetaPB getDefaultInstanceForType() {
        return doris.segment_v2.SegmentV2.ColumnMetaPB.getDefaultInstance();
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.ColumnMetaPB build() {
        doris.segment_v2.SegmentV2.ColumnMetaPB result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.ColumnMetaPB buildPartial() {
        doris.segment_v2.SegmentV2.ColumnMetaPB result = new doris.segment_v2.SegmentV2.ColumnMetaPB(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(doris.segment_v2.SegmentV2.ColumnMetaPB result) {
        if (indexesBuilder_ == null) {
          if (((bitField0_ & 0x00000080) != 0)) {
            indexes_ = java.util.Collections.unmodifiableList(indexes_);
            bitField0_ = (bitField0_ & ~0x00000080);
          }
          result.indexes_ = indexes_;
        } else {
          result.indexes_ = indexesBuilder_.build();
        }
        if (childrenColumnsBuilder_ == null) {
          if (((bitField0_ & 0x00000200) != 0)) {
            childrenColumns_ = java.util.Collections.unmodifiableList(childrenColumns_);
            bitField0_ = (bitField0_ & ~0x00000200);
          }
          result.childrenColumns_ = childrenColumns_;
        } else {
          result.childrenColumns_ = childrenColumnsBuilder_.build();
        }
        if (sparseColumnsBuilder_ == null) {
          if (((bitField0_ & 0x00010000) != 0)) {
            sparseColumns_ = java.util.Collections.unmodifiableList(sparseColumns_);
            bitField0_ = (bitField0_ & ~0x00010000);
          }
          result.sparseColumns_ = sparseColumns_;
        } else {
          result.sparseColumns_ = sparseColumnsBuilder_.build();
        }
      }

      private void buildPartial0(doris.segment_v2.SegmentV2.ColumnMetaPB result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.columnId_ = columnId_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.uniqueId_ = uniqueId_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.type_ = type_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.length_ = length_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.encoding_ = encoding_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.compression_ = compression_;
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.isNullable_ = isNullable_;
          to_bitField0_ |= 0x00000040;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.dictPage_ = dictPageBuilder_ == null
              ? dictPage_
              : dictPageBuilder_.build();
          to_bitField0_ |= 0x00000080;
        }
        if (((from_bitField0_ & 0x00000400) != 0)) {
          result.numRows_ = numRows_;
          to_bitField0_ |= 0x00000100;
        }
        if (((from_bitField0_ & 0x00000800) != 0)) {
          childrenColumnNames_.makeImmutable();
          result.childrenColumnNames_ = childrenColumnNames_;
        }
        if (((from_bitField0_ & 0x00001000) != 0)) {
          result.columnPathInfo_ = columnPathInfoBuilder_ == null
              ? columnPathInfo_
              : columnPathInfoBuilder_.build();
          to_bitField0_ |= 0x00000200;
        }
        if (((from_bitField0_ & 0x00002000) != 0)) {
          result.defaultValue_ = defaultValue_;
          to_bitField0_ |= 0x00000400;
        }
        if (((from_bitField0_ & 0x00004000) != 0)) {
          result.precision_ = precision_;
          to_bitField0_ |= 0x00000800;
        }
        if (((from_bitField0_ & 0x00008000) != 0)) {
          result.frac_ = frac_;
          to_bitField0_ |= 0x00001000;
        }
        if (((from_bitField0_ & 0x00020000) != 0)) {
          result.resultIsNullable_ = resultIsNullable_;
          to_bitField0_ |= 0x00002000;
        }
        if (((from_bitField0_ & 0x00040000) != 0)) {
          result.functionName_ = functionName_;
          to_bitField0_ |= 0x00004000;
        }
        if (((from_bitField0_ & 0x00080000) != 0)) {
          result.beExecVersion_ = beExecVersion_;
          to_bitField0_ |= 0x00008000;
        }
        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 doris.segment_v2.SegmentV2.ColumnMetaPB) {
          return mergeFrom((doris.segment_v2.SegmentV2.ColumnMetaPB)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(doris.segment_v2.SegmentV2.ColumnMetaPB other) {
        if (other == doris.segment_v2.SegmentV2.ColumnMetaPB.getDefaultInstance()) return this;
        if (other.hasColumnId()) {
          setColumnId(other.getColumnId());
        }
        if (other.hasUniqueId()) {
          setUniqueId(other.getUniqueId());
        }
        if (other.hasType()) {
          setType(other.getType());
        }
        if (other.hasLength()) {
          setLength(other.getLength());
        }
        if (other.hasEncoding()) {
          setEncoding(other.getEncoding());
        }
        if (other.hasCompression()) {
          setCompression(other.getCompression());
        }
        if (other.hasIsNullable()) {
          setIsNullable(other.getIsNullable());
        }
        if (indexesBuilder_ == null) {
          if (!other.indexes_.isEmpty()) {
            if (indexes_.isEmpty()) {
              indexes_ = other.indexes_;
              bitField0_ = (bitField0_ & ~0x00000080);
            } else {
              ensureIndexesIsMutable();
              indexes_.addAll(other.indexes_);
            }
            onChanged();
          }
        } else {
          if (!other.indexes_.isEmpty()) {
            if (indexesBuilder_.isEmpty()) {
              indexesBuilder_.dispose();
              indexesBuilder_ = null;
              indexes_ = other.indexes_;
              bitField0_ = (bitField0_ & ~0x00000080);
              indexesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getIndexesFieldBuilder() : null;
            } else {
              indexesBuilder_.addAllMessages(other.indexes_);
            }
          }
        }
        if (other.hasDictPage()) {
          mergeDictPage(other.getDictPage());
        }
        if (childrenColumnsBuilder_ == null) {
          if (!other.childrenColumns_.isEmpty()) {
            if (childrenColumns_.isEmpty()) {
              childrenColumns_ = other.childrenColumns_;
              bitField0_ = (bitField0_ & ~0x00000200);
            } else {
              ensureChildrenColumnsIsMutable();
              childrenColumns_.addAll(other.childrenColumns_);
            }
            onChanged();
          }
        } else {
          if (!other.childrenColumns_.isEmpty()) {
            if (childrenColumnsBuilder_.isEmpty()) {
              childrenColumnsBuilder_.dispose();
              childrenColumnsBuilder_ = null;
              childrenColumns_ = other.childrenColumns_;
              bitField0_ = (bitField0_ & ~0x00000200);
              childrenColumnsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getChildrenColumnsFieldBuilder() : null;
            } else {
              childrenColumnsBuilder_.addAllMessages(other.childrenColumns_);
            }
          }
        }
        if (other.hasNumRows()) {
          setNumRows(other.getNumRows());
        }
        if (!other.childrenColumnNames_.isEmpty()) {
          if (childrenColumnNames_.isEmpty()) {
            childrenColumnNames_ = other.childrenColumnNames_;
            bitField0_ |= 0x00000800;
          } else {
            ensureChildrenColumnNamesIsMutable();
            childrenColumnNames_.addAll(other.childrenColumnNames_);
          }
          onChanged();
        }
        if (other.hasColumnPathInfo()) {
          mergeColumnPathInfo(other.getColumnPathInfo());
        }
        if (other.hasDefaultValue()) {
          setDefaultValue(other.getDefaultValue());
        }
        if (other.hasPrecision()) {
          setPrecision(other.getPrecision());
        }
        if (other.hasFrac()) {
          setFrac(other.getFrac());
        }
        if (sparseColumnsBuilder_ == null) {
          if (!other.sparseColumns_.isEmpty()) {
            if (sparseColumns_.isEmpty()) {
              sparseColumns_ = other.sparseColumns_;
              bitField0_ = (bitField0_ & ~0x00010000);
            } else {
              ensureSparseColumnsIsMutable();
              sparseColumns_.addAll(other.sparseColumns_);
            }
            onChanged();
          }
        } else {
          if (!other.sparseColumns_.isEmpty()) {
            if (sparseColumnsBuilder_.isEmpty()) {
              sparseColumnsBuilder_.dispose();
              sparseColumnsBuilder_ = null;
              sparseColumns_ = other.sparseColumns_;
              bitField0_ = (bitField0_ & ~0x00010000);
              sparseColumnsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getSparseColumnsFieldBuilder() : null;
            } else {
              sparseColumnsBuilder_.addAllMessages(other.sparseColumns_);
            }
          }
        }
        if (other.hasResultIsNullable()) {
          setResultIsNullable(other.getResultIsNullable());
        }
        if (other.hasFunctionName()) {
          functionName_ = other.functionName_;
          bitField0_ |= 0x00040000;
          onChanged();
        }
        if (other.hasBeExecVersion()) {
          setBeExecVersion(other.getBeExecVersion());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        for (int i = 0; i < getIndexesCount(); i++) {
          if (!getIndexes(i).isInitialized()) {
            return false;
          }
        }
        if (hasDictPage()) {
          if (!getDictPage().isInitialized()) {
            return false;
          }
        }
        for (int i = 0; i < getChildrenColumnsCount(); i++) {
          if (!getChildrenColumns(i).isInitialized()) {
            return false;
          }
        }
        for (int i = 0; i < getSparseColumnsCount(); i++) {
          if (!getSparseColumns(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: {
                columnId_ = input.readUInt32();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 16: {
                uniqueId_ = input.readUInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 24: {
                type_ = input.readInt32();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 32: {
                length_ = input.readInt32();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
              case 40: {
                int tmpRaw = input.readEnum();
                doris.segment_v2.SegmentV2.EncodingTypePB tmpValue =
                    doris.segment_v2.SegmentV2.EncodingTypePB.forNumber(tmpRaw);
                if (tmpValue == null) {
                  mergeUnknownVarintField(5, tmpRaw);
                } else {
                  encoding_ = tmpRaw;
                  bitField0_ |= 0x00000010;
                }
                break;
              } // case 40
              case 48: {
                int tmpRaw = input.readEnum();
                doris.segment_v2.SegmentV2.CompressionTypePB tmpValue =
                    doris.segment_v2.SegmentV2.CompressionTypePB.forNumber(tmpRaw);
                if (tmpValue == null) {
                  mergeUnknownVarintField(6, tmpRaw);
                } else {
                  compression_ = tmpRaw;
                  bitField0_ |= 0x00000020;
                }
                break;
              } // case 48
              case 56: {
                isNullable_ = input.readBool();
                bitField0_ |= 0x00000040;
                break;
              } // case 56
              case 66: {
                doris.segment_v2.SegmentV2.ColumnIndexMetaPB m =
                    input.readMessage(
                        doris.segment_v2.SegmentV2.ColumnIndexMetaPB.PARSER,
                        extensionRegistry);
                if (indexesBuilder_ == null) {
                  ensureIndexesIsMutable();
                  indexes_.add(m);
                } else {
                  indexesBuilder_.addMessage(m);
                }
                break;
              } // case 66
              case 74: {
                input.readMessage(
                    getDictPageFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000100;
                break;
              } // case 74
              case 82: {
                doris.segment_v2.SegmentV2.ColumnMetaPB m =
                    input.readMessage(
                        doris.segment_v2.SegmentV2.ColumnMetaPB.PARSER,
                        extensionRegistry);
                if (childrenColumnsBuilder_ == null) {
                  ensureChildrenColumnsIsMutable();
                  childrenColumns_.add(m);
                } else {
                  childrenColumnsBuilder_.addMessage(m);
                }
                break;
              } // case 82
              case 88: {
                numRows_ = input.readUInt64();
                bitField0_ |= 0x00000400;
                break;
              } // case 88
              case 98: {
                com.google.protobuf.ByteString bs = input.readBytes();
                ensureChildrenColumnNamesIsMutable();
                childrenColumnNames_.add(bs);
                break;
              } // case 98
              case 106: {
                input.readMessage(
                    getColumnPathInfoFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00001000;
                break;
              } // case 106
              case 114: {
                defaultValue_ = input.readBytes();
                bitField0_ |= 0x00002000;
                break;
              } // case 114
              case 120: {
                precision_ = input.readInt32();
                bitField0_ |= 0x00004000;
                break;
              } // case 120
              case 128: {
                frac_ = input.readInt32();
                bitField0_ |= 0x00008000;
                break;
              } // case 128
              case 138: {
                doris.segment_v2.SegmentV2.ColumnMetaPB m =
                    input.readMessage(
                        doris.segment_v2.SegmentV2.ColumnMetaPB.PARSER,
                        extensionRegistry);
                if (sparseColumnsBuilder_ == null) {
                  ensureSparseColumnsIsMutable();
                  sparseColumns_.add(m);
                } else {
                  sparseColumnsBuilder_.addMessage(m);
                }
                break;
              } // case 138
              case 144: {
                resultIsNullable_ = input.readBool();
                bitField0_ |= 0x00020000;
                break;
              } // case 144
              case 154: {
                functionName_ = input.readBytes();
                bitField0_ |= 0x00040000;
                break;
              } // case 154
              case 160: {
                beExecVersion_ = input.readInt32();
                bitField0_ |= 0x00080000;
                break;
              } // case 160
              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 columnId_ ;
      /**
       * <pre>
       * column id in table schema
       * </pre>
       *
       * <code>optional uint32 column_id = 1;</code>
       * @return Whether the columnId field is set.
       */
      @java.lang.Override
      public boolean hasColumnId() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * column id in table schema
       * </pre>
       *
       * <code>optional uint32 column_id = 1;</code>
       * @return The columnId.
       */
      @java.lang.Override
      public int getColumnId() {
        return columnId_;
      }
      /**
       * <pre>
       * column id in table schema
       * </pre>
       *
       * <code>optional uint32 column_id = 1;</code>
       * @param value The columnId to set.
       * @return This builder for chaining.
       */
      public Builder setColumnId(int value) {

        columnId_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * column id in table schema
       * </pre>
       *
       * <code>optional uint32 column_id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearColumnId() {
        bitField0_ = (bitField0_ & ~0x00000001);
        columnId_ = 0;
        onChanged();
        return this;
      }

      private int uniqueId_ ;
      /**
       * <pre>
       * unique column id
       * </pre>
       *
       * <code>optional uint32 unique_id = 2;</code>
       * @return Whether the uniqueId field is set.
       */
      @java.lang.Override
      public boolean hasUniqueId() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * unique column id
       * </pre>
       *
       * <code>optional uint32 unique_id = 2;</code>
       * @return The uniqueId.
       */
      @java.lang.Override
      public int getUniqueId() {
        return uniqueId_;
      }
      /**
       * <pre>
       * unique column id
       * </pre>
       *
       * <code>optional uint32 unique_id = 2;</code>
       * @param value The uniqueId to set.
       * @return This builder for chaining.
       */
      public Builder setUniqueId(int value) {

        uniqueId_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * unique column id
       * </pre>
       *
       * <code>optional uint32 unique_id = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearUniqueId() {
        bitField0_ = (bitField0_ & ~0x00000002);
        uniqueId_ = 0;
        onChanged();
        return this;
      }

      private int type_ ;
      /**
       * <pre>
       * this field is FieldType's value
       * </pre>
       *
       * <code>optional int32 type = 3;</code>
       * @return Whether the type field is set.
       */
      @java.lang.Override
      public boolean hasType() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * this field is FieldType's value
       * </pre>
       *
       * <code>optional int32 type = 3;</code>
       * @return The type.
       */
      @java.lang.Override
      public int getType() {
        return type_;
      }
      /**
       * <pre>
       * this field is FieldType's value
       * </pre>
       *
       * <code>optional int32 type = 3;</code>
       * @param value The type to set.
       * @return This builder for chaining.
       */
      public Builder setType(int value) {

        type_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * this field is FieldType's value
       * </pre>
       *
       * <code>optional int32 type = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearType() {
        bitField0_ = (bitField0_ & ~0x00000004);
        type_ = 0;
        onChanged();
        return this;
      }

      private int length_ ;
      /**
       * <pre>
       * var length for string type
       * </pre>
       *
       * <code>optional int32 length = 4;</code>
       * @return Whether the length field is set.
       */
      @java.lang.Override
      public boolean hasLength() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * var length for string type
       * </pre>
       *
       * <code>optional int32 length = 4;</code>
       * @return The length.
       */
      @java.lang.Override
      public int getLength() {
        return length_;
      }
      /**
       * <pre>
       * var length for string type
       * </pre>
       *
       * <code>optional int32 length = 4;</code>
       * @param value The length to set.
       * @return This builder for chaining.
       */
      public Builder setLength(int value) {

        length_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * var length for string type
       * </pre>
       *
       * <code>optional int32 length = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearLength() {
        bitField0_ = (bitField0_ & ~0x00000008);
        length_ = 0;
        onChanged();
        return this;
      }

      private int encoding_ = 0;
      /**
       * <code>optional .doris.segment_v2.EncodingTypePB encoding = 5;</code>
       * @return Whether the encoding field is set.
       */
      @java.lang.Override public boolean hasEncoding() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <code>optional .doris.segment_v2.EncodingTypePB encoding = 5;</code>
       * @return The encoding.
       */
      @java.lang.Override
      public doris.segment_v2.SegmentV2.EncodingTypePB getEncoding() {
        doris.segment_v2.SegmentV2.EncodingTypePB result = doris.segment_v2.SegmentV2.EncodingTypePB.forNumber(encoding_);
        return result == null ? doris.segment_v2.SegmentV2.EncodingTypePB.UNKNOWN_ENCODING : result;
      }
      /**
       * <code>optional .doris.segment_v2.EncodingTypePB encoding = 5;</code>
       * @param value The encoding to set.
       * @return This builder for chaining.
       */
      public Builder setEncoding(doris.segment_v2.SegmentV2.EncodingTypePB value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000010;
        encoding_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>optional .doris.segment_v2.EncodingTypePB encoding = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearEncoding() {
        bitField0_ = (bitField0_ & ~0x00000010);
        encoding_ = 0;
        onChanged();
        return this;
      }

      private int compression_ = 0;
      /**
       * <pre>
       * compress type for column
       * </pre>
       *
       * <code>optional .doris.segment_v2.CompressionTypePB compression = 6;</code>
       * @return Whether the compression field is set.
       */
      @java.lang.Override public boolean hasCompression() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * compress type for column
       * </pre>
       *
       * <code>optional .doris.segment_v2.CompressionTypePB compression = 6;</code>
       * @return The compression.
       */
      @java.lang.Override
      public doris.segment_v2.SegmentV2.CompressionTypePB getCompression() {
        doris.segment_v2.SegmentV2.CompressionTypePB result = doris.segment_v2.SegmentV2.CompressionTypePB.forNumber(compression_);
        return result == null ? doris.segment_v2.SegmentV2.CompressionTypePB.UNKNOWN_COMPRESSION : result;
      }
      /**
       * <pre>
       * compress type for column
       * </pre>
       *
       * <code>optional .doris.segment_v2.CompressionTypePB compression = 6;</code>
       * @param value The compression to set.
       * @return This builder for chaining.
       */
      public Builder setCompression(doris.segment_v2.SegmentV2.CompressionTypePB value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000020;
        compression_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * compress type for column
       * </pre>
       *
       * <code>optional .doris.segment_v2.CompressionTypePB compression = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearCompression() {
        bitField0_ = (bitField0_ & ~0x00000020);
        compression_ = 0;
        onChanged();
        return this;
      }

      private boolean isNullable_ ;
      /**
       * <pre>
       * if this column can be nullable
       * </pre>
       *
       * <code>optional bool is_nullable = 7;</code>
       * @return Whether the isNullable field is set.
       */
      @java.lang.Override
      public boolean hasIsNullable() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <pre>
       * if this column can be nullable
       * </pre>
       *
       * <code>optional bool is_nullable = 7;</code>
       * @return The isNullable.
       */
      @java.lang.Override
      public boolean getIsNullable() {
        return isNullable_;
      }
      /**
       * <pre>
       * if this column can be nullable
       * </pre>
       *
       * <code>optional bool is_nullable = 7;</code>
       * @param value The isNullable to set.
       * @return This builder for chaining.
       */
      public Builder setIsNullable(boolean value) {

        isNullable_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * if this column can be nullable
       * </pre>
       *
       * <code>optional bool is_nullable = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsNullable() {
        bitField0_ = (bitField0_ & ~0x00000040);
        isNullable_ = false;
        onChanged();
        return this;
      }

      private java.util.List<doris.segment_v2.SegmentV2.ColumnIndexMetaPB> indexes_ =
        java.util.Collections.emptyList();
      private void ensureIndexesIsMutable() {
        if (!((bitField0_ & 0x00000080) != 0)) {
          indexes_ = new java.util.ArrayList<doris.segment_v2.SegmentV2.ColumnIndexMetaPB>(indexes_);
          bitField0_ |= 0x00000080;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          doris.segment_v2.SegmentV2.ColumnIndexMetaPB, doris.segment_v2.SegmentV2.ColumnIndexMetaPB.Builder, doris.segment_v2.SegmentV2.ColumnIndexMetaPBOrBuilder> indexesBuilder_;

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

      private doris.segment_v2.SegmentV2.PagePointerPB dictPage_;
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.PagePointerPB, doris.segment_v2.SegmentV2.PagePointerPB.Builder, doris.segment_v2.SegmentV2.PagePointerPBOrBuilder> dictPageBuilder_;
      /**
       * <pre>
       * pointer to dictionary page when using DICT_ENCODING
       * </pre>
       *
       * <code>optional .doris.segment_v2.PagePointerPB dict_page = 9;</code>
       * @return Whether the dictPage field is set.
       */
      public boolean hasDictPage() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * <pre>
       * pointer to dictionary page when using DICT_ENCODING
       * </pre>
       *
       * <code>optional .doris.segment_v2.PagePointerPB dict_page = 9;</code>
       * @return The dictPage.
       */
      public doris.segment_v2.SegmentV2.PagePointerPB getDictPage() {
        if (dictPageBuilder_ == null) {
          return dictPage_ == null ? doris.segment_v2.SegmentV2.PagePointerPB.getDefaultInstance() : dictPage_;
        } else {
          return dictPageBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * pointer to dictionary page when using DICT_ENCODING
       * </pre>
       *
       * <code>optional .doris.segment_v2.PagePointerPB dict_page = 9;</code>
       */
      public Builder setDictPage(doris.segment_v2.SegmentV2.PagePointerPB value) {
        if (dictPageBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          dictPage_ = value;
        } else {
          dictPageBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * pointer to dictionary page when using DICT_ENCODING
       * </pre>
       *
       * <code>optional .doris.segment_v2.PagePointerPB dict_page = 9;</code>
       */
      public Builder setDictPage(
          doris.segment_v2.SegmentV2.PagePointerPB.Builder builderForValue) {
        if (dictPageBuilder_ == null) {
          dictPage_ = builderForValue.build();
        } else {
          dictPageBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * pointer to dictionary page when using DICT_ENCODING
       * </pre>
       *
       * <code>optional .doris.segment_v2.PagePointerPB dict_page = 9;</code>
       */
      public Builder mergeDictPage(doris.segment_v2.SegmentV2.PagePointerPB value) {
        if (dictPageBuilder_ == null) {
          if (((bitField0_ & 0x00000100) != 0) &&
            dictPage_ != null &&
            dictPage_ != doris.segment_v2.SegmentV2.PagePointerPB.getDefaultInstance()) {
            getDictPageBuilder().mergeFrom(value);
          } else {
            dictPage_ = value;
          }
        } else {
          dictPageBuilder_.mergeFrom(value);
        }
        if (dictPage_ != null) {
          bitField0_ |= 0x00000100;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * pointer to dictionary page when using DICT_ENCODING
       * </pre>
       *
       * <code>optional .doris.segment_v2.PagePointerPB dict_page = 9;</code>
       */
      public Builder clearDictPage() {
        bitField0_ = (bitField0_ & ~0x00000100);
        dictPage_ = null;
        if (dictPageBuilder_ != null) {
          dictPageBuilder_.dispose();
          dictPageBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * pointer to dictionary page when using DICT_ENCODING
       * </pre>
       *
       * <code>optional .doris.segment_v2.PagePointerPB dict_page = 9;</code>
       */
      public doris.segment_v2.SegmentV2.PagePointerPB.Builder getDictPageBuilder() {
        bitField0_ |= 0x00000100;
        onChanged();
        return getDictPageFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * pointer to dictionary page when using DICT_ENCODING
       * </pre>
       *
       * <code>optional .doris.segment_v2.PagePointerPB dict_page = 9;</code>
       */
      public doris.segment_v2.SegmentV2.PagePointerPBOrBuilder getDictPageOrBuilder() {
        if (dictPageBuilder_ != null) {
          return dictPageBuilder_.getMessageOrBuilder();
        } else {
          return dictPage_ == null ?
              doris.segment_v2.SegmentV2.PagePointerPB.getDefaultInstance() : dictPage_;
        }
      }
      /**
       * <pre>
       * pointer to dictionary page when using DICT_ENCODING
       * </pre>
       *
       * <code>optional .doris.segment_v2.PagePointerPB dict_page = 9;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.PagePointerPB, doris.segment_v2.SegmentV2.PagePointerPB.Builder, doris.segment_v2.SegmentV2.PagePointerPBOrBuilder> 
          getDictPageFieldBuilder() {
        if (dictPageBuilder_ == null) {
          dictPageBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              doris.segment_v2.SegmentV2.PagePointerPB, doris.segment_v2.SegmentV2.PagePointerPB.Builder, doris.segment_v2.SegmentV2.PagePointerPBOrBuilder>(
                  getDictPage(),
                  getParentForChildren(),
                  isClean());
          dictPage_ = null;
        }
        return dictPageBuilder_;
      }

      private java.util.List<doris.segment_v2.SegmentV2.ColumnMetaPB> childrenColumns_ =
        java.util.Collections.emptyList();
      private void ensureChildrenColumnsIsMutable() {
        if (!((bitField0_ & 0x00000200) != 0)) {
          childrenColumns_ = new java.util.ArrayList<doris.segment_v2.SegmentV2.ColumnMetaPB>(childrenColumns_);
          bitField0_ |= 0x00000200;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          doris.segment_v2.SegmentV2.ColumnMetaPB, doris.segment_v2.SegmentV2.ColumnMetaPB.Builder, doris.segment_v2.SegmentV2.ColumnMetaPBOrBuilder> childrenColumnsBuilder_;

      /**
       * <code>repeated .doris.segment_v2.ColumnMetaPB children_columns = 10;</code>
       */
      public java.util.List<doris.segment_v2.SegmentV2.ColumnMetaPB> getChildrenColumnsList() {
        if (childrenColumnsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(childrenColumns_);
        } else {
          return childrenColumnsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .doris.segment_v2.ColumnMetaPB children_columns = 10;</code>
       */
      public int getChildrenColumnsCount() {
        if (childrenColumnsBuilder_ == null) {
          return childrenColumns_.size();
        } else {
          return childrenColumnsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .doris.segment_v2.ColumnMetaPB children_columns = 10;</code>
       */
      public doris.segment_v2.SegmentV2.ColumnMetaPB getChildrenColumns(int index) {
        if (childrenColumnsBuilder_ == null) {
          return childrenColumns_.get(index);
        } else {
          return childrenColumnsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .doris.segment_v2.ColumnMetaPB children_columns = 10;</code>
       */
      public Builder setChildrenColumns(
          int index, doris.segment_v2.SegmentV2.ColumnMetaPB value) {
        if (childrenColumnsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureChildrenColumnsIsMutable();
          childrenColumns_.set(index, value);
          onChanged();
        } else {
          childrenColumnsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .doris.segment_v2.ColumnMetaPB children_columns = 10;</code>
       */
      public Builder setChildrenColumns(
          int index, doris.segment_v2.SegmentV2.ColumnMetaPB.Builder builderForValue) {
        if (childrenColumnsBuilder_ == null) {
          ensureChildrenColumnsIsMutable();
          childrenColumns_.set(index, builderForValue.build());
          onChanged();
        } else {
          childrenColumnsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .doris.segment_v2.ColumnMetaPB children_columns = 10;</code>
       */
      public Builder addChildrenColumns(doris.segment_v2.SegmentV2.ColumnMetaPB value) {
        if (childrenColumnsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureChildrenColumnsIsMutable();
          childrenColumns_.add(value);
          onChanged();
        } else {
          childrenColumnsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .doris.segment_v2.ColumnMetaPB children_columns = 10;</code>
       */
      public Builder addChildrenColumns(
          int index, doris.segment_v2.SegmentV2.ColumnMetaPB value) {
        if (childrenColumnsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureChildrenColumnsIsMutable();
          childrenColumns_.add(index, value);
          onChanged();
        } else {
          childrenColumnsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .doris.segment_v2.ColumnMetaPB children_columns = 10;</code>
       */
      public Builder addChildrenColumns(
          doris.segment_v2.SegmentV2.ColumnMetaPB.Builder builderForValue) {
        if (childrenColumnsBuilder_ == null) {
          ensureChildrenColumnsIsMutable();
          childrenColumns_.add(builderForValue.build());
          onChanged();
        } else {
          childrenColumnsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .doris.segment_v2.ColumnMetaPB children_columns = 10;</code>
       */
      public Builder addChildrenColumns(
          int index, doris.segment_v2.SegmentV2.ColumnMetaPB.Builder builderForValue) {
        if (childrenColumnsBuilder_ == null) {
          ensureChildrenColumnsIsMutable();
          childrenColumns_.add(index, builderForValue.build());
          onChanged();
        } else {
          childrenColumnsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .doris.segment_v2.ColumnMetaPB children_columns = 10;</code>
       */
      public Builder addAllChildrenColumns(
          java.lang.Iterable<? extends doris.segment_v2.SegmentV2.ColumnMetaPB> values) {
        if (childrenColumnsBuilder_ == null) {
          ensureChildrenColumnsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, childrenColumns_);
          onChanged();
        } else {
          childrenColumnsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .doris.segment_v2.ColumnMetaPB children_columns = 10;</code>
       */
      public Builder clearChildrenColumns() {
        if (childrenColumnsBuilder_ == null) {
          childrenColumns_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000200);
          onChanged();
        } else {
          childrenColumnsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .doris.segment_v2.ColumnMetaPB children_columns = 10;</code>
       */
      public Builder removeChildrenColumns(int index) {
        if (childrenColumnsBuilder_ == null) {
          ensureChildrenColumnsIsMutable();
          childrenColumns_.remove(index);
          onChanged();
        } else {
          childrenColumnsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .doris.segment_v2.ColumnMetaPB children_columns = 10;</code>
       */
      public doris.segment_v2.SegmentV2.ColumnMetaPB.Builder getChildrenColumnsBuilder(
          int index) {
        return getChildrenColumnsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .doris.segment_v2.ColumnMetaPB children_columns = 10;</code>
       */
      public doris.segment_v2.SegmentV2.ColumnMetaPBOrBuilder getChildrenColumnsOrBuilder(
          int index) {
        if (childrenColumnsBuilder_ == null) {
          return childrenColumns_.get(index);  } else {
          return childrenColumnsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .doris.segment_v2.ColumnMetaPB children_columns = 10;</code>
       */
      public java.util.List<? extends doris.segment_v2.SegmentV2.ColumnMetaPBOrBuilder> 
           getChildrenColumnsOrBuilderList() {
        if (childrenColumnsBuilder_ != null) {
          return childrenColumnsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(childrenColumns_);
        }
      }
      /**
       * <code>repeated .doris.segment_v2.ColumnMetaPB children_columns = 10;</code>
       */
      public doris.segment_v2.SegmentV2.ColumnMetaPB.Builder addChildrenColumnsBuilder() {
        return getChildrenColumnsFieldBuilder().addBuilder(
            doris.segment_v2.SegmentV2.ColumnMetaPB.getDefaultInstance());
      }
      /**
       * <code>repeated .doris.segment_v2.ColumnMetaPB children_columns = 10;</code>
       */
      public doris.segment_v2.SegmentV2.ColumnMetaPB.Builder addChildrenColumnsBuilder(
          int index) {
        return getChildrenColumnsFieldBuilder().addBuilder(
            index, doris.segment_v2.SegmentV2.ColumnMetaPB.getDefaultInstance());
      }
      /**
       * <code>repeated .doris.segment_v2.ColumnMetaPB children_columns = 10;</code>
       */
      public java.util.List<doris.segment_v2.SegmentV2.ColumnMetaPB.Builder> 
           getChildrenColumnsBuilderList() {
        return getChildrenColumnsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          doris.segment_v2.SegmentV2.ColumnMetaPB, doris.segment_v2.SegmentV2.ColumnMetaPB.Builder, doris.segment_v2.SegmentV2.ColumnMetaPBOrBuilder> 
          getChildrenColumnsFieldBuilder() {
        if (childrenColumnsBuilder_ == null) {
          childrenColumnsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              doris.segment_v2.SegmentV2.ColumnMetaPB, doris.segment_v2.SegmentV2.ColumnMetaPB.Builder, doris.segment_v2.SegmentV2.ColumnMetaPBOrBuilder>(
                  childrenColumns_,
                  ((bitField0_ & 0x00000200) != 0),
                  getParentForChildren(),
                  isClean());
          childrenColumns_ = null;
        }
        return childrenColumnsBuilder_;
      }

      private long numRows_ ;
      /**
       * <pre>
       * required by array/struct/map reader to create child reader.
       * </pre>
       *
       * <code>optional uint64 num_rows = 11;</code>
       * @return Whether the numRows field is set.
       */
      @java.lang.Override
      public boolean hasNumRows() {
        return ((bitField0_ & 0x00000400) != 0);
      }
      /**
       * <pre>
       * required by array/struct/map reader to create child reader.
       * </pre>
       *
       * <code>optional uint64 num_rows = 11;</code>
       * @return The numRows.
       */
      @java.lang.Override
      public long getNumRows() {
        return numRows_;
      }
      /**
       * <pre>
       * required by array/struct/map reader to create child reader.
       * </pre>
       *
       * <code>optional uint64 num_rows = 11;</code>
       * @param value The numRows to set.
       * @return This builder for chaining.
       */
      public Builder setNumRows(long value) {

        numRows_ = value;
        bitField0_ |= 0x00000400;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * required by array/struct/map reader to create child reader.
       * </pre>
       *
       * <code>optional uint64 num_rows = 11;</code>
       * @return This builder for chaining.
       */
      public Builder clearNumRows() {
        bitField0_ = (bitField0_ & ~0x00000400);
        numRows_ = 0L;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringArrayList childrenColumnNames_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureChildrenColumnNamesIsMutable() {
        if (!childrenColumnNames_.isModifiable()) {
          childrenColumnNames_ = new com.google.protobuf.LazyStringArrayList(childrenColumnNames_);
        }
        bitField0_ |= 0x00000800;
      }
      /**
       * <code>repeated string children_column_names = 12;</code>
       * @return A list containing the childrenColumnNames.
       */
      public com.google.protobuf.ProtocolStringList
          getChildrenColumnNamesList() {
        childrenColumnNames_.makeImmutable();
        return childrenColumnNames_;
      }
      /**
       * <code>repeated string children_column_names = 12;</code>
       * @return The count of childrenColumnNames.
       */
      public int getChildrenColumnNamesCount() {
        return childrenColumnNames_.size();
      }
      /**
       * <code>repeated string children_column_names = 12;</code>
       * @param index The index of the element to return.
       * @return The childrenColumnNames at the given index.
       */
      public java.lang.String getChildrenColumnNames(int index) {
        return childrenColumnNames_.get(index);
      }
      /**
       * <code>repeated string children_column_names = 12;</code>
       * @param index The index of the value to return.
       * @return The bytes of the childrenColumnNames at the given index.
       */
      public com.google.protobuf.ByteString
          getChildrenColumnNamesBytes(int index) {
        return childrenColumnNames_.getByteString(index);
      }
      /**
       * <code>repeated string children_column_names = 12;</code>
       * @param index The index to set the value at.
       * @param value The childrenColumnNames to set.
       * @return This builder for chaining.
       */
      public Builder setChildrenColumnNames(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureChildrenColumnNamesIsMutable();
        childrenColumnNames_.set(index, value);
        bitField0_ |= 0x00000800;
        onChanged();
        return this;
      }
      /**
       * <code>repeated string children_column_names = 12;</code>
       * @param value The childrenColumnNames to add.
       * @return This builder for chaining.
       */
      public Builder addChildrenColumnNames(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureChildrenColumnNamesIsMutable();
        childrenColumnNames_.add(value);
        bitField0_ |= 0x00000800;
        onChanged();
        return this;
      }
      /**
       * <code>repeated string children_column_names = 12;</code>
       * @param values The childrenColumnNames to add.
       * @return This builder for chaining.
       */
      public Builder addAllChildrenColumnNames(
          java.lang.Iterable<java.lang.String> values) {
        ensureChildrenColumnNamesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, childrenColumnNames_);
        bitField0_ |= 0x00000800;
        onChanged();
        return this;
      }
      /**
       * <code>repeated string children_column_names = 12;</code>
       * @return This builder for chaining.
       */
      public Builder clearChildrenColumnNames() {
        childrenColumnNames_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000800);;
        onChanged();
        return this;
      }
      /**
       * <code>repeated string children_column_names = 12;</code>
       * @param value The bytes of the childrenColumnNames to add.
       * @return This builder for chaining.
       */
      public Builder addChildrenColumnNamesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        ensureChildrenColumnNamesIsMutable();
        childrenColumnNames_.add(value);
        bitField0_ |= 0x00000800;
        onChanged();
        return this;
      }

      private doris.segment_v2.SegmentV2.ColumnPathInfo columnPathInfo_;
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.ColumnPathInfo, doris.segment_v2.SegmentV2.ColumnPathInfo.Builder, doris.segment_v2.SegmentV2.ColumnPathInfoOrBuilder> columnPathInfoBuilder_;
      /**
       * <pre>
       * persist info for PathInData that represents path in document, e.g. JSON.
       * </pre>
       *
       * <code>optional .doris.segment_v2.ColumnPathInfo column_path_info = 13;</code>
       * @return Whether the columnPathInfo field is set.
       */
      public boolean hasColumnPathInfo() {
        return ((bitField0_ & 0x00001000) != 0);
      }
      /**
       * <pre>
       * persist info for PathInData that represents path in document, e.g. JSON.
       * </pre>
       *
       * <code>optional .doris.segment_v2.ColumnPathInfo column_path_info = 13;</code>
       * @return The columnPathInfo.
       */
      public doris.segment_v2.SegmentV2.ColumnPathInfo getColumnPathInfo() {
        if (columnPathInfoBuilder_ == null) {
          return columnPathInfo_ == null ? doris.segment_v2.SegmentV2.ColumnPathInfo.getDefaultInstance() : columnPathInfo_;
        } else {
          return columnPathInfoBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * persist info for PathInData that represents path in document, e.g. JSON.
       * </pre>
       *
       * <code>optional .doris.segment_v2.ColumnPathInfo column_path_info = 13;</code>
       */
      public Builder setColumnPathInfo(doris.segment_v2.SegmentV2.ColumnPathInfo value) {
        if (columnPathInfoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          columnPathInfo_ = value;
        } else {
          columnPathInfoBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00001000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * persist info for PathInData that represents path in document, e.g. JSON.
       * </pre>
       *
       * <code>optional .doris.segment_v2.ColumnPathInfo column_path_info = 13;</code>
       */
      public Builder setColumnPathInfo(
          doris.segment_v2.SegmentV2.ColumnPathInfo.Builder builderForValue) {
        if (columnPathInfoBuilder_ == null) {
          columnPathInfo_ = builderForValue.build();
        } else {
          columnPathInfoBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00001000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * persist info for PathInData that represents path in document, e.g. JSON.
       * </pre>
       *
       * <code>optional .doris.segment_v2.ColumnPathInfo column_path_info = 13;</code>
       */
      public Builder mergeColumnPathInfo(doris.segment_v2.SegmentV2.ColumnPathInfo value) {
        if (columnPathInfoBuilder_ == null) {
          if (((bitField0_ & 0x00001000) != 0) &&
            columnPathInfo_ != null &&
            columnPathInfo_ != doris.segment_v2.SegmentV2.ColumnPathInfo.getDefaultInstance()) {
            getColumnPathInfoBuilder().mergeFrom(value);
          } else {
            columnPathInfo_ = value;
          }
        } else {
          columnPathInfoBuilder_.mergeFrom(value);
        }
        if (columnPathInfo_ != null) {
          bitField0_ |= 0x00001000;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * persist info for PathInData that represents path in document, e.g. JSON.
       * </pre>
       *
       * <code>optional .doris.segment_v2.ColumnPathInfo column_path_info = 13;</code>
       */
      public Builder clearColumnPathInfo() {
        bitField0_ = (bitField0_ & ~0x00001000);
        columnPathInfo_ = null;
        if (columnPathInfoBuilder_ != null) {
          columnPathInfoBuilder_.dispose();
          columnPathInfoBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * persist info for PathInData that represents path in document, e.g. JSON.
       * </pre>
       *
       * <code>optional .doris.segment_v2.ColumnPathInfo column_path_info = 13;</code>
       */
      public doris.segment_v2.SegmentV2.ColumnPathInfo.Builder getColumnPathInfoBuilder() {
        bitField0_ |= 0x00001000;
        onChanged();
        return getColumnPathInfoFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * persist info for PathInData that represents path in document, e.g. JSON.
       * </pre>
       *
       * <code>optional .doris.segment_v2.ColumnPathInfo column_path_info = 13;</code>
       */
      public doris.segment_v2.SegmentV2.ColumnPathInfoOrBuilder getColumnPathInfoOrBuilder() {
        if (columnPathInfoBuilder_ != null) {
          return columnPathInfoBuilder_.getMessageOrBuilder();
        } else {
          return columnPathInfo_ == null ?
              doris.segment_v2.SegmentV2.ColumnPathInfo.getDefaultInstance() : columnPathInfo_;
        }
      }
      /**
       * <pre>
       * persist info for PathInData that represents path in document, e.g. JSON.
       * </pre>
       *
       * <code>optional .doris.segment_v2.ColumnPathInfo column_path_info = 13;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.ColumnPathInfo, doris.segment_v2.SegmentV2.ColumnPathInfo.Builder, doris.segment_v2.SegmentV2.ColumnPathInfoOrBuilder> 
          getColumnPathInfoFieldBuilder() {
        if (columnPathInfoBuilder_ == null) {
          columnPathInfoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              doris.segment_v2.SegmentV2.ColumnPathInfo, doris.segment_v2.SegmentV2.ColumnPathInfo.Builder, doris.segment_v2.SegmentV2.ColumnPathInfoOrBuilder>(
                  getColumnPathInfo(),
                  getParentForChildren(),
                  isClean());
          columnPathInfo_ = null;
        }
        return columnPathInfoBuilder_;
      }

      private com.google.protobuf.ByteString defaultValue_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       * Extra type info to be compatible with tabet schema
       * </pre>
       *
       * <code>optional bytes default_value = 14;</code>
       * @return Whether the defaultValue field is set.
       */
      @java.lang.Override
      public boolean hasDefaultValue() {
        return ((bitField0_ & 0x00002000) != 0);
      }
      /**
       * <pre>
       * Extra type info to be compatible with tabet schema
       * </pre>
       *
       * <code>optional bytes default_value = 14;</code>
       * @return The defaultValue.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getDefaultValue() {
        return defaultValue_;
      }
      /**
       * <pre>
       * Extra type info to be compatible with tabet schema
       * </pre>
       *
       * <code>optional bytes default_value = 14;</code>
       * @param value The defaultValue to set.
       * @return This builder for chaining.
       */
      public Builder setDefaultValue(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        defaultValue_ = value;
        bitField0_ |= 0x00002000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Extra type info to be compatible with tabet schema
       * </pre>
       *
       * <code>optional bytes default_value = 14;</code>
       * @return This builder for chaining.
       */
      public Builder clearDefaultValue() {
        bitField0_ = (bitField0_ & ~0x00002000);
        defaultValue_ = getDefaultInstance().getDefaultValue();
        onChanged();
        return this;
      }

      private int precision_ ;
      /**
       * <pre>
       * ColumnMessage.precision
       * </pre>
       *
       * <code>optional int32 precision = 15;</code>
       * @return Whether the precision field is set.
       */
      @java.lang.Override
      public boolean hasPrecision() {
        return ((bitField0_ & 0x00004000) != 0);
      }
      /**
       * <pre>
       * ColumnMessage.precision
       * </pre>
       *
       * <code>optional int32 precision = 15;</code>
       * @return The precision.
       */
      @java.lang.Override
      public int getPrecision() {
        return precision_;
      }
      /**
       * <pre>
       * ColumnMessage.precision
       * </pre>
       *
       * <code>optional int32 precision = 15;</code>
       * @param value The precision to set.
       * @return This builder for chaining.
       */
      public Builder setPrecision(int value) {

        precision_ = value;
        bitField0_ |= 0x00004000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ColumnMessage.precision
       * </pre>
       *
       * <code>optional int32 precision = 15;</code>
       * @return This builder for chaining.
       */
      public Builder clearPrecision() {
        bitField0_ = (bitField0_ & ~0x00004000);
        precision_ = 0;
        onChanged();
        return this;
      }

      private int frac_ ;
      /**
       * <pre>
       * ColumnMessag
       * </pre>
       *
       * <code>optional int32 frac = 16;</code>
       * @return Whether the frac field is set.
       */
      @java.lang.Override
      public boolean hasFrac() {
        return ((bitField0_ & 0x00008000) != 0);
      }
      /**
       * <pre>
       * ColumnMessag
       * </pre>
       *
       * <code>optional int32 frac = 16;</code>
       * @return The frac.
       */
      @java.lang.Override
      public int getFrac() {
        return frac_;
      }
      /**
       * <pre>
       * ColumnMessag
       * </pre>
       *
       * <code>optional int32 frac = 16;</code>
       * @param value The frac to set.
       * @return This builder for chaining.
       */
      public Builder setFrac(int value) {

        frac_ = value;
        bitField0_ |= 0x00008000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ColumnMessag
       * </pre>
       *
       * <code>optional int32 frac = 16;</code>
       * @return This builder for chaining.
       */
      public Builder clearFrac() {
        bitField0_ = (bitField0_ & ~0x00008000);
        frac_ = 0;
        onChanged();
        return this;
      }

      private java.util.List<doris.segment_v2.SegmentV2.ColumnMetaPB> sparseColumns_ =
        java.util.Collections.emptyList();
      private void ensureSparseColumnsIsMutable() {
        if (!((bitField0_ & 0x00010000) != 0)) {
          sparseColumns_ = new java.util.ArrayList<doris.segment_v2.SegmentV2.ColumnMetaPB>(sparseColumns_);
          bitField0_ |= 0x00010000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          doris.segment_v2.SegmentV2.ColumnMetaPB, doris.segment_v2.SegmentV2.ColumnMetaPB.Builder, doris.segment_v2.SegmentV2.ColumnMetaPBOrBuilder> sparseColumnsBuilder_;

      /**
       * <pre>
       * sparse column within a variant column
       * </pre>
       *
       * <code>repeated .doris.segment_v2.ColumnMetaPB sparse_columns = 17;</code>
       */
      public java.util.List<doris.segment_v2.SegmentV2.ColumnMetaPB> getSparseColumnsList() {
        if (sparseColumnsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(sparseColumns_);
        } else {
          return sparseColumnsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * sparse column within a variant column
       * </pre>
       *
       * <code>repeated .doris.segment_v2.ColumnMetaPB sparse_columns = 17;</code>
       */
      public int getSparseColumnsCount() {
        if (sparseColumnsBuilder_ == null) {
          return sparseColumns_.size();
        } else {
          return sparseColumnsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * sparse column within a variant column
       * </pre>
       *
       * <code>repeated .doris.segment_v2.ColumnMetaPB sparse_columns = 17;</code>
       */
      public doris.segment_v2.SegmentV2.ColumnMetaPB getSparseColumns(int index) {
        if (sparseColumnsBuilder_ == null) {
          return sparseColumns_.get(index);
        } else {
          return sparseColumnsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * sparse column within a variant column
       * </pre>
       *
       * <code>repeated .doris.segment_v2.ColumnMetaPB sparse_columns = 17;</code>
       */
      public Builder setSparseColumns(
          int index, doris.segment_v2.SegmentV2.ColumnMetaPB value) {
        if (sparseColumnsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSparseColumnsIsMutable();
          sparseColumns_.set(index, value);
          onChanged();
        } else {
          sparseColumnsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * sparse column within a variant column
       * </pre>
       *
       * <code>repeated .doris.segment_v2.ColumnMetaPB sparse_columns = 17;</code>
       */
      public Builder setSparseColumns(
          int index, doris.segment_v2.SegmentV2.ColumnMetaPB.Builder builderForValue) {
        if (sparseColumnsBuilder_ == null) {
          ensureSparseColumnsIsMutable();
          sparseColumns_.set(index, builderForValue.build());
          onChanged();
        } else {
          sparseColumnsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * sparse column within a variant column
       * </pre>
       *
       * <code>repeated .doris.segment_v2.ColumnMetaPB sparse_columns = 17;</code>
       */
      public Builder addSparseColumns(doris.segment_v2.SegmentV2.ColumnMetaPB value) {
        if (sparseColumnsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSparseColumnsIsMutable();
          sparseColumns_.add(value);
          onChanged();
        } else {
          sparseColumnsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * sparse column within a variant column
       * </pre>
       *
       * <code>repeated .doris.segment_v2.ColumnMetaPB sparse_columns = 17;</code>
       */
      public Builder addSparseColumns(
          int index, doris.segment_v2.SegmentV2.ColumnMetaPB value) {
        if (sparseColumnsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSparseColumnsIsMutable();
          sparseColumns_.add(index, value);
          onChanged();
        } else {
          sparseColumnsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * sparse column within a variant column
       * </pre>
       *
       * <code>repeated .doris.segment_v2.ColumnMetaPB sparse_columns = 17;</code>
       */
      public Builder addSparseColumns(
          doris.segment_v2.SegmentV2.ColumnMetaPB.Builder builderForValue) {
        if (sparseColumnsBuilder_ == null) {
          ensureSparseColumnsIsMutable();
          sparseColumns_.add(builderForValue.build());
          onChanged();
        } else {
          sparseColumnsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * sparse column within a variant column
       * </pre>
       *
       * <code>repeated .doris.segment_v2.ColumnMetaPB sparse_columns = 17;</code>
       */
      public Builder addSparseColumns(
          int index, doris.segment_v2.SegmentV2.ColumnMetaPB.Builder builderForValue) {
        if (sparseColumnsBuilder_ == null) {
          ensureSparseColumnsIsMutable();
          sparseColumns_.add(index, builderForValue.build());
          onChanged();
        } else {
          sparseColumnsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * sparse column within a variant column
       * </pre>
       *
       * <code>repeated .doris.segment_v2.ColumnMetaPB sparse_columns = 17;</code>
       */
      public Builder addAllSparseColumns(
          java.lang.Iterable<? extends doris.segment_v2.SegmentV2.ColumnMetaPB> values) {
        if (sparseColumnsBuilder_ == null) {
          ensureSparseColumnsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, sparseColumns_);
          onChanged();
        } else {
          sparseColumnsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * sparse column within a variant column
       * </pre>
       *
       * <code>repeated .doris.segment_v2.ColumnMetaPB sparse_columns = 17;</code>
       */
      public Builder clearSparseColumns() {
        if (sparseColumnsBuilder_ == null) {
          sparseColumns_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00010000);
          onChanged();
        } else {
          sparseColumnsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * sparse column within a variant column
       * </pre>
       *
       * <code>repeated .doris.segment_v2.ColumnMetaPB sparse_columns = 17;</code>
       */
      public Builder removeSparseColumns(int index) {
        if (sparseColumnsBuilder_ == null) {
          ensureSparseColumnsIsMutable();
          sparseColumns_.remove(index);
          onChanged();
        } else {
          sparseColumnsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * sparse column within a variant column
       * </pre>
       *
       * <code>repeated .doris.segment_v2.ColumnMetaPB sparse_columns = 17;</code>
       */
      public doris.segment_v2.SegmentV2.ColumnMetaPB.Builder getSparseColumnsBuilder(
          int index) {
        return getSparseColumnsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * sparse column within a variant column
       * </pre>
       *
       * <code>repeated .doris.segment_v2.ColumnMetaPB sparse_columns = 17;</code>
       */
      public doris.segment_v2.SegmentV2.ColumnMetaPBOrBuilder getSparseColumnsOrBuilder(
          int index) {
        if (sparseColumnsBuilder_ == null) {
          return sparseColumns_.get(index);  } else {
          return sparseColumnsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * sparse column within a variant column
       * </pre>
       *
       * <code>repeated .doris.segment_v2.ColumnMetaPB sparse_columns = 17;</code>
       */
      public java.util.List<? extends doris.segment_v2.SegmentV2.ColumnMetaPBOrBuilder> 
           getSparseColumnsOrBuilderList() {
        if (sparseColumnsBuilder_ != null) {
          return sparseColumnsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(sparseColumns_);
        }
      }
      /**
       * <pre>
       * sparse column within a variant column
       * </pre>
       *
       * <code>repeated .doris.segment_v2.ColumnMetaPB sparse_columns = 17;</code>
       */
      public doris.segment_v2.SegmentV2.ColumnMetaPB.Builder addSparseColumnsBuilder() {
        return getSparseColumnsFieldBuilder().addBuilder(
            doris.segment_v2.SegmentV2.ColumnMetaPB.getDefaultInstance());
      }
      /**
       * <pre>
       * sparse column within a variant column
       * </pre>
       *
       * <code>repeated .doris.segment_v2.ColumnMetaPB sparse_columns = 17;</code>
       */
      public doris.segment_v2.SegmentV2.ColumnMetaPB.Builder addSparseColumnsBuilder(
          int index) {
        return getSparseColumnsFieldBuilder().addBuilder(
            index, doris.segment_v2.SegmentV2.ColumnMetaPB.getDefaultInstance());
      }
      /**
       * <pre>
       * sparse column within a variant column
       * </pre>
       *
       * <code>repeated .doris.segment_v2.ColumnMetaPB sparse_columns = 17;</code>
       */
      public java.util.List<doris.segment_v2.SegmentV2.ColumnMetaPB.Builder> 
           getSparseColumnsBuilderList() {
        return getSparseColumnsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          doris.segment_v2.SegmentV2.ColumnMetaPB, doris.segment_v2.SegmentV2.ColumnMetaPB.Builder, doris.segment_v2.SegmentV2.ColumnMetaPBOrBuilder> 
          getSparseColumnsFieldBuilder() {
        if (sparseColumnsBuilder_ == null) {
          sparseColumnsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              doris.segment_v2.SegmentV2.ColumnMetaPB, doris.segment_v2.SegmentV2.ColumnMetaPB.Builder, doris.segment_v2.SegmentV2.ColumnMetaPBOrBuilder>(
                  sparseColumns_,
                  ((bitField0_ & 0x00010000) != 0),
                  getParentForChildren(),
                  isClean());
          sparseColumns_ = null;
        }
        return sparseColumnsBuilder_;
      }

      private boolean resultIsNullable_ ;
      /**
       * <pre>
       * used on agg_state type
       * </pre>
       *
       * <code>optional bool result_is_nullable = 18;</code>
       * @return Whether the resultIsNullable field is set.
       */
      @java.lang.Override
      public boolean hasResultIsNullable() {
        return ((bitField0_ & 0x00020000) != 0);
      }
      /**
       * <pre>
       * used on agg_state type
       * </pre>
       *
       * <code>optional bool result_is_nullable = 18;</code>
       * @return The resultIsNullable.
       */
      @java.lang.Override
      public boolean getResultIsNullable() {
        return resultIsNullable_;
      }
      /**
       * <pre>
       * used on agg_state type
       * </pre>
       *
       * <code>optional bool result_is_nullable = 18;</code>
       * @param value The resultIsNullable to set.
       * @return This builder for chaining.
       */
      public Builder setResultIsNullable(boolean value) {

        resultIsNullable_ = value;
        bitField0_ |= 0x00020000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * used on agg_state type
       * </pre>
       *
       * <code>optional bool result_is_nullable = 18;</code>
       * @return This builder for chaining.
       */
      public Builder clearResultIsNullable() {
        bitField0_ = (bitField0_ & ~0x00020000);
        resultIsNullable_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object functionName_ = "";
      /**
       * <pre>
       * used on agg_state type
       * </pre>
       *
       * <code>optional string function_name = 19;</code>
       * @return Whether the functionName field is set.
       */
      public boolean hasFunctionName() {
        return ((bitField0_ & 0x00040000) != 0);
      }
      /**
       * <pre>
       * used on agg_state type
       * </pre>
       *
       * <code>optional string function_name = 19;</code>
       * @return The functionName.
       */
      public java.lang.String getFunctionName() {
        java.lang.Object ref = functionName_;
        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()) {
            functionName_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * used on agg_state type
       * </pre>
       *
       * <code>optional string function_name = 19;</code>
       * @return The bytes for functionName.
       */
      public com.google.protobuf.ByteString
          getFunctionNameBytes() {
        java.lang.Object ref = functionName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          functionName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * used on agg_state type
       * </pre>
       *
       * <code>optional string function_name = 19;</code>
       * @param value The functionName to set.
       * @return This builder for chaining.
       */
      public Builder setFunctionName(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        functionName_ = value;
        bitField0_ |= 0x00040000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * used on agg_state type
       * </pre>
       *
       * <code>optional string function_name = 19;</code>
       * @return This builder for chaining.
       */
      public Builder clearFunctionName() {
        functionName_ = getDefaultInstance().getFunctionName();
        bitField0_ = (bitField0_ & ~0x00040000);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * used on agg_state type
       * </pre>
       *
       * <code>optional string function_name = 19;</code>
       * @param value The bytes for functionName to set.
       * @return This builder for chaining.
       */
      public Builder setFunctionNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        functionName_ = value;
        bitField0_ |= 0x00040000;
        onChanged();
        return this;
      }

      private int beExecVersion_ ;
      /**
       * <pre>
       * used on agg_state type
       * </pre>
       *
       * <code>optional int32 be_exec_version = 20;</code>
       * @return Whether the beExecVersion field is set.
       */
      @java.lang.Override
      public boolean hasBeExecVersion() {
        return ((bitField0_ & 0x00080000) != 0);
      }
      /**
       * <pre>
       * used on agg_state type
       * </pre>
       *
       * <code>optional int32 be_exec_version = 20;</code>
       * @return The beExecVersion.
       */
      @java.lang.Override
      public int getBeExecVersion() {
        return beExecVersion_;
      }
      /**
       * <pre>
       * used on agg_state type
       * </pre>
       *
       * <code>optional int32 be_exec_version = 20;</code>
       * @param value The beExecVersion to set.
       * @return This builder for chaining.
       */
      public Builder setBeExecVersion(int value) {

        beExecVersion_ = value;
        bitField0_ |= 0x00080000;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * used on agg_state type
       * </pre>
       *
       * <code>optional int32 be_exec_version = 20;</code>
       * @return This builder for chaining.
       */
      public Builder clearBeExecVersion() {
        bitField0_ = (bitField0_ & ~0x00080000);
        beExecVersion_ = 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.segment_v2.ColumnMetaPB)
    }

    // @@protoc_insertion_point(class_scope:doris.segment_v2.ColumnMetaPB)
    private static final doris.segment_v2.SegmentV2.ColumnMetaPB DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new doris.segment_v2.SegmentV2.ColumnMetaPB();
    }

    public static doris.segment_v2.SegmentV2.ColumnMetaPB getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<ColumnMetaPB>
        PARSER = new com.google.protobuf.AbstractParser<ColumnMetaPB>() {
      @java.lang.Override
      public ColumnMetaPB 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<ColumnMetaPB> parser() {
      return PARSER;
    }

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

    @java.lang.Override
    public doris.segment_v2.SegmentV2.ColumnMetaPB getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PrimaryKeyIndexMetaPBOrBuilder extends
      // @@protoc_insertion_point(interface_extends:doris.segment_v2.PrimaryKeyIndexMetaPB)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * primary key index
     * </pre>
     *
     * <code>optional .doris.segment_v2.IndexedColumnMetaPB primary_key_index = 1;</code>
     * @return Whether the primaryKeyIndex field is set.
     */
    boolean hasPrimaryKeyIndex();
    /**
     * <pre>
     * primary key index
     * </pre>
     *
     * <code>optional .doris.segment_v2.IndexedColumnMetaPB primary_key_index = 1;</code>
     * @return The primaryKeyIndex.
     */
    doris.segment_v2.SegmentV2.IndexedColumnMetaPB getPrimaryKeyIndex();
    /**
     * <pre>
     * primary key index
     * </pre>
     *
     * <code>optional .doris.segment_v2.IndexedColumnMetaPB primary_key_index = 1;</code>
     */
    doris.segment_v2.SegmentV2.IndexedColumnMetaPBOrBuilder getPrimaryKeyIndexOrBuilder();

    /**
     * <pre>
     * bloom filter index
     * </pre>
     *
     * <code>optional .doris.segment_v2.ColumnIndexMetaPB bloom_filter_index = 2;</code>
     * @return Whether the bloomFilterIndex field is set.
     */
    boolean hasBloomFilterIndex();
    /**
     * <pre>
     * bloom filter index
     * </pre>
     *
     * <code>optional .doris.segment_v2.ColumnIndexMetaPB bloom_filter_index = 2;</code>
     * @return The bloomFilterIndex.
     */
    doris.segment_v2.SegmentV2.ColumnIndexMetaPB getBloomFilterIndex();
    /**
     * <pre>
     * bloom filter index
     * </pre>
     *
     * <code>optional .doris.segment_v2.ColumnIndexMetaPB bloom_filter_index = 2;</code>
     */
    doris.segment_v2.SegmentV2.ColumnIndexMetaPBOrBuilder getBloomFilterIndexOrBuilder();

    /**
     * <code>optional bytes min_key = 3;</code>
     * @return Whether the minKey field is set.
     */
    boolean hasMinKey();
    /**
     * <code>optional bytes min_key = 3;</code>
     * @return The minKey.
     */
    com.google.protobuf.ByteString getMinKey();

    /**
     * <code>optional bytes max_key = 4;</code>
     * @return Whether the maxKey field is set.
     */
    boolean hasMaxKey();
    /**
     * <code>optional bytes max_key = 4;</code>
     * @return The maxKey.
     */
    com.google.protobuf.ByteString getMaxKey();
  }
  /**
   * Protobuf type {@code doris.segment_v2.PrimaryKeyIndexMetaPB}
   */
  public static final class PrimaryKeyIndexMetaPB extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:doris.segment_v2.PrimaryKeyIndexMetaPB)
      PrimaryKeyIndexMetaPBOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PrimaryKeyIndexMetaPB.newBuilder() to construct.
    private PrimaryKeyIndexMetaPB(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PrimaryKeyIndexMetaPB() {
      minKey_ = com.google.protobuf.ByteString.EMPTY;
      maxKey_ = com.google.protobuf.ByteString.EMPTY;
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_PrimaryKeyIndexMetaPB_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_PrimaryKeyIndexMetaPB_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB.class, doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB.Builder.class);
    }

    private int bitField0_;
    public static final int PRIMARY_KEY_INDEX_FIELD_NUMBER = 1;
    private doris.segment_v2.SegmentV2.IndexedColumnMetaPB primaryKeyIndex_;
    /**
     * <pre>
     * primary key index
     * </pre>
     *
     * <code>optional .doris.segment_v2.IndexedColumnMetaPB primary_key_index = 1;</code>
     * @return Whether the primaryKeyIndex field is set.
     */
    @java.lang.Override
    public boolean hasPrimaryKeyIndex() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * primary key index
     * </pre>
     *
     * <code>optional .doris.segment_v2.IndexedColumnMetaPB primary_key_index = 1;</code>
     * @return The primaryKeyIndex.
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.IndexedColumnMetaPB getPrimaryKeyIndex() {
      return primaryKeyIndex_ == null ? doris.segment_v2.SegmentV2.IndexedColumnMetaPB.getDefaultInstance() : primaryKeyIndex_;
    }
    /**
     * <pre>
     * primary key index
     * </pre>
     *
     * <code>optional .doris.segment_v2.IndexedColumnMetaPB primary_key_index = 1;</code>
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.IndexedColumnMetaPBOrBuilder getPrimaryKeyIndexOrBuilder() {
      return primaryKeyIndex_ == null ? doris.segment_v2.SegmentV2.IndexedColumnMetaPB.getDefaultInstance() : primaryKeyIndex_;
    }

    public static final int BLOOM_FILTER_INDEX_FIELD_NUMBER = 2;
    private doris.segment_v2.SegmentV2.ColumnIndexMetaPB bloomFilterIndex_;
    /**
     * <pre>
     * bloom filter index
     * </pre>
     *
     * <code>optional .doris.segment_v2.ColumnIndexMetaPB bloom_filter_index = 2;</code>
     * @return Whether the bloomFilterIndex field is set.
     */
    @java.lang.Override
    public boolean hasBloomFilterIndex() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * bloom filter index
     * </pre>
     *
     * <code>optional .doris.segment_v2.ColumnIndexMetaPB bloom_filter_index = 2;</code>
     * @return The bloomFilterIndex.
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.ColumnIndexMetaPB getBloomFilterIndex() {
      return bloomFilterIndex_ == null ? doris.segment_v2.SegmentV2.ColumnIndexMetaPB.getDefaultInstance() : bloomFilterIndex_;
    }
    /**
     * <pre>
     * bloom filter index
     * </pre>
     *
     * <code>optional .doris.segment_v2.ColumnIndexMetaPB bloom_filter_index = 2;</code>
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.ColumnIndexMetaPBOrBuilder getBloomFilterIndexOrBuilder() {
      return bloomFilterIndex_ == null ? doris.segment_v2.SegmentV2.ColumnIndexMetaPB.getDefaultInstance() : bloomFilterIndex_;
    }

    public static final int MIN_KEY_FIELD_NUMBER = 3;
    private com.google.protobuf.ByteString minKey_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <code>optional bytes min_key = 3;</code>
     * @return Whether the minKey field is set.
     */
    @java.lang.Override
    public boolean hasMinKey() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>optional bytes min_key = 3;</code>
     * @return The minKey.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getMinKey() {
      return minKey_;
    }

    public static final int MAX_KEY_FIELD_NUMBER = 4;
    private com.google.protobuf.ByteString maxKey_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * <code>optional bytes max_key = 4;</code>
     * @return Whether the maxKey field is set.
     */
    @java.lang.Override
    public boolean hasMaxKey() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>optional bytes max_key = 4;</code>
     * @return The maxKey.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getMaxKey() {
      return maxKey_;
    }

    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 (hasPrimaryKeyIndex()) {
        if (!getPrimaryKeyIndex().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasBloomFilterIndex()) {
        if (!getBloomFilterIndex().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.writeMessage(1, getPrimaryKeyIndex());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getBloomFilterIndex());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeBytes(3, minKey_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeBytes(4, maxKey_);
      }
      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
          .computeMessageSize(1, getPrimaryKeyIndex());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getBloomFilterIndex());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, minKey_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, maxKey_);
      }
      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 doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB)) {
        return super.equals(obj);
      }
      doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB other = (doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB) obj;

      if (hasPrimaryKeyIndex() != other.hasPrimaryKeyIndex()) return false;
      if (hasPrimaryKeyIndex()) {
        if (!getPrimaryKeyIndex()
            .equals(other.getPrimaryKeyIndex())) return false;
      }
      if (hasBloomFilterIndex() != other.hasBloomFilterIndex()) return false;
      if (hasBloomFilterIndex()) {
        if (!getBloomFilterIndex()
            .equals(other.getBloomFilterIndex())) return false;
      }
      if (hasMinKey() != other.hasMinKey()) return false;
      if (hasMinKey()) {
        if (!getMinKey()
            .equals(other.getMinKey())) return false;
      }
      if (hasMaxKey() != other.hasMaxKey()) return false;
      if (hasMaxKey()) {
        if (!getMaxKey()
            .equals(other.getMaxKey())) 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 (hasPrimaryKeyIndex()) {
        hash = (37 * hash) + PRIMARY_KEY_INDEX_FIELD_NUMBER;
        hash = (53 * hash) + getPrimaryKeyIndex().hashCode();
      }
      if (hasBloomFilterIndex()) {
        hash = (37 * hash) + BLOOM_FILTER_INDEX_FIELD_NUMBER;
        hash = (53 * hash) + getBloomFilterIndex().hashCode();
      }
      if (hasMinKey()) {
        hash = (37 * hash) + MIN_KEY_FIELD_NUMBER;
        hash = (53 * hash) + getMinKey().hashCode();
      }
      if (hasMaxKey()) {
        hash = (37 * hash) + MAX_KEY_FIELD_NUMBER;
        hash = (53 * hash) + getMaxKey().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB 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 doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB 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 doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB 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(doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB 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.segment_v2.PrimaryKeyIndexMetaPB}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:doris.segment_v2.PrimaryKeyIndexMetaPB)
        doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPBOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_PrimaryKeyIndexMetaPB_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_PrimaryKeyIndexMetaPB_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB.class, doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB.Builder.class);
      }

      // Construct using doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getPrimaryKeyIndexFieldBuilder();
          getBloomFilterIndexFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        primaryKeyIndex_ = null;
        if (primaryKeyIndexBuilder_ != null) {
          primaryKeyIndexBuilder_.dispose();
          primaryKeyIndexBuilder_ = null;
        }
        bloomFilterIndex_ = null;
        if (bloomFilterIndexBuilder_ != null) {
          bloomFilterIndexBuilder_.dispose();
          bloomFilterIndexBuilder_ = null;
        }
        minKey_ = com.google.protobuf.ByteString.EMPTY;
        maxKey_ = com.google.protobuf.ByteString.EMPTY;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_PrimaryKeyIndexMetaPB_descriptor;
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB getDefaultInstanceForType() {
        return doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB.getDefaultInstance();
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB build() {
        doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB buildPartial() {
        doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB result = new doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.primaryKeyIndex_ = primaryKeyIndexBuilder_ == null
              ? primaryKeyIndex_
              : primaryKeyIndexBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.bloomFilterIndex_ = bloomFilterIndexBuilder_ == null
              ? bloomFilterIndex_
              : bloomFilterIndexBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.minKey_ = minKey_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.maxKey_ = maxKey_;
          to_bitField0_ |= 0x00000008;
        }
        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 doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB) {
          return mergeFrom((doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB other) {
        if (other == doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB.getDefaultInstance()) return this;
        if (other.hasPrimaryKeyIndex()) {
          mergePrimaryKeyIndex(other.getPrimaryKeyIndex());
        }
        if (other.hasBloomFilterIndex()) {
          mergeBloomFilterIndex(other.getBloomFilterIndex());
        }
        if (other.hasMinKey()) {
          setMinKey(other.getMinKey());
        }
        if (other.hasMaxKey()) {
          setMaxKey(other.getMaxKey());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (hasPrimaryKeyIndex()) {
          if (!getPrimaryKeyIndex().isInitialized()) {
            return false;
          }
        }
        if (hasBloomFilterIndex()) {
          if (!getBloomFilterIndex().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 10: {
                input.readMessage(
                    getPrimaryKeyIndexFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getBloomFilterIndexFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                minKey_ = input.readBytes();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                maxKey_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              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 doris.segment_v2.SegmentV2.IndexedColumnMetaPB primaryKeyIndex_;
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.IndexedColumnMetaPB, doris.segment_v2.SegmentV2.IndexedColumnMetaPB.Builder, doris.segment_v2.SegmentV2.IndexedColumnMetaPBOrBuilder> primaryKeyIndexBuilder_;
      /**
       * <pre>
       * primary key index
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexedColumnMetaPB primary_key_index = 1;</code>
       * @return Whether the primaryKeyIndex field is set.
       */
      public boolean hasPrimaryKeyIndex() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * primary key index
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexedColumnMetaPB primary_key_index = 1;</code>
       * @return The primaryKeyIndex.
       */
      public doris.segment_v2.SegmentV2.IndexedColumnMetaPB getPrimaryKeyIndex() {
        if (primaryKeyIndexBuilder_ == null) {
          return primaryKeyIndex_ == null ? doris.segment_v2.SegmentV2.IndexedColumnMetaPB.getDefaultInstance() : primaryKeyIndex_;
        } else {
          return primaryKeyIndexBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * primary key index
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexedColumnMetaPB primary_key_index = 1;</code>
       */
      public Builder setPrimaryKeyIndex(doris.segment_v2.SegmentV2.IndexedColumnMetaPB value) {
        if (primaryKeyIndexBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          primaryKeyIndex_ = value;
        } else {
          primaryKeyIndexBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * primary key index
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexedColumnMetaPB primary_key_index = 1;</code>
       */
      public Builder setPrimaryKeyIndex(
          doris.segment_v2.SegmentV2.IndexedColumnMetaPB.Builder builderForValue) {
        if (primaryKeyIndexBuilder_ == null) {
          primaryKeyIndex_ = builderForValue.build();
        } else {
          primaryKeyIndexBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * primary key index
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexedColumnMetaPB primary_key_index = 1;</code>
       */
      public Builder mergePrimaryKeyIndex(doris.segment_v2.SegmentV2.IndexedColumnMetaPB value) {
        if (primaryKeyIndexBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            primaryKeyIndex_ != null &&
            primaryKeyIndex_ != doris.segment_v2.SegmentV2.IndexedColumnMetaPB.getDefaultInstance()) {
            getPrimaryKeyIndexBuilder().mergeFrom(value);
          } else {
            primaryKeyIndex_ = value;
          }
        } else {
          primaryKeyIndexBuilder_.mergeFrom(value);
        }
        if (primaryKeyIndex_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * primary key index
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexedColumnMetaPB primary_key_index = 1;</code>
       */
      public Builder clearPrimaryKeyIndex() {
        bitField0_ = (bitField0_ & ~0x00000001);
        primaryKeyIndex_ = null;
        if (primaryKeyIndexBuilder_ != null) {
          primaryKeyIndexBuilder_.dispose();
          primaryKeyIndexBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * primary key index
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexedColumnMetaPB primary_key_index = 1;</code>
       */
      public doris.segment_v2.SegmentV2.IndexedColumnMetaPB.Builder getPrimaryKeyIndexBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getPrimaryKeyIndexFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * primary key index
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexedColumnMetaPB primary_key_index = 1;</code>
       */
      public doris.segment_v2.SegmentV2.IndexedColumnMetaPBOrBuilder getPrimaryKeyIndexOrBuilder() {
        if (primaryKeyIndexBuilder_ != null) {
          return primaryKeyIndexBuilder_.getMessageOrBuilder();
        } else {
          return primaryKeyIndex_ == null ?
              doris.segment_v2.SegmentV2.IndexedColumnMetaPB.getDefaultInstance() : primaryKeyIndex_;
        }
      }
      /**
       * <pre>
       * primary key index
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexedColumnMetaPB primary_key_index = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.IndexedColumnMetaPB, doris.segment_v2.SegmentV2.IndexedColumnMetaPB.Builder, doris.segment_v2.SegmentV2.IndexedColumnMetaPBOrBuilder> 
          getPrimaryKeyIndexFieldBuilder() {
        if (primaryKeyIndexBuilder_ == null) {
          primaryKeyIndexBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              doris.segment_v2.SegmentV2.IndexedColumnMetaPB, doris.segment_v2.SegmentV2.IndexedColumnMetaPB.Builder, doris.segment_v2.SegmentV2.IndexedColumnMetaPBOrBuilder>(
                  getPrimaryKeyIndex(),
                  getParentForChildren(),
                  isClean());
          primaryKeyIndex_ = null;
        }
        return primaryKeyIndexBuilder_;
      }

      private doris.segment_v2.SegmentV2.ColumnIndexMetaPB bloomFilterIndex_;
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.ColumnIndexMetaPB, doris.segment_v2.SegmentV2.ColumnIndexMetaPB.Builder, doris.segment_v2.SegmentV2.ColumnIndexMetaPBOrBuilder> bloomFilterIndexBuilder_;
      /**
       * <pre>
       * bloom filter index
       * </pre>
       *
       * <code>optional .doris.segment_v2.ColumnIndexMetaPB bloom_filter_index = 2;</code>
       * @return Whether the bloomFilterIndex field is set.
       */
      public boolean hasBloomFilterIndex() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * bloom filter index
       * </pre>
       *
       * <code>optional .doris.segment_v2.ColumnIndexMetaPB bloom_filter_index = 2;</code>
       * @return The bloomFilterIndex.
       */
      public doris.segment_v2.SegmentV2.ColumnIndexMetaPB getBloomFilterIndex() {
        if (bloomFilterIndexBuilder_ == null) {
          return bloomFilterIndex_ == null ? doris.segment_v2.SegmentV2.ColumnIndexMetaPB.getDefaultInstance() : bloomFilterIndex_;
        } else {
          return bloomFilterIndexBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * bloom filter index
       * </pre>
       *
       * <code>optional .doris.segment_v2.ColumnIndexMetaPB bloom_filter_index = 2;</code>
       */
      public Builder setBloomFilterIndex(doris.segment_v2.SegmentV2.ColumnIndexMetaPB value) {
        if (bloomFilterIndexBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          bloomFilterIndex_ = value;
        } else {
          bloomFilterIndexBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * bloom filter index
       * </pre>
       *
       * <code>optional .doris.segment_v2.ColumnIndexMetaPB bloom_filter_index = 2;</code>
       */
      public Builder setBloomFilterIndex(
          doris.segment_v2.SegmentV2.ColumnIndexMetaPB.Builder builderForValue) {
        if (bloomFilterIndexBuilder_ == null) {
          bloomFilterIndex_ = builderForValue.build();
        } else {
          bloomFilterIndexBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * bloom filter index
       * </pre>
       *
       * <code>optional .doris.segment_v2.ColumnIndexMetaPB bloom_filter_index = 2;</code>
       */
      public Builder mergeBloomFilterIndex(doris.segment_v2.SegmentV2.ColumnIndexMetaPB value) {
        if (bloomFilterIndexBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            bloomFilterIndex_ != null &&
            bloomFilterIndex_ != doris.segment_v2.SegmentV2.ColumnIndexMetaPB.getDefaultInstance()) {
            getBloomFilterIndexBuilder().mergeFrom(value);
          } else {
            bloomFilterIndex_ = value;
          }
        } else {
          bloomFilterIndexBuilder_.mergeFrom(value);
        }
        if (bloomFilterIndex_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * bloom filter index
       * </pre>
       *
       * <code>optional .doris.segment_v2.ColumnIndexMetaPB bloom_filter_index = 2;</code>
       */
      public Builder clearBloomFilterIndex() {
        bitField0_ = (bitField0_ & ~0x00000002);
        bloomFilterIndex_ = null;
        if (bloomFilterIndexBuilder_ != null) {
          bloomFilterIndexBuilder_.dispose();
          bloomFilterIndexBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * bloom filter index
       * </pre>
       *
       * <code>optional .doris.segment_v2.ColumnIndexMetaPB bloom_filter_index = 2;</code>
       */
      public doris.segment_v2.SegmentV2.ColumnIndexMetaPB.Builder getBloomFilterIndexBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getBloomFilterIndexFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * bloom filter index
       * </pre>
       *
       * <code>optional .doris.segment_v2.ColumnIndexMetaPB bloom_filter_index = 2;</code>
       */
      public doris.segment_v2.SegmentV2.ColumnIndexMetaPBOrBuilder getBloomFilterIndexOrBuilder() {
        if (bloomFilterIndexBuilder_ != null) {
          return bloomFilterIndexBuilder_.getMessageOrBuilder();
        } else {
          return bloomFilterIndex_ == null ?
              doris.segment_v2.SegmentV2.ColumnIndexMetaPB.getDefaultInstance() : bloomFilterIndex_;
        }
      }
      /**
       * <pre>
       * bloom filter index
       * </pre>
       *
       * <code>optional .doris.segment_v2.ColumnIndexMetaPB bloom_filter_index = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.ColumnIndexMetaPB, doris.segment_v2.SegmentV2.ColumnIndexMetaPB.Builder, doris.segment_v2.SegmentV2.ColumnIndexMetaPBOrBuilder> 
          getBloomFilterIndexFieldBuilder() {
        if (bloomFilterIndexBuilder_ == null) {
          bloomFilterIndexBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              doris.segment_v2.SegmentV2.ColumnIndexMetaPB, doris.segment_v2.SegmentV2.ColumnIndexMetaPB.Builder, doris.segment_v2.SegmentV2.ColumnIndexMetaPBOrBuilder>(
                  getBloomFilterIndex(),
                  getParentForChildren(),
                  isClean());
          bloomFilterIndex_ = null;
        }
        return bloomFilterIndexBuilder_;
      }

      private com.google.protobuf.ByteString minKey_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>optional bytes min_key = 3;</code>
       * @return Whether the minKey field is set.
       */
      @java.lang.Override
      public boolean hasMinKey() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>optional bytes min_key = 3;</code>
       * @return The minKey.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getMinKey() {
        return minKey_;
      }
      /**
       * <code>optional bytes min_key = 3;</code>
       * @param value The minKey to set.
       * @return This builder for chaining.
       */
      public Builder setMinKey(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        minKey_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>optional bytes min_key = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearMinKey() {
        bitField0_ = (bitField0_ & ~0x00000004);
        minKey_ = getDefaultInstance().getMinKey();
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString maxKey_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>optional bytes max_key = 4;</code>
       * @return Whether the maxKey field is set.
       */
      @java.lang.Override
      public boolean hasMaxKey() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>optional bytes max_key = 4;</code>
       * @return The maxKey.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getMaxKey() {
        return maxKey_;
      }
      /**
       * <code>optional bytes max_key = 4;</code>
       * @param value The maxKey to set.
       * @return This builder for chaining.
       */
      public Builder setMaxKey(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        maxKey_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <code>optional bytes max_key = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearMaxKey() {
        bitField0_ = (bitField0_ & ~0x00000008);
        maxKey_ = getDefaultInstance().getMaxKey();
        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.segment_v2.PrimaryKeyIndexMetaPB)
    }

    // @@protoc_insertion_point(class_scope:doris.segment_v2.PrimaryKeyIndexMetaPB)
    private static final doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB();
    }

    public static doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<PrimaryKeyIndexMetaPB>
        PARSER = new com.google.protobuf.AbstractParser<PrimaryKeyIndexMetaPB>() {
      @java.lang.Override
      public PrimaryKeyIndexMetaPB 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<PrimaryKeyIndexMetaPB> parser() {
      return PARSER;
    }

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

    @java.lang.Override
    public doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SegmentFooterPBOrBuilder extends
      // @@protoc_insertion_point(interface_extends:doris.segment_v2.SegmentFooterPB)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * file version
     * </pre>
     *
     * <code>optional uint32 version = 1 [default = 1];</code>
     * @return Whether the version field is set.
     */
    boolean hasVersion();
    /**
     * <pre>
     * file version
     * </pre>
     *
     * <code>optional uint32 version = 1 [default = 1];</code>
     * @return The version.
     */
    int getVersion();

    /**
     * <pre>
     * tablet schema
     * </pre>
     *
     * <code>repeated .doris.segment_v2.ColumnMetaPB columns = 2;</code>
     */
    java.util.List<doris.segment_v2.SegmentV2.ColumnMetaPB> 
        getColumnsList();
    /**
     * <pre>
     * tablet schema
     * </pre>
     *
     * <code>repeated .doris.segment_v2.ColumnMetaPB columns = 2;</code>
     */
    doris.segment_v2.SegmentV2.ColumnMetaPB getColumns(int index);
    /**
     * <pre>
     * tablet schema
     * </pre>
     *
     * <code>repeated .doris.segment_v2.ColumnMetaPB columns = 2;</code>
     */
    int getColumnsCount();
    /**
     * <pre>
     * tablet schema
     * </pre>
     *
     * <code>repeated .doris.segment_v2.ColumnMetaPB columns = 2;</code>
     */
    java.util.List<? extends doris.segment_v2.SegmentV2.ColumnMetaPBOrBuilder> 
        getColumnsOrBuilderList();
    /**
     * <pre>
     * tablet schema
     * </pre>
     *
     * <code>repeated .doris.segment_v2.ColumnMetaPB columns = 2;</code>
     */
    doris.segment_v2.SegmentV2.ColumnMetaPBOrBuilder getColumnsOrBuilder(
        int index);

    /**
     * <pre>
     * number of values
     * </pre>
     *
     * <code>optional uint32 num_rows = 3;</code>
     * @return Whether the numRows field is set.
     */
    boolean hasNumRows();
    /**
     * <pre>
     * number of values
     * </pre>
     *
     * <code>optional uint32 num_rows = 3;</code>
     * @return The numRows.
     */
    int getNumRows();

    /**
     * <pre>
     * total index footprint of all columns
     * </pre>
     *
     * <code>optional uint64 index_footprint = 4;</code>
     * @return Whether the indexFootprint field is set.
     */
    boolean hasIndexFootprint();
    /**
     * <pre>
     * total index footprint of all columns
     * </pre>
     *
     * <code>optional uint64 index_footprint = 4;</code>
     * @return The indexFootprint.
     */
    long getIndexFootprint();

    /**
     * <pre>
     * total data footprint of all columns
     * </pre>
     *
     * <code>optional uint64 data_footprint = 5;</code>
     * @return Whether the dataFootprint field is set.
     */
    boolean hasDataFootprint();
    /**
     * <pre>
     * total data footprint of all columns
     * </pre>
     *
     * <code>optional uint64 data_footprint = 5;</code>
     * @return The dataFootprint.
     */
    long getDataFootprint();

    /**
     * <pre>
     * raw data footprint
     * </pre>
     *
     * <code>optional uint64 raw_data_footprint = 6;</code>
     * @return Whether the rawDataFootprint field is set.
     */
    boolean hasRawDataFootprint();
    /**
     * <pre>
     * raw data footprint
     * </pre>
     *
     * <code>optional uint64 raw_data_footprint = 6;</code>
     * @return The rawDataFootprint.
     */
    long getRawDataFootprint();

    /**
     * <pre>
     * default compression type for file columns
     * </pre>
     *
     * <code>optional .doris.segment_v2.CompressionTypePB compress_type = 7 [default = LZ4F];</code>
     * @return Whether the compressType field is set.
     */
    boolean hasCompressType();
    /**
     * <pre>
     * default compression type for file columns
     * </pre>
     *
     * <code>optional .doris.segment_v2.CompressionTypePB compress_type = 7 [default = LZ4F];</code>
     * @return The compressType.
     */
    doris.segment_v2.SegmentV2.CompressionTypePB getCompressType();

    /**
     * <pre>
     * meta data of file
     * </pre>
     *
     * <code>repeated .doris.segment_v2.MetadataPairPB file_meta_datas = 8;</code>
     */
    java.util.List<doris.segment_v2.SegmentV2.MetadataPairPB> 
        getFileMetaDatasList();
    /**
     * <pre>
     * meta data of file
     * </pre>
     *
     * <code>repeated .doris.segment_v2.MetadataPairPB file_meta_datas = 8;</code>
     */
    doris.segment_v2.SegmentV2.MetadataPairPB getFileMetaDatas(int index);
    /**
     * <pre>
     * meta data of file
     * </pre>
     *
     * <code>repeated .doris.segment_v2.MetadataPairPB file_meta_datas = 8;</code>
     */
    int getFileMetaDatasCount();
    /**
     * <pre>
     * meta data of file
     * </pre>
     *
     * <code>repeated .doris.segment_v2.MetadataPairPB file_meta_datas = 8;</code>
     */
    java.util.List<? extends doris.segment_v2.SegmentV2.MetadataPairPBOrBuilder> 
        getFileMetaDatasOrBuilderList();
    /**
     * <pre>
     * meta data of file
     * </pre>
     *
     * <code>repeated .doris.segment_v2.MetadataPairPB file_meta_datas = 8;</code>
     */
    doris.segment_v2.SegmentV2.MetadataPairPBOrBuilder getFileMetaDatasOrBuilder(
        int index);

    /**
     * <pre>
     * Short key index's page
     * </pre>
     *
     * <code>optional .doris.segment_v2.PagePointerPB short_key_index_page = 9;</code>
     * @return Whether the shortKeyIndexPage field is set.
     */
    boolean hasShortKeyIndexPage();
    /**
     * <pre>
     * Short key index's page
     * </pre>
     *
     * <code>optional .doris.segment_v2.PagePointerPB short_key_index_page = 9;</code>
     * @return The shortKeyIndexPage.
     */
    doris.segment_v2.SegmentV2.PagePointerPB getShortKeyIndexPage();
    /**
     * <pre>
     * Short key index's page
     * </pre>
     *
     * <code>optional .doris.segment_v2.PagePointerPB short_key_index_page = 9;</code>
     */
    doris.segment_v2.SegmentV2.PagePointerPBOrBuilder getShortKeyIndexPageOrBuilder();

    /**
     * <pre>
     * Primary key index meta
     * </pre>
     *
     * <code>optional .doris.segment_v2.PrimaryKeyIndexMetaPB primary_key_index_meta = 10;</code>
     * @return Whether the primaryKeyIndexMeta field is set.
     */
    boolean hasPrimaryKeyIndexMeta();
    /**
     * <pre>
     * Primary key index meta
     * </pre>
     *
     * <code>optional .doris.segment_v2.PrimaryKeyIndexMetaPB primary_key_index_meta = 10;</code>
     * @return The primaryKeyIndexMeta.
     */
    doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB getPrimaryKeyIndexMeta();
    /**
     * <pre>
     * Primary key index meta
     * </pre>
     *
     * <code>optional .doris.segment_v2.PrimaryKeyIndexMetaPB primary_key_index_meta = 10;</code>
     */
    doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPBOrBuilder getPrimaryKeyIndexMetaOrBuilder();
  }
  /**
   * Protobuf type {@code doris.segment_v2.SegmentFooterPB}
   */
  public static final class SegmentFooterPB extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:doris.segment_v2.SegmentFooterPB)
      SegmentFooterPBOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SegmentFooterPB.newBuilder() to construct.
    private SegmentFooterPB(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SegmentFooterPB() {
      version_ = 1;
      columns_ = java.util.Collections.emptyList();
      compressType_ = 5;
      fileMetaDatas_ = java.util.Collections.emptyList();
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_SegmentFooterPB_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_SegmentFooterPB_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              doris.segment_v2.SegmentV2.SegmentFooterPB.class, doris.segment_v2.SegmentV2.SegmentFooterPB.Builder.class);
    }

    private int bitField0_;
    public static final int VERSION_FIELD_NUMBER = 1;
    private int version_ = 1;
    /**
     * <pre>
     * file version
     * </pre>
     *
     * <code>optional uint32 version = 1 [default = 1];</code>
     * @return Whether the version field is set.
     */
    @java.lang.Override
    public boolean hasVersion() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * file version
     * </pre>
     *
     * <code>optional uint32 version = 1 [default = 1];</code>
     * @return The version.
     */
    @java.lang.Override
    public int getVersion() {
      return version_;
    }

    public static final int COLUMNS_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private java.util.List<doris.segment_v2.SegmentV2.ColumnMetaPB> columns_;
    /**
     * <pre>
     * tablet schema
     * </pre>
     *
     * <code>repeated .doris.segment_v2.ColumnMetaPB columns = 2;</code>
     */
    @java.lang.Override
    public java.util.List<doris.segment_v2.SegmentV2.ColumnMetaPB> getColumnsList() {
      return columns_;
    }
    /**
     * <pre>
     * tablet schema
     * </pre>
     *
     * <code>repeated .doris.segment_v2.ColumnMetaPB columns = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends doris.segment_v2.SegmentV2.ColumnMetaPBOrBuilder> 
        getColumnsOrBuilderList() {
      return columns_;
    }
    /**
     * <pre>
     * tablet schema
     * </pre>
     *
     * <code>repeated .doris.segment_v2.ColumnMetaPB columns = 2;</code>
     */
    @java.lang.Override
    public int getColumnsCount() {
      return columns_.size();
    }
    /**
     * <pre>
     * tablet schema
     * </pre>
     *
     * <code>repeated .doris.segment_v2.ColumnMetaPB columns = 2;</code>
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.ColumnMetaPB getColumns(int index) {
      return columns_.get(index);
    }
    /**
     * <pre>
     * tablet schema
     * </pre>
     *
     * <code>repeated .doris.segment_v2.ColumnMetaPB columns = 2;</code>
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.ColumnMetaPBOrBuilder getColumnsOrBuilder(
        int index) {
      return columns_.get(index);
    }

    public static final int NUM_ROWS_FIELD_NUMBER = 3;
    private int numRows_ = 0;
    /**
     * <pre>
     * number of values
     * </pre>
     *
     * <code>optional uint32 num_rows = 3;</code>
     * @return Whether the numRows field is set.
     */
    @java.lang.Override
    public boolean hasNumRows() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * number of values
     * </pre>
     *
     * <code>optional uint32 num_rows = 3;</code>
     * @return The numRows.
     */
    @java.lang.Override
    public int getNumRows() {
      return numRows_;
    }

    public static final int INDEX_FOOTPRINT_FIELD_NUMBER = 4;
    private long indexFootprint_ = 0L;
    /**
     * <pre>
     * total index footprint of all columns
     * </pre>
     *
     * <code>optional uint64 index_footprint = 4;</code>
     * @return Whether the indexFootprint field is set.
     */
    @java.lang.Override
    public boolean hasIndexFootprint() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * total index footprint of all columns
     * </pre>
     *
     * <code>optional uint64 index_footprint = 4;</code>
     * @return The indexFootprint.
     */
    @java.lang.Override
    public long getIndexFootprint() {
      return indexFootprint_;
    }

    public static final int DATA_FOOTPRINT_FIELD_NUMBER = 5;
    private long dataFootprint_ = 0L;
    /**
     * <pre>
     * total data footprint of all columns
     * </pre>
     *
     * <code>optional uint64 data_footprint = 5;</code>
     * @return Whether the dataFootprint field is set.
     */
    @java.lang.Override
    public boolean hasDataFootprint() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * total data footprint of all columns
     * </pre>
     *
     * <code>optional uint64 data_footprint = 5;</code>
     * @return The dataFootprint.
     */
    @java.lang.Override
    public long getDataFootprint() {
      return dataFootprint_;
    }

    public static final int RAW_DATA_FOOTPRINT_FIELD_NUMBER = 6;
    private long rawDataFootprint_ = 0L;
    /**
     * <pre>
     * raw data footprint
     * </pre>
     *
     * <code>optional uint64 raw_data_footprint = 6;</code>
     * @return Whether the rawDataFootprint field is set.
     */
    @java.lang.Override
    public boolean hasRawDataFootprint() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * raw data footprint
     * </pre>
     *
     * <code>optional uint64 raw_data_footprint = 6;</code>
     * @return The rawDataFootprint.
     */
    @java.lang.Override
    public long getRawDataFootprint() {
      return rawDataFootprint_;
    }

    public static final int COMPRESS_TYPE_FIELD_NUMBER = 7;
    private int compressType_ = 5;
    /**
     * <pre>
     * default compression type for file columns
     * </pre>
     *
     * <code>optional .doris.segment_v2.CompressionTypePB compress_type = 7 [default = LZ4F];</code>
     * @return Whether the compressType field is set.
     */
    @java.lang.Override public boolean hasCompressType() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * default compression type for file columns
     * </pre>
     *
     * <code>optional .doris.segment_v2.CompressionTypePB compress_type = 7 [default = LZ4F];</code>
     * @return The compressType.
     */
    @java.lang.Override public doris.segment_v2.SegmentV2.CompressionTypePB getCompressType() {
      doris.segment_v2.SegmentV2.CompressionTypePB result = doris.segment_v2.SegmentV2.CompressionTypePB.forNumber(compressType_);
      return result == null ? doris.segment_v2.SegmentV2.CompressionTypePB.LZ4F : result;
    }

    public static final int FILE_META_DATAS_FIELD_NUMBER = 8;
    @SuppressWarnings("serial")
    private java.util.List<doris.segment_v2.SegmentV2.MetadataPairPB> fileMetaDatas_;
    /**
     * <pre>
     * meta data of file
     * </pre>
     *
     * <code>repeated .doris.segment_v2.MetadataPairPB file_meta_datas = 8;</code>
     */
    @java.lang.Override
    public java.util.List<doris.segment_v2.SegmentV2.MetadataPairPB> getFileMetaDatasList() {
      return fileMetaDatas_;
    }
    /**
     * <pre>
     * meta data of file
     * </pre>
     *
     * <code>repeated .doris.segment_v2.MetadataPairPB file_meta_datas = 8;</code>
     */
    @java.lang.Override
    public java.util.List<? extends doris.segment_v2.SegmentV2.MetadataPairPBOrBuilder> 
        getFileMetaDatasOrBuilderList() {
      return fileMetaDatas_;
    }
    /**
     * <pre>
     * meta data of file
     * </pre>
     *
     * <code>repeated .doris.segment_v2.MetadataPairPB file_meta_datas = 8;</code>
     */
    @java.lang.Override
    public int getFileMetaDatasCount() {
      return fileMetaDatas_.size();
    }
    /**
     * <pre>
     * meta data of file
     * </pre>
     *
     * <code>repeated .doris.segment_v2.MetadataPairPB file_meta_datas = 8;</code>
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.MetadataPairPB getFileMetaDatas(int index) {
      return fileMetaDatas_.get(index);
    }
    /**
     * <pre>
     * meta data of file
     * </pre>
     *
     * <code>repeated .doris.segment_v2.MetadataPairPB file_meta_datas = 8;</code>
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.MetadataPairPBOrBuilder getFileMetaDatasOrBuilder(
        int index) {
      return fileMetaDatas_.get(index);
    }

    public static final int SHORT_KEY_INDEX_PAGE_FIELD_NUMBER = 9;
    private doris.segment_v2.SegmentV2.PagePointerPB shortKeyIndexPage_;
    /**
     * <pre>
     * Short key index's page
     * </pre>
     *
     * <code>optional .doris.segment_v2.PagePointerPB short_key_index_page = 9;</code>
     * @return Whether the shortKeyIndexPage field is set.
     */
    @java.lang.Override
    public boolean hasShortKeyIndexPage() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <pre>
     * Short key index's page
     * </pre>
     *
     * <code>optional .doris.segment_v2.PagePointerPB short_key_index_page = 9;</code>
     * @return The shortKeyIndexPage.
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.PagePointerPB getShortKeyIndexPage() {
      return shortKeyIndexPage_ == null ? doris.segment_v2.SegmentV2.PagePointerPB.getDefaultInstance() : shortKeyIndexPage_;
    }
    /**
     * <pre>
     * Short key index's page
     * </pre>
     *
     * <code>optional .doris.segment_v2.PagePointerPB short_key_index_page = 9;</code>
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.PagePointerPBOrBuilder getShortKeyIndexPageOrBuilder() {
      return shortKeyIndexPage_ == null ? doris.segment_v2.SegmentV2.PagePointerPB.getDefaultInstance() : shortKeyIndexPage_;
    }

    public static final int PRIMARY_KEY_INDEX_META_FIELD_NUMBER = 10;
    private doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB primaryKeyIndexMeta_;
    /**
     * <pre>
     * Primary key index meta
     * </pre>
     *
     * <code>optional .doris.segment_v2.PrimaryKeyIndexMetaPB primary_key_index_meta = 10;</code>
     * @return Whether the primaryKeyIndexMeta field is set.
     */
    @java.lang.Override
    public boolean hasPrimaryKeyIndexMeta() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     * <pre>
     * Primary key index meta
     * </pre>
     *
     * <code>optional .doris.segment_v2.PrimaryKeyIndexMetaPB primary_key_index_meta = 10;</code>
     * @return The primaryKeyIndexMeta.
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB getPrimaryKeyIndexMeta() {
      return primaryKeyIndexMeta_ == null ? doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB.getDefaultInstance() : primaryKeyIndexMeta_;
    }
    /**
     * <pre>
     * Primary key index meta
     * </pre>
     *
     * <code>optional .doris.segment_v2.PrimaryKeyIndexMetaPB primary_key_index_meta = 10;</code>
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPBOrBuilder getPrimaryKeyIndexMetaOrBuilder() {
      return primaryKeyIndexMeta_ == null ? doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB.getDefaultInstance() : primaryKeyIndexMeta_;
    }

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

      for (int i = 0; i < getColumnsCount(); i++) {
        if (!getColumns(i).isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasShortKeyIndexPage()) {
        if (!getShortKeyIndexPage().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasPrimaryKeyIndexMeta()) {
        if (!getPrimaryKeyIndexMeta().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.writeUInt32(1, version_);
      }
      for (int i = 0; i < columns_.size(); i++) {
        output.writeMessage(2, columns_.get(i));
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeUInt32(3, numRows_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeUInt64(4, indexFootprint_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeUInt64(5, dataFootprint_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeUInt64(6, rawDataFootprint_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeEnum(7, compressType_);
      }
      for (int i = 0; i < fileMetaDatas_.size(); i++) {
        output.writeMessage(8, fileMetaDatas_.get(i));
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        output.writeMessage(9, getShortKeyIndexPage());
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        output.writeMessage(10, getPrimaryKeyIndexMeta());
      }
      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
          .computeUInt32Size(1, version_);
      }
      for (int i = 0; i < columns_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, columns_.get(i));
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(3, numRows_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(4, indexFootprint_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(5, dataFootprint_);
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(6, rawDataFootprint_);
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(7, compressType_);
      }
      for (int i = 0; i < fileMetaDatas_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, fileMetaDatas_.get(i));
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, getShortKeyIndexPage());
      }
      if (((bitField0_ & 0x00000080) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, getPrimaryKeyIndexMeta());
      }
      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 doris.segment_v2.SegmentV2.SegmentFooterPB)) {
        return super.equals(obj);
      }
      doris.segment_v2.SegmentV2.SegmentFooterPB other = (doris.segment_v2.SegmentV2.SegmentFooterPB) obj;

      if (hasVersion() != other.hasVersion()) return false;
      if (hasVersion()) {
        if (getVersion()
            != other.getVersion()) return false;
      }
      if (!getColumnsList()
          .equals(other.getColumnsList())) return false;
      if (hasNumRows() != other.hasNumRows()) return false;
      if (hasNumRows()) {
        if (getNumRows()
            != other.getNumRows()) return false;
      }
      if (hasIndexFootprint() != other.hasIndexFootprint()) return false;
      if (hasIndexFootprint()) {
        if (getIndexFootprint()
            != other.getIndexFootprint()) return false;
      }
      if (hasDataFootprint() != other.hasDataFootprint()) return false;
      if (hasDataFootprint()) {
        if (getDataFootprint()
            != other.getDataFootprint()) return false;
      }
      if (hasRawDataFootprint() != other.hasRawDataFootprint()) return false;
      if (hasRawDataFootprint()) {
        if (getRawDataFootprint()
            != other.getRawDataFootprint()) return false;
      }
      if (hasCompressType() != other.hasCompressType()) return false;
      if (hasCompressType()) {
        if (compressType_ != other.compressType_) return false;
      }
      if (!getFileMetaDatasList()
          .equals(other.getFileMetaDatasList())) return false;
      if (hasShortKeyIndexPage() != other.hasShortKeyIndexPage()) return false;
      if (hasShortKeyIndexPage()) {
        if (!getShortKeyIndexPage()
            .equals(other.getShortKeyIndexPage())) return false;
      }
      if (hasPrimaryKeyIndexMeta() != other.hasPrimaryKeyIndexMeta()) return false;
      if (hasPrimaryKeyIndexMeta()) {
        if (!getPrimaryKeyIndexMeta()
            .equals(other.getPrimaryKeyIndexMeta())) 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 (hasVersion()) {
        hash = (37 * hash) + VERSION_FIELD_NUMBER;
        hash = (53 * hash) + getVersion();
      }
      if (getColumnsCount() > 0) {
        hash = (37 * hash) + COLUMNS_FIELD_NUMBER;
        hash = (53 * hash) + getColumnsList().hashCode();
      }
      if (hasNumRows()) {
        hash = (37 * hash) + NUM_ROWS_FIELD_NUMBER;
        hash = (53 * hash) + getNumRows();
      }
      if (hasIndexFootprint()) {
        hash = (37 * hash) + INDEX_FOOTPRINT_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getIndexFootprint());
      }
      if (hasDataFootprint()) {
        hash = (37 * hash) + DATA_FOOTPRINT_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getDataFootprint());
      }
      if (hasRawDataFootprint()) {
        hash = (37 * hash) + RAW_DATA_FOOTPRINT_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getRawDataFootprint());
      }
      if (hasCompressType()) {
        hash = (37 * hash) + COMPRESS_TYPE_FIELD_NUMBER;
        hash = (53 * hash) + compressType_;
      }
      if (getFileMetaDatasCount() > 0) {
        hash = (37 * hash) + FILE_META_DATAS_FIELD_NUMBER;
        hash = (53 * hash) + getFileMetaDatasList().hashCode();
      }
      if (hasShortKeyIndexPage()) {
        hash = (37 * hash) + SHORT_KEY_INDEX_PAGE_FIELD_NUMBER;
        hash = (53 * hash) + getShortKeyIndexPage().hashCode();
      }
      if (hasPrimaryKeyIndexMeta()) {
        hash = (37 * hash) + PRIMARY_KEY_INDEX_META_FIELD_NUMBER;
        hash = (53 * hash) + getPrimaryKeyIndexMeta().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static doris.segment_v2.SegmentV2.SegmentFooterPB parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.SegmentFooterPB parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.SegmentFooterPB parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.SegmentFooterPB parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.SegmentFooterPB parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.SegmentFooterPB parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.SegmentFooterPB parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.segment_v2.SegmentV2.SegmentFooterPB 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 doris.segment_v2.SegmentV2.SegmentFooterPB parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static doris.segment_v2.SegmentV2.SegmentFooterPB 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 doris.segment_v2.SegmentV2.SegmentFooterPB parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.segment_v2.SegmentV2.SegmentFooterPB 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(doris.segment_v2.SegmentV2.SegmentFooterPB 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.segment_v2.SegmentFooterPB}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:doris.segment_v2.SegmentFooterPB)
        doris.segment_v2.SegmentV2.SegmentFooterPBOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_SegmentFooterPB_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_SegmentFooterPB_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                doris.segment_v2.SegmentV2.SegmentFooterPB.class, doris.segment_v2.SegmentV2.SegmentFooterPB.Builder.class);
      }

      // Construct using doris.segment_v2.SegmentV2.SegmentFooterPB.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getColumnsFieldBuilder();
          getFileMetaDatasFieldBuilder();
          getShortKeyIndexPageFieldBuilder();
          getPrimaryKeyIndexMetaFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        version_ = 1;
        if (columnsBuilder_ == null) {
          columns_ = java.util.Collections.emptyList();
        } else {
          columns_ = null;
          columnsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        numRows_ = 0;
        indexFootprint_ = 0L;
        dataFootprint_ = 0L;
        rawDataFootprint_ = 0L;
        compressType_ = 5;
        if (fileMetaDatasBuilder_ == null) {
          fileMetaDatas_ = java.util.Collections.emptyList();
        } else {
          fileMetaDatas_ = null;
          fileMetaDatasBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000080);
        shortKeyIndexPage_ = null;
        if (shortKeyIndexPageBuilder_ != null) {
          shortKeyIndexPageBuilder_.dispose();
          shortKeyIndexPageBuilder_ = null;
        }
        primaryKeyIndexMeta_ = null;
        if (primaryKeyIndexMetaBuilder_ != null) {
          primaryKeyIndexMetaBuilder_.dispose();
          primaryKeyIndexMetaBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_SegmentFooterPB_descriptor;
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.SegmentFooterPB getDefaultInstanceForType() {
        return doris.segment_v2.SegmentV2.SegmentFooterPB.getDefaultInstance();
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.SegmentFooterPB build() {
        doris.segment_v2.SegmentV2.SegmentFooterPB result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.SegmentFooterPB buildPartial() {
        doris.segment_v2.SegmentV2.SegmentFooterPB result = new doris.segment_v2.SegmentV2.SegmentFooterPB(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(doris.segment_v2.SegmentV2.SegmentFooterPB result) {
        if (columnsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            columns_ = java.util.Collections.unmodifiableList(columns_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.columns_ = columns_;
        } else {
          result.columns_ = columnsBuilder_.build();
        }
        if (fileMetaDatasBuilder_ == null) {
          if (((bitField0_ & 0x00000080) != 0)) {
            fileMetaDatas_ = java.util.Collections.unmodifiableList(fileMetaDatas_);
            bitField0_ = (bitField0_ & ~0x00000080);
          }
          result.fileMetaDatas_ = fileMetaDatas_;
        } else {
          result.fileMetaDatas_ = fileMetaDatasBuilder_.build();
        }
      }

      private void buildPartial0(doris.segment_v2.SegmentV2.SegmentFooterPB result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.version_ = version_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.numRows_ = numRows_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.indexFootprint_ = indexFootprint_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.dataFootprint_ = dataFootprint_;
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.rawDataFootprint_ = rawDataFootprint_;
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.compressType_ = compressType_;
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.shortKeyIndexPage_ = shortKeyIndexPageBuilder_ == null
              ? shortKeyIndexPage_
              : shortKeyIndexPageBuilder_.build();
          to_bitField0_ |= 0x00000040;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          result.primaryKeyIndexMeta_ = primaryKeyIndexMetaBuilder_ == null
              ? primaryKeyIndexMeta_
              : primaryKeyIndexMetaBuilder_.build();
          to_bitField0_ |= 0x00000080;
        }
        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 doris.segment_v2.SegmentV2.SegmentFooterPB) {
          return mergeFrom((doris.segment_v2.SegmentV2.SegmentFooterPB)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(doris.segment_v2.SegmentV2.SegmentFooterPB other) {
        if (other == doris.segment_v2.SegmentV2.SegmentFooterPB.getDefaultInstance()) return this;
        if (other.hasVersion()) {
          setVersion(other.getVersion());
        }
        if (columnsBuilder_ == null) {
          if (!other.columns_.isEmpty()) {
            if (columns_.isEmpty()) {
              columns_ = other.columns_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureColumnsIsMutable();
              columns_.addAll(other.columns_);
            }
            onChanged();
          }
        } else {
          if (!other.columns_.isEmpty()) {
            if (columnsBuilder_.isEmpty()) {
              columnsBuilder_.dispose();
              columnsBuilder_ = null;
              columns_ = other.columns_;
              bitField0_ = (bitField0_ & ~0x00000002);
              columnsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getColumnsFieldBuilder() : null;
            } else {
              columnsBuilder_.addAllMessages(other.columns_);
            }
          }
        }
        if (other.hasNumRows()) {
          setNumRows(other.getNumRows());
        }
        if (other.hasIndexFootprint()) {
          setIndexFootprint(other.getIndexFootprint());
        }
        if (other.hasDataFootprint()) {
          setDataFootprint(other.getDataFootprint());
        }
        if (other.hasRawDataFootprint()) {
          setRawDataFootprint(other.getRawDataFootprint());
        }
        if (other.hasCompressType()) {
          setCompressType(other.getCompressType());
        }
        if (fileMetaDatasBuilder_ == null) {
          if (!other.fileMetaDatas_.isEmpty()) {
            if (fileMetaDatas_.isEmpty()) {
              fileMetaDatas_ = other.fileMetaDatas_;
              bitField0_ = (bitField0_ & ~0x00000080);
            } else {
              ensureFileMetaDatasIsMutable();
              fileMetaDatas_.addAll(other.fileMetaDatas_);
            }
            onChanged();
          }
        } else {
          if (!other.fileMetaDatas_.isEmpty()) {
            if (fileMetaDatasBuilder_.isEmpty()) {
              fileMetaDatasBuilder_.dispose();
              fileMetaDatasBuilder_ = null;
              fileMetaDatas_ = other.fileMetaDatas_;
              bitField0_ = (bitField0_ & ~0x00000080);
              fileMetaDatasBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getFileMetaDatasFieldBuilder() : null;
            } else {
              fileMetaDatasBuilder_.addAllMessages(other.fileMetaDatas_);
            }
          }
        }
        if (other.hasShortKeyIndexPage()) {
          mergeShortKeyIndexPage(other.getShortKeyIndexPage());
        }
        if (other.hasPrimaryKeyIndexMeta()) {
          mergePrimaryKeyIndexMeta(other.getPrimaryKeyIndexMeta());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        for (int i = 0; i < getColumnsCount(); i++) {
          if (!getColumns(i).isInitialized()) {
            return false;
          }
        }
        if (hasShortKeyIndexPage()) {
          if (!getShortKeyIndexPage().isInitialized()) {
            return false;
          }
        }
        if (hasPrimaryKeyIndexMeta()) {
          if (!getPrimaryKeyIndexMeta().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: {
                version_ = input.readUInt32();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 18: {
                doris.segment_v2.SegmentV2.ColumnMetaPB m =
                    input.readMessage(
                        doris.segment_v2.SegmentV2.ColumnMetaPB.PARSER,
                        extensionRegistry);
                if (columnsBuilder_ == null) {
                  ensureColumnsIsMutable();
                  columns_.add(m);
                } else {
                  columnsBuilder_.addMessage(m);
                }
                break;
              } // case 18
              case 24: {
                numRows_ = input.readUInt32();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 32: {
                indexFootprint_ = input.readUInt64();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
              case 40: {
                dataFootprint_ = input.readUInt64();
                bitField0_ |= 0x00000010;
                break;
              } // case 40
              case 48: {
                rawDataFootprint_ = input.readUInt64();
                bitField0_ |= 0x00000020;
                break;
              } // case 48
              case 56: {
                int tmpRaw = input.readEnum();
                doris.segment_v2.SegmentV2.CompressionTypePB tmpValue =
                    doris.segment_v2.SegmentV2.CompressionTypePB.forNumber(tmpRaw);
                if (tmpValue == null) {
                  mergeUnknownVarintField(7, tmpRaw);
                } else {
                  compressType_ = tmpRaw;
                  bitField0_ |= 0x00000040;
                }
                break;
              } // case 56
              case 66: {
                doris.segment_v2.SegmentV2.MetadataPairPB m =
                    input.readMessage(
                        doris.segment_v2.SegmentV2.MetadataPairPB.PARSER,
                        extensionRegistry);
                if (fileMetaDatasBuilder_ == null) {
                  ensureFileMetaDatasIsMutable();
                  fileMetaDatas_.add(m);
                } else {
                  fileMetaDatasBuilder_.addMessage(m);
                }
                break;
              } // case 66
              case 74: {
                input.readMessage(
                    getShortKeyIndexPageFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000100;
                break;
              } // case 74
              case 82: {
                input.readMessage(
                    getPrimaryKeyIndexMetaFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000200;
                break;
              } // case 82
              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 version_ = 1;
      /**
       * <pre>
       * file version
       * </pre>
       *
       * <code>optional uint32 version = 1 [default = 1];</code>
       * @return Whether the version field is set.
       */
      @java.lang.Override
      public boolean hasVersion() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * file version
       * </pre>
       *
       * <code>optional uint32 version = 1 [default = 1];</code>
       * @return The version.
       */
      @java.lang.Override
      public int getVersion() {
        return version_;
      }
      /**
       * <pre>
       * file version
       * </pre>
       *
       * <code>optional uint32 version = 1 [default = 1];</code>
       * @param value The version to set.
       * @return This builder for chaining.
       */
      public Builder setVersion(int value) {

        version_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * file version
       * </pre>
       *
       * <code>optional uint32 version = 1 [default = 1];</code>
       * @return This builder for chaining.
       */
      public Builder clearVersion() {
        bitField0_ = (bitField0_ & ~0x00000001);
        version_ = 1;
        onChanged();
        return this;
      }

      private java.util.List<doris.segment_v2.SegmentV2.ColumnMetaPB> columns_ =
        java.util.Collections.emptyList();
      private void ensureColumnsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          columns_ = new java.util.ArrayList<doris.segment_v2.SegmentV2.ColumnMetaPB>(columns_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          doris.segment_v2.SegmentV2.ColumnMetaPB, doris.segment_v2.SegmentV2.ColumnMetaPB.Builder, doris.segment_v2.SegmentV2.ColumnMetaPBOrBuilder> columnsBuilder_;

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

      private int numRows_ ;
      /**
       * <pre>
       * number of values
       * </pre>
       *
       * <code>optional uint32 num_rows = 3;</code>
       * @return Whether the numRows field is set.
       */
      @java.lang.Override
      public boolean hasNumRows() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * number of values
       * </pre>
       *
       * <code>optional uint32 num_rows = 3;</code>
       * @return The numRows.
       */
      @java.lang.Override
      public int getNumRows() {
        return numRows_;
      }
      /**
       * <pre>
       * number of values
       * </pre>
       *
       * <code>optional uint32 num_rows = 3;</code>
       * @param value The numRows to set.
       * @return This builder for chaining.
       */
      public Builder setNumRows(int value) {

        numRows_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * number of values
       * </pre>
       *
       * <code>optional uint32 num_rows = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearNumRows() {
        bitField0_ = (bitField0_ & ~0x00000004);
        numRows_ = 0;
        onChanged();
        return this;
      }

      private long indexFootprint_ ;
      /**
       * <pre>
       * total index footprint of all columns
       * </pre>
       *
       * <code>optional uint64 index_footprint = 4;</code>
       * @return Whether the indexFootprint field is set.
       */
      @java.lang.Override
      public boolean hasIndexFootprint() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * total index footprint of all columns
       * </pre>
       *
       * <code>optional uint64 index_footprint = 4;</code>
       * @return The indexFootprint.
       */
      @java.lang.Override
      public long getIndexFootprint() {
        return indexFootprint_;
      }
      /**
       * <pre>
       * total index footprint of all columns
       * </pre>
       *
       * <code>optional uint64 index_footprint = 4;</code>
       * @param value The indexFootprint to set.
       * @return This builder for chaining.
       */
      public Builder setIndexFootprint(long value) {

        indexFootprint_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * total index footprint of all columns
       * </pre>
       *
       * <code>optional uint64 index_footprint = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearIndexFootprint() {
        bitField0_ = (bitField0_ & ~0x00000008);
        indexFootprint_ = 0L;
        onChanged();
        return this;
      }

      private long dataFootprint_ ;
      /**
       * <pre>
       * total data footprint of all columns
       * </pre>
       *
       * <code>optional uint64 data_footprint = 5;</code>
       * @return Whether the dataFootprint field is set.
       */
      @java.lang.Override
      public boolean hasDataFootprint() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * total data footprint of all columns
       * </pre>
       *
       * <code>optional uint64 data_footprint = 5;</code>
       * @return The dataFootprint.
       */
      @java.lang.Override
      public long getDataFootprint() {
        return dataFootprint_;
      }
      /**
       * <pre>
       * total data footprint of all columns
       * </pre>
       *
       * <code>optional uint64 data_footprint = 5;</code>
       * @param value The dataFootprint to set.
       * @return This builder for chaining.
       */
      public Builder setDataFootprint(long value) {

        dataFootprint_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * total data footprint of all columns
       * </pre>
       *
       * <code>optional uint64 data_footprint = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearDataFootprint() {
        bitField0_ = (bitField0_ & ~0x00000010);
        dataFootprint_ = 0L;
        onChanged();
        return this;
      }

      private long rawDataFootprint_ ;
      /**
       * <pre>
       * raw data footprint
       * </pre>
       *
       * <code>optional uint64 raw_data_footprint = 6;</code>
       * @return Whether the rawDataFootprint field is set.
       */
      @java.lang.Override
      public boolean hasRawDataFootprint() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * raw data footprint
       * </pre>
       *
       * <code>optional uint64 raw_data_footprint = 6;</code>
       * @return The rawDataFootprint.
       */
      @java.lang.Override
      public long getRawDataFootprint() {
        return rawDataFootprint_;
      }
      /**
       * <pre>
       * raw data footprint
       * </pre>
       *
       * <code>optional uint64 raw_data_footprint = 6;</code>
       * @param value The rawDataFootprint to set.
       * @return This builder for chaining.
       */
      public Builder setRawDataFootprint(long value) {

        rawDataFootprint_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * raw data footprint
       * </pre>
       *
       * <code>optional uint64 raw_data_footprint = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearRawDataFootprint() {
        bitField0_ = (bitField0_ & ~0x00000020);
        rawDataFootprint_ = 0L;
        onChanged();
        return this;
      }

      private int compressType_ = 5;
      /**
       * <pre>
       * default compression type for file columns
       * </pre>
       *
       * <code>optional .doris.segment_v2.CompressionTypePB compress_type = 7 [default = LZ4F];</code>
       * @return Whether the compressType field is set.
       */
      @java.lang.Override public boolean hasCompressType() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <pre>
       * default compression type for file columns
       * </pre>
       *
       * <code>optional .doris.segment_v2.CompressionTypePB compress_type = 7 [default = LZ4F];</code>
       * @return The compressType.
       */
      @java.lang.Override
      public doris.segment_v2.SegmentV2.CompressionTypePB getCompressType() {
        doris.segment_v2.SegmentV2.CompressionTypePB result = doris.segment_v2.SegmentV2.CompressionTypePB.forNumber(compressType_);
        return result == null ? doris.segment_v2.SegmentV2.CompressionTypePB.LZ4F : result;
      }
      /**
       * <pre>
       * default compression type for file columns
       * </pre>
       *
       * <code>optional .doris.segment_v2.CompressionTypePB compress_type = 7 [default = LZ4F];</code>
       * @param value The compressType to set.
       * @return This builder for chaining.
       */
      public Builder setCompressType(doris.segment_v2.SegmentV2.CompressionTypePB value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000040;
        compressType_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * default compression type for file columns
       * </pre>
       *
       * <code>optional .doris.segment_v2.CompressionTypePB compress_type = 7 [default = LZ4F];</code>
       * @return This builder for chaining.
       */
      public Builder clearCompressType() {
        bitField0_ = (bitField0_ & ~0x00000040);
        compressType_ = 5;
        onChanged();
        return this;
      }

      private java.util.List<doris.segment_v2.SegmentV2.MetadataPairPB> fileMetaDatas_ =
        java.util.Collections.emptyList();
      private void ensureFileMetaDatasIsMutable() {
        if (!((bitField0_ & 0x00000080) != 0)) {
          fileMetaDatas_ = new java.util.ArrayList<doris.segment_v2.SegmentV2.MetadataPairPB>(fileMetaDatas_);
          bitField0_ |= 0x00000080;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          doris.segment_v2.SegmentV2.MetadataPairPB, doris.segment_v2.SegmentV2.MetadataPairPB.Builder, doris.segment_v2.SegmentV2.MetadataPairPBOrBuilder> fileMetaDatasBuilder_;

      /**
       * <pre>
       * meta data of file
       * </pre>
       *
       * <code>repeated .doris.segment_v2.MetadataPairPB file_meta_datas = 8;</code>
       */
      public java.util.List<doris.segment_v2.SegmentV2.MetadataPairPB> getFileMetaDatasList() {
        if (fileMetaDatasBuilder_ == null) {
          return java.util.Collections.unmodifiableList(fileMetaDatas_);
        } else {
          return fileMetaDatasBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * meta data of file
       * </pre>
       *
       * <code>repeated .doris.segment_v2.MetadataPairPB file_meta_datas = 8;</code>
       */
      public int getFileMetaDatasCount() {
        if (fileMetaDatasBuilder_ == null) {
          return fileMetaDatas_.size();
        } else {
          return fileMetaDatasBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * meta data of file
       * </pre>
       *
       * <code>repeated .doris.segment_v2.MetadataPairPB file_meta_datas = 8;</code>
       */
      public doris.segment_v2.SegmentV2.MetadataPairPB getFileMetaDatas(int index) {
        if (fileMetaDatasBuilder_ == null) {
          return fileMetaDatas_.get(index);
        } else {
          return fileMetaDatasBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * meta data of file
       * </pre>
       *
       * <code>repeated .doris.segment_v2.MetadataPairPB file_meta_datas = 8;</code>
       */
      public Builder setFileMetaDatas(
          int index, doris.segment_v2.SegmentV2.MetadataPairPB value) {
        if (fileMetaDatasBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFileMetaDatasIsMutable();
          fileMetaDatas_.set(index, value);
          onChanged();
        } else {
          fileMetaDatasBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * meta data of file
       * </pre>
       *
       * <code>repeated .doris.segment_v2.MetadataPairPB file_meta_datas = 8;</code>
       */
      public Builder setFileMetaDatas(
          int index, doris.segment_v2.SegmentV2.MetadataPairPB.Builder builderForValue) {
        if (fileMetaDatasBuilder_ == null) {
          ensureFileMetaDatasIsMutable();
          fileMetaDatas_.set(index, builderForValue.build());
          onChanged();
        } else {
          fileMetaDatasBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * meta data of file
       * </pre>
       *
       * <code>repeated .doris.segment_v2.MetadataPairPB file_meta_datas = 8;</code>
       */
      public Builder addFileMetaDatas(doris.segment_v2.SegmentV2.MetadataPairPB value) {
        if (fileMetaDatasBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFileMetaDatasIsMutable();
          fileMetaDatas_.add(value);
          onChanged();
        } else {
          fileMetaDatasBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * meta data of file
       * </pre>
       *
       * <code>repeated .doris.segment_v2.MetadataPairPB file_meta_datas = 8;</code>
       */
      public Builder addFileMetaDatas(
          int index, doris.segment_v2.SegmentV2.MetadataPairPB value) {
        if (fileMetaDatasBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFileMetaDatasIsMutable();
          fileMetaDatas_.add(index, value);
          onChanged();
        } else {
          fileMetaDatasBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * meta data of file
       * </pre>
       *
       * <code>repeated .doris.segment_v2.MetadataPairPB file_meta_datas = 8;</code>
       */
      public Builder addFileMetaDatas(
          doris.segment_v2.SegmentV2.MetadataPairPB.Builder builderForValue) {
        if (fileMetaDatasBuilder_ == null) {
          ensureFileMetaDatasIsMutable();
          fileMetaDatas_.add(builderForValue.build());
          onChanged();
        } else {
          fileMetaDatasBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * meta data of file
       * </pre>
       *
       * <code>repeated .doris.segment_v2.MetadataPairPB file_meta_datas = 8;</code>
       */
      public Builder addFileMetaDatas(
          int index, doris.segment_v2.SegmentV2.MetadataPairPB.Builder builderForValue) {
        if (fileMetaDatasBuilder_ == null) {
          ensureFileMetaDatasIsMutable();
          fileMetaDatas_.add(index, builderForValue.build());
          onChanged();
        } else {
          fileMetaDatasBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * meta data of file
       * </pre>
       *
       * <code>repeated .doris.segment_v2.MetadataPairPB file_meta_datas = 8;</code>
       */
      public Builder addAllFileMetaDatas(
          java.lang.Iterable<? extends doris.segment_v2.SegmentV2.MetadataPairPB> values) {
        if (fileMetaDatasBuilder_ == null) {
          ensureFileMetaDatasIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, fileMetaDatas_);
          onChanged();
        } else {
          fileMetaDatasBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * meta data of file
       * </pre>
       *
       * <code>repeated .doris.segment_v2.MetadataPairPB file_meta_datas = 8;</code>
       */
      public Builder clearFileMetaDatas() {
        if (fileMetaDatasBuilder_ == null) {
          fileMetaDatas_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000080);
          onChanged();
        } else {
          fileMetaDatasBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * meta data of file
       * </pre>
       *
       * <code>repeated .doris.segment_v2.MetadataPairPB file_meta_datas = 8;</code>
       */
      public Builder removeFileMetaDatas(int index) {
        if (fileMetaDatasBuilder_ == null) {
          ensureFileMetaDatasIsMutable();
          fileMetaDatas_.remove(index);
          onChanged();
        } else {
          fileMetaDatasBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * meta data of file
       * </pre>
       *
       * <code>repeated .doris.segment_v2.MetadataPairPB file_meta_datas = 8;</code>
       */
      public doris.segment_v2.SegmentV2.MetadataPairPB.Builder getFileMetaDatasBuilder(
          int index) {
        return getFileMetaDatasFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * meta data of file
       * </pre>
       *
       * <code>repeated .doris.segment_v2.MetadataPairPB file_meta_datas = 8;</code>
       */
      public doris.segment_v2.SegmentV2.MetadataPairPBOrBuilder getFileMetaDatasOrBuilder(
          int index) {
        if (fileMetaDatasBuilder_ == null) {
          return fileMetaDatas_.get(index);  } else {
          return fileMetaDatasBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * meta data of file
       * </pre>
       *
       * <code>repeated .doris.segment_v2.MetadataPairPB file_meta_datas = 8;</code>
       */
      public java.util.List<? extends doris.segment_v2.SegmentV2.MetadataPairPBOrBuilder> 
           getFileMetaDatasOrBuilderList() {
        if (fileMetaDatasBuilder_ != null) {
          return fileMetaDatasBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(fileMetaDatas_);
        }
      }
      /**
       * <pre>
       * meta data of file
       * </pre>
       *
       * <code>repeated .doris.segment_v2.MetadataPairPB file_meta_datas = 8;</code>
       */
      public doris.segment_v2.SegmentV2.MetadataPairPB.Builder addFileMetaDatasBuilder() {
        return getFileMetaDatasFieldBuilder().addBuilder(
            doris.segment_v2.SegmentV2.MetadataPairPB.getDefaultInstance());
      }
      /**
       * <pre>
       * meta data of file
       * </pre>
       *
       * <code>repeated .doris.segment_v2.MetadataPairPB file_meta_datas = 8;</code>
       */
      public doris.segment_v2.SegmentV2.MetadataPairPB.Builder addFileMetaDatasBuilder(
          int index) {
        return getFileMetaDatasFieldBuilder().addBuilder(
            index, doris.segment_v2.SegmentV2.MetadataPairPB.getDefaultInstance());
      }
      /**
       * <pre>
       * meta data of file
       * </pre>
       *
       * <code>repeated .doris.segment_v2.MetadataPairPB file_meta_datas = 8;</code>
       */
      public java.util.List<doris.segment_v2.SegmentV2.MetadataPairPB.Builder> 
           getFileMetaDatasBuilderList() {
        return getFileMetaDatasFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          doris.segment_v2.SegmentV2.MetadataPairPB, doris.segment_v2.SegmentV2.MetadataPairPB.Builder, doris.segment_v2.SegmentV2.MetadataPairPBOrBuilder> 
          getFileMetaDatasFieldBuilder() {
        if (fileMetaDatasBuilder_ == null) {
          fileMetaDatasBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              doris.segment_v2.SegmentV2.MetadataPairPB, doris.segment_v2.SegmentV2.MetadataPairPB.Builder, doris.segment_v2.SegmentV2.MetadataPairPBOrBuilder>(
                  fileMetaDatas_,
                  ((bitField0_ & 0x00000080) != 0),
                  getParentForChildren(),
                  isClean());
          fileMetaDatas_ = null;
        }
        return fileMetaDatasBuilder_;
      }

      private doris.segment_v2.SegmentV2.PagePointerPB shortKeyIndexPage_;
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.PagePointerPB, doris.segment_v2.SegmentV2.PagePointerPB.Builder, doris.segment_v2.SegmentV2.PagePointerPBOrBuilder> shortKeyIndexPageBuilder_;
      /**
       * <pre>
       * Short key index's page
       * </pre>
       *
       * <code>optional .doris.segment_v2.PagePointerPB short_key_index_page = 9;</code>
       * @return Whether the shortKeyIndexPage field is set.
       */
      public boolean hasShortKeyIndexPage() {
        return ((bitField0_ & 0x00000100) != 0);
      }
      /**
       * <pre>
       * Short key index's page
       * </pre>
       *
       * <code>optional .doris.segment_v2.PagePointerPB short_key_index_page = 9;</code>
       * @return The shortKeyIndexPage.
       */
      public doris.segment_v2.SegmentV2.PagePointerPB getShortKeyIndexPage() {
        if (shortKeyIndexPageBuilder_ == null) {
          return shortKeyIndexPage_ == null ? doris.segment_v2.SegmentV2.PagePointerPB.getDefaultInstance() : shortKeyIndexPage_;
        } else {
          return shortKeyIndexPageBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Short key index's page
       * </pre>
       *
       * <code>optional .doris.segment_v2.PagePointerPB short_key_index_page = 9;</code>
       */
      public Builder setShortKeyIndexPage(doris.segment_v2.SegmentV2.PagePointerPB value) {
        if (shortKeyIndexPageBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          shortKeyIndexPage_ = value;
        } else {
          shortKeyIndexPageBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Short key index's page
       * </pre>
       *
       * <code>optional .doris.segment_v2.PagePointerPB short_key_index_page = 9;</code>
       */
      public Builder setShortKeyIndexPage(
          doris.segment_v2.SegmentV2.PagePointerPB.Builder builderForValue) {
        if (shortKeyIndexPageBuilder_ == null) {
          shortKeyIndexPage_ = builderForValue.build();
        } else {
          shortKeyIndexPageBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Short key index's page
       * </pre>
       *
       * <code>optional .doris.segment_v2.PagePointerPB short_key_index_page = 9;</code>
       */
      public Builder mergeShortKeyIndexPage(doris.segment_v2.SegmentV2.PagePointerPB value) {
        if (shortKeyIndexPageBuilder_ == null) {
          if (((bitField0_ & 0x00000100) != 0) &&
            shortKeyIndexPage_ != null &&
            shortKeyIndexPage_ != doris.segment_v2.SegmentV2.PagePointerPB.getDefaultInstance()) {
            getShortKeyIndexPageBuilder().mergeFrom(value);
          } else {
            shortKeyIndexPage_ = value;
          }
        } else {
          shortKeyIndexPageBuilder_.mergeFrom(value);
        }
        if (shortKeyIndexPage_ != null) {
          bitField0_ |= 0x00000100;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Short key index's page
       * </pre>
       *
       * <code>optional .doris.segment_v2.PagePointerPB short_key_index_page = 9;</code>
       */
      public Builder clearShortKeyIndexPage() {
        bitField0_ = (bitField0_ & ~0x00000100);
        shortKeyIndexPage_ = null;
        if (shortKeyIndexPageBuilder_ != null) {
          shortKeyIndexPageBuilder_.dispose();
          shortKeyIndexPageBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Short key index's page
       * </pre>
       *
       * <code>optional .doris.segment_v2.PagePointerPB short_key_index_page = 9;</code>
       */
      public doris.segment_v2.SegmentV2.PagePointerPB.Builder getShortKeyIndexPageBuilder() {
        bitField0_ |= 0x00000100;
        onChanged();
        return getShortKeyIndexPageFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Short key index's page
       * </pre>
       *
       * <code>optional .doris.segment_v2.PagePointerPB short_key_index_page = 9;</code>
       */
      public doris.segment_v2.SegmentV2.PagePointerPBOrBuilder getShortKeyIndexPageOrBuilder() {
        if (shortKeyIndexPageBuilder_ != null) {
          return shortKeyIndexPageBuilder_.getMessageOrBuilder();
        } else {
          return shortKeyIndexPage_ == null ?
              doris.segment_v2.SegmentV2.PagePointerPB.getDefaultInstance() : shortKeyIndexPage_;
        }
      }
      /**
       * <pre>
       * Short key index's page
       * </pre>
       *
       * <code>optional .doris.segment_v2.PagePointerPB short_key_index_page = 9;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.PagePointerPB, doris.segment_v2.SegmentV2.PagePointerPB.Builder, doris.segment_v2.SegmentV2.PagePointerPBOrBuilder> 
          getShortKeyIndexPageFieldBuilder() {
        if (shortKeyIndexPageBuilder_ == null) {
          shortKeyIndexPageBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              doris.segment_v2.SegmentV2.PagePointerPB, doris.segment_v2.SegmentV2.PagePointerPB.Builder, doris.segment_v2.SegmentV2.PagePointerPBOrBuilder>(
                  getShortKeyIndexPage(),
                  getParentForChildren(),
                  isClean());
          shortKeyIndexPage_ = null;
        }
        return shortKeyIndexPageBuilder_;
      }

      private doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB primaryKeyIndexMeta_;
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB, doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB.Builder, doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPBOrBuilder> primaryKeyIndexMetaBuilder_;
      /**
       * <pre>
       * Primary key index meta
       * </pre>
       *
       * <code>optional .doris.segment_v2.PrimaryKeyIndexMetaPB primary_key_index_meta = 10;</code>
       * @return Whether the primaryKeyIndexMeta field is set.
       */
      public boolean hasPrimaryKeyIndexMeta() {
        return ((bitField0_ & 0x00000200) != 0);
      }
      /**
       * <pre>
       * Primary key index meta
       * </pre>
       *
       * <code>optional .doris.segment_v2.PrimaryKeyIndexMetaPB primary_key_index_meta = 10;</code>
       * @return The primaryKeyIndexMeta.
       */
      public doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB getPrimaryKeyIndexMeta() {
        if (primaryKeyIndexMetaBuilder_ == null) {
          return primaryKeyIndexMeta_ == null ? doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB.getDefaultInstance() : primaryKeyIndexMeta_;
        } else {
          return primaryKeyIndexMetaBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Primary key index meta
       * </pre>
       *
       * <code>optional .doris.segment_v2.PrimaryKeyIndexMetaPB primary_key_index_meta = 10;</code>
       */
      public Builder setPrimaryKeyIndexMeta(doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB value) {
        if (primaryKeyIndexMetaBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          primaryKeyIndexMeta_ = value;
        } else {
          primaryKeyIndexMetaBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Primary key index meta
       * </pre>
       *
       * <code>optional .doris.segment_v2.PrimaryKeyIndexMetaPB primary_key_index_meta = 10;</code>
       */
      public Builder setPrimaryKeyIndexMeta(
          doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB.Builder builderForValue) {
        if (primaryKeyIndexMetaBuilder_ == null) {
          primaryKeyIndexMeta_ = builderForValue.build();
        } else {
          primaryKeyIndexMetaBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Primary key index meta
       * </pre>
       *
       * <code>optional .doris.segment_v2.PrimaryKeyIndexMetaPB primary_key_index_meta = 10;</code>
       */
      public Builder mergePrimaryKeyIndexMeta(doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB value) {
        if (primaryKeyIndexMetaBuilder_ == null) {
          if (((bitField0_ & 0x00000200) != 0) &&
            primaryKeyIndexMeta_ != null &&
            primaryKeyIndexMeta_ != doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB.getDefaultInstance()) {
            getPrimaryKeyIndexMetaBuilder().mergeFrom(value);
          } else {
            primaryKeyIndexMeta_ = value;
          }
        } else {
          primaryKeyIndexMetaBuilder_.mergeFrom(value);
        }
        if (primaryKeyIndexMeta_ != null) {
          bitField0_ |= 0x00000200;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Primary key index meta
       * </pre>
       *
       * <code>optional .doris.segment_v2.PrimaryKeyIndexMetaPB primary_key_index_meta = 10;</code>
       */
      public Builder clearPrimaryKeyIndexMeta() {
        bitField0_ = (bitField0_ & ~0x00000200);
        primaryKeyIndexMeta_ = null;
        if (primaryKeyIndexMetaBuilder_ != null) {
          primaryKeyIndexMetaBuilder_.dispose();
          primaryKeyIndexMetaBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Primary key index meta
       * </pre>
       *
       * <code>optional .doris.segment_v2.PrimaryKeyIndexMetaPB primary_key_index_meta = 10;</code>
       */
      public doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB.Builder getPrimaryKeyIndexMetaBuilder() {
        bitField0_ |= 0x00000200;
        onChanged();
        return getPrimaryKeyIndexMetaFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Primary key index meta
       * </pre>
       *
       * <code>optional .doris.segment_v2.PrimaryKeyIndexMetaPB primary_key_index_meta = 10;</code>
       */
      public doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPBOrBuilder getPrimaryKeyIndexMetaOrBuilder() {
        if (primaryKeyIndexMetaBuilder_ != null) {
          return primaryKeyIndexMetaBuilder_.getMessageOrBuilder();
        } else {
          return primaryKeyIndexMeta_ == null ?
              doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB.getDefaultInstance() : primaryKeyIndexMeta_;
        }
      }
      /**
       * <pre>
       * Primary key index meta
       * </pre>
       *
       * <code>optional .doris.segment_v2.PrimaryKeyIndexMetaPB primary_key_index_meta = 10;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB, doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB.Builder, doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPBOrBuilder> 
          getPrimaryKeyIndexMetaFieldBuilder() {
        if (primaryKeyIndexMetaBuilder_ == null) {
          primaryKeyIndexMetaBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB, doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPB.Builder, doris.segment_v2.SegmentV2.PrimaryKeyIndexMetaPBOrBuilder>(
                  getPrimaryKeyIndexMeta(),
                  getParentForChildren(),
                  isClean());
          primaryKeyIndexMeta_ = null;
        }
        return primaryKeyIndexMetaBuilder_;
      }
      @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.segment_v2.SegmentFooterPB)
    }

    // @@protoc_insertion_point(class_scope:doris.segment_v2.SegmentFooterPB)
    private static final doris.segment_v2.SegmentV2.SegmentFooterPB DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new doris.segment_v2.SegmentV2.SegmentFooterPB();
    }

    public static doris.segment_v2.SegmentV2.SegmentFooterPB getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<SegmentFooterPB>
        PARSER = new com.google.protobuf.AbstractParser<SegmentFooterPB>() {
      @java.lang.Override
      public SegmentFooterPB 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<SegmentFooterPB> parser() {
      return PARSER;
    }

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

    @java.lang.Override
    public doris.segment_v2.SegmentV2.SegmentFooterPB getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BTreeMetaPBOrBuilder extends
      // @@protoc_insertion_point(interface_extends:doris.segment_v2.BTreeMetaPB)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * required: pointer to either root index page or sole data page based on is_root_data_page
     * </pre>
     *
     * <code>optional .doris.segment_v2.PagePointerPB root_page = 1;</code>
     * @return Whether the rootPage field is set.
     */
    boolean hasRootPage();
    /**
     * <pre>
     * required: pointer to either root index page or sole data page based on is_root_data_page
     * </pre>
     *
     * <code>optional .doris.segment_v2.PagePointerPB root_page = 1;</code>
     * @return The rootPage.
     */
    doris.segment_v2.SegmentV2.PagePointerPB getRootPage();
    /**
     * <pre>
     * required: pointer to either root index page or sole data page based on is_root_data_page
     * </pre>
     *
     * <code>optional .doris.segment_v2.PagePointerPB root_page = 1;</code>
     */
    doris.segment_v2.SegmentV2.PagePointerPBOrBuilder getRootPageOrBuilder();

    /**
     * <pre>
     * required: true if we only have one data page, in which case root points to that page directly
     * </pre>
     *
     * <code>optional bool is_root_data_page = 2;</code>
     * @return Whether the isRootDataPage field is set.
     */
    boolean hasIsRootDataPage();
    /**
     * <pre>
     * required: true if we only have one data page, in which case root points to that page directly
     * </pre>
     *
     * <code>optional bool is_root_data_page = 2;</code>
     * @return The isRootDataPage.
     */
    boolean getIsRootDataPage();
  }
  /**
   * Protobuf type {@code doris.segment_v2.BTreeMetaPB}
   */
  public static final class BTreeMetaPB extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:doris.segment_v2.BTreeMetaPB)
      BTreeMetaPBOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BTreeMetaPB.newBuilder() to construct.
    private BTreeMetaPB(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private BTreeMetaPB() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_BTreeMetaPB_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_BTreeMetaPB_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              doris.segment_v2.SegmentV2.BTreeMetaPB.class, doris.segment_v2.SegmentV2.BTreeMetaPB.Builder.class);
    }

    private int bitField0_;
    public static final int ROOT_PAGE_FIELD_NUMBER = 1;
    private doris.segment_v2.SegmentV2.PagePointerPB rootPage_;
    /**
     * <pre>
     * required: pointer to either root index page or sole data page based on is_root_data_page
     * </pre>
     *
     * <code>optional .doris.segment_v2.PagePointerPB root_page = 1;</code>
     * @return Whether the rootPage field is set.
     */
    @java.lang.Override
    public boolean hasRootPage() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * required: pointer to either root index page or sole data page based on is_root_data_page
     * </pre>
     *
     * <code>optional .doris.segment_v2.PagePointerPB root_page = 1;</code>
     * @return The rootPage.
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.PagePointerPB getRootPage() {
      return rootPage_ == null ? doris.segment_v2.SegmentV2.PagePointerPB.getDefaultInstance() : rootPage_;
    }
    /**
     * <pre>
     * required: pointer to either root index page or sole data page based on is_root_data_page
     * </pre>
     *
     * <code>optional .doris.segment_v2.PagePointerPB root_page = 1;</code>
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.PagePointerPBOrBuilder getRootPageOrBuilder() {
      return rootPage_ == null ? doris.segment_v2.SegmentV2.PagePointerPB.getDefaultInstance() : rootPage_;
    }

    public static final int IS_ROOT_DATA_PAGE_FIELD_NUMBER = 2;
    private boolean isRootDataPage_ = false;
    /**
     * <pre>
     * required: true if we only have one data page, in which case root points to that page directly
     * </pre>
     *
     * <code>optional bool is_root_data_page = 2;</code>
     * @return Whether the isRootDataPage field is set.
     */
    @java.lang.Override
    public boolean hasIsRootDataPage() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * required: true if we only have one data page, in which case root points to that page directly
     * </pre>
     *
     * <code>optional bool is_root_data_page = 2;</code>
     * @return The isRootDataPage.
     */
    @java.lang.Override
    public boolean getIsRootDataPage() {
      return isRootDataPage_;
    }

    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 (hasRootPage()) {
        if (!getRootPage().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.writeMessage(1, getRootPage());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeBool(2, isRootDataPage_);
      }
      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
          .computeMessageSize(1, getRootPage());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, isRootDataPage_);
      }
      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 doris.segment_v2.SegmentV2.BTreeMetaPB)) {
        return super.equals(obj);
      }
      doris.segment_v2.SegmentV2.BTreeMetaPB other = (doris.segment_v2.SegmentV2.BTreeMetaPB) obj;

      if (hasRootPage() != other.hasRootPage()) return false;
      if (hasRootPage()) {
        if (!getRootPage()
            .equals(other.getRootPage())) return false;
      }
      if (hasIsRootDataPage() != other.hasIsRootDataPage()) return false;
      if (hasIsRootDataPage()) {
        if (getIsRootDataPage()
            != other.getIsRootDataPage()) 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 (hasRootPage()) {
        hash = (37 * hash) + ROOT_PAGE_FIELD_NUMBER;
        hash = (53 * hash) + getRootPage().hashCode();
      }
      if (hasIsRootDataPage()) {
        hash = (37 * hash) + IS_ROOT_DATA_PAGE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getIsRootDataPage());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static doris.segment_v2.SegmentV2.BTreeMetaPB parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.BTreeMetaPB parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.BTreeMetaPB parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.BTreeMetaPB parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.BTreeMetaPB parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.BTreeMetaPB parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.BTreeMetaPB parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.segment_v2.SegmentV2.BTreeMetaPB 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 doris.segment_v2.SegmentV2.BTreeMetaPB parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static doris.segment_v2.SegmentV2.BTreeMetaPB 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 doris.segment_v2.SegmentV2.BTreeMetaPB parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.segment_v2.SegmentV2.BTreeMetaPB 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(doris.segment_v2.SegmentV2.BTreeMetaPB 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.segment_v2.BTreeMetaPB}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:doris.segment_v2.BTreeMetaPB)
        doris.segment_v2.SegmentV2.BTreeMetaPBOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_BTreeMetaPB_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_BTreeMetaPB_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                doris.segment_v2.SegmentV2.BTreeMetaPB.class, doris.segment_v2.SegmentV2.BTreeMetaPB.Builder.class);
      }

      // Construct using doris.segment_v2.SegmentV2.BTreeMetaPB.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getRootPageFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        rootPage_ = null;
        if (rootPageBuilder_ != null) {
          rootPageBuilder_.dispose();
          rootPageBuilder_ = null;
        }
        isRootDataPage_ = false;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_BTreeMetaPB_descriptor;
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.BTreeMetaPB getDefaultInstanceForType() {
        return doris.segment_v2.SegmentV2.BTreeMetaPB.getDefaultInstance();
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.BTreeMetaPB build() {
        doris.segment_v2.SegmentV2.BTreeMetaPB result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.BTreeMetaPB buildPartial() {
        doris.segment_v2.SegmentV2.BTreeMetaPB result = new doris.segment_v2.SegmentV2.BTreeMetaPB(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(doris.segment_v2.SegmentV2.BTreeMetaPB result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.rootPage_ = rootPageBuilder_ == null
              ? rootPage_
              : rootPageBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.isRootDataPage_ = isRootDataPage_;
          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 doris.segment_v2.SegmentV2.BTreeMetaPB) {
          return mergeFrom((doris.segment_v2.SegmentV2.BTreeMetaPB)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(doris.segment_v2.SegmentV2.BTreeMetaPB other) {
        if (other == doris.segment_v2.SegmentV2.BTreeMetaPB.getDefaultInstance()) return this;
        if (other.hasRootPage()) {
          mergeRootPage(other.getRootPage());
        }
        if (other.hasIsRootDataPage()) {
          setIsRootDataPage(other.getIsRootDataPage());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (hasRootPage()) {
          if (!getRootPage().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 10: {
                input.readMessage(
                    getRootPageFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 16: {
                isRootDataPage_ = input.readBool();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              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 doris.segment_v2.SegmentV2.PagePointerPB rootPage_;
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.PagePointerPB, doris.segment_v2.SegmentV2.PagePointerPB.Builder, doris.segment_v2.SegmentV2.PagePointerPBOrBuilder> rootPageBuilder_;
      /**
       * <pre>
       * required: pointer to either root index page or sole data page based on is_root_data_page
       * </pre>
       *
       * <code>optional .doris.segment_v2.PagePointerPB root_page = 1;</code>
       * @return Whether the rootPage field is set.
       */
      public boolean hasRootPage() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * required: pointer to either root index page or sole data page based on is_root_data_page
       * </pre>
       *
       * <code>optional .doris.segment_v2.PagePointerPB root_page = 1;</code>
       * @return The rootPage.
       */
      public doris.segment_v2.SegmentV2.PagePointerPB getRootPage() {
        if (rootPageBuilder_ == null) {
          return rootPage_ == null ? doris.segment_v2.SegmentV2.PagePointerPB.getDefaultInstance() : rootPage_;
        } else {
          return rootPageBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * required: pointer to either root index page or sole data page based on is_root_data_page
       * </pre>
       *
       * <code>optional .doris.segment_v2.PagePointerPB root_page = 1;</code>
       */
      public Builder setRootPage(doris.segment_v2.SegmentV2.PagePointerPB value) {
        if (rootPageBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          rootPage_ = value;
        } else {
          rootPageBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * required: pointer to either root index page or sole data page based on is_root_data_page
       * </pre>
       *
       * <code>optional .doris.segment_v2.PagePointerPB root_page = 1;</code>
       */
      public Builder setRootPage(
          doris.segment_v2.SegmentV2.PagePointerPB.Builder builderForValue) {
        if (rootPageBuilder_ == null) {
          rootPage_ = builderForValue.build();
        } else {
          rootPageBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * required: pointer to either root index page or sole data page based on is_root_data_page
       * </pre>
       *
       * <code>optional .doris.segment_v2.PagePointerPB root_page = 1;</code>
       */
      public Builder mergeRootPage(doris.segment_v2.SegmentV2.PagePointerPB value) {
        if (rootPageBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            rootPage_ != null &&
            rootPage_ != doris.segment_v2.SegmentV2.PagePointerPB.getDefaultInstance()) {
            getRootPageBuilder().mergeFrom(value);
          } else {
            rootPage_ = value;
          }
        } else {
          rootPageBuilder_.mergeFrom(value);
        }
        if (rootPage_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * required: pointer to either root index page or sole data page based on is_root_data_page
       * </pre>
       *
       * <code>optional .doris.segment_v2.PagePointerPB root_page = 1;</code>
       */
      public Builder clearRootPage() {
        bitField0_ = (bitField0_ & ~0x00000001);
        rootPage_ = null;
        if (rootPageBuilder_ != null) {
          rootPageBuilder_.dispose();
          rootPageBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * required: pointer to either root index page or sole data page based on is_root_data_page
       * </pre>
       *
       * <code>optional .doris.segment_v2.PagePointerPB root_page = 1;</code>
       */
      public doris.segment_v2.SegmentV2.PagePointerPB.Builder getRootPageBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getRootPageFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * required: pointer to either root index page or sole data page based on is_root_data_page
       * </pre>
       *
       * <code>optional .doris.segment_v2.PagePointerPB root_page = 1;</code>
       */
      public doris.segment_v2.SegmentV2.PagePointerPBOrBuilder getRootPageOrBuilder() {
        if (rootPageBuilder_ != null) {
          return rootPageBuilder_.getMessageOrBuilder();
        } else {
          return rootPage_ == null ?
              doris.segment_v2.SegmentV2.PagePointerPB.getDefaultInstance() : rootPage_;
        }
      }
      /**
       * <pre>
       * required: pointer to either root index page or sole data page based on is_root_data_page
       * </pre>
       *
       * <code>optional .doris.segment_v2.PagePointerPB root_page = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.PagePointerPB, doris.segment_v2.SegmentV2.PagePointerPB.Builder, doris.segment_v2.SegmentV2.PagePointerPBOrBuilder> 
          getRootPageFieldBuilder() {
        if (rootPageBuilder_ == null) {
          rootPageBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              doris.segment_v2.SegmentV2.PagePointerPB, doris.segment_v2.SegmentV2.PagePointerPB.Builder, doris.segment_v2.SegmentV2.PagePointerPBOrBuilder>(
                  getRootPage(),
                  getParentForChildren(),
                  isClean());
          rootPage_ = null;
        }
        return rootPageBuilder_;
      }

      private boolean isRootDataPage_ ;
      /**
       * <pre>
       * required: true if we only have one data page, in which case root points to that page directly
       * </pre>
       *
       * <code>optional bool is_root_data_page = 2;</code>
       * @return Whether the isRootDataPage field is set.
       */
      @java.lang.Override
      public boolean hasIsRootDataPage() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * required: true if we only have one data page, in which case root points to that page directly
       * </pre>
       *
       * <code>optional bool is_root_data_page = 2;</code>
       * @return The isRootDataPage.
       */
      @java.lang.Override
      public boolean getIsRootDataPage() {
        return isRootDataPage_;
      }
      /**
       * <pre>
       * required: true if we only have one data page, in which case root points to that page directly
       * </pre>
       *
       * <code>optional bool is_root_data_page = 2;</code>
       * @param value The isRootDataPage to set.
       * @return This builder for chaining.
       */
      public Builder setIsRootDataPage(boolean value) {

        isRootDataPage_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * required: true if we only have one data page, in which case root points to that page directly
       * </pre>
       *
       * <code>optional bool is_root_data_page = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearIsRootDataPage() {
        bitField0_ = (bitField0_ & ~0x00000002);
        isRootDataPage_ = false;
        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.segment_v2.BTreeMetaPB)
    }

    // @@protoc_insertion_point(class_scope:doris.segment_v2.BTreeMetaPB)
    private static final doris.segment_v2.SegmentV2.BTreeMetaPB DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new doris.segment_v2.SegmentV2.BTreeMetaPB();
    }

    public static doris.segment_v2.SegmentV2.BTreeMetaPB getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<BTreeMetaPB>
        PARSER = new com.google.protobuf.AbstractParser<BTreeMetaPB>() {
      @java.lang.Override
      public BTreeMetaPB 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<BTreeMetaPB> parser() {
      return PARSER;
    }

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

    @java.lang.Override
    public doris.segment_v2.SegmentV2.BTreeMetaPB getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface IndexedColumnMetaPBOrBuilder extends
      // @@protoc_insertion_point(interface_extends:doris.segment_v2.IndexedColumnMetaPB)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * required: FieldType value
     * </pre>
     *
     * <code>optional int32 data_type = 1;</code>
     * @return Whether the dataType field is set.
     */
    boolean hasDataType();
    /**
     * <pre>
     * required: FieldType value
     * </pre>
     *
     * <code>optional int32 data_type = 1;</code>
     * @return The dataType.
     */
    int getDataType();

    /**
     * <pre>
     * required: encoding for this column
     * </pre>
     *
     * <code>optional .doris.segment_v2.EncodingTypePB encoding = 2;</code>
     * @return Whether the encoding field is set.
     */
    boolean hasEncoding();
    /**
     * <pre>
     * required: encoding for this column
     * </pre>
     *
     * <code>optional .doris.segment_v2.EncodingTypePB encoding = 2;</code>
     * @return The encoding.
     */
    doris.segment_v2.SegmentV2.EncodingTypePB getEncoding();

    /**
     * <pre>
     * required: total number of values in this column
     * </pre>
     *
     * <code>optional int64 num_values = 3;</code>
     * @return Whether the numValues field is set.
     */
    boolean hasNumValues();
    /**
     * <pre>
     * required: total number of values in this column
     * </pre>
     *
     * <code>optional int64 num_values = 3;</code>
     * @return The numValues.
     */
    long getNumValues();

    /**
     * <pre>
     * present iff this column has ordinal index
     * </pre>
     *
     * <code>optional .doris.segment_v2.BTreeMetaPB ordinal_index_meta = 4;</code>
     * @return Whether the ordinalIndexMeta field is set.
     */
    boolean hasOrdinalIndexMeta();
    /**
     * <pre>
     * present iff this column has ordinal index
     * </pre>
     *
     * <code>optional .doris.segment_v2.BTreeMetaPB ordinal_index_meta = 4;</code>
     * @return The ordinalIndexMeta.
     */
    doris.segment_v2.SegmentV2.BTreeMetaPB getOrdinalIndexMeta();
    /**
     * <pre>
     * present iff this column has ordinal index
     * </pre>
     *
     * <code>optional .doris.segment_v2.BTreeMetaPB ordinal_index_meta = 4;</code>
     */
    doris.segment_v2.SegmentV2.BTreeMetaPBOrBuilder getOrdinalIndexMetaOrBuilder();

    /**
     * <pre>
     * present iff this column contains sorted values and has value index
     * </pre>
     *
     * <code>optional .doris.segment_v2.BTreeMetaPB value_index_meta = 5;</code>
     * @return Whether the valueIndexMeta field is set.
     */
    boolean hasValueIndexMeta();
    /**
     * <pre>
     * present iff this column contains sorted values and has value index
     * </pre>
     *
     * <code>optional .doris.segment_v2.BTreeMetaPB value_index_meta = 5;</code>
     * @return The valueIndexMeta.
     */
    doris.segment_v2.SegmentV2.BTreeMetaPB getValueIndexMeta();
    /**
     * <pre>
     * present iff this column contains sorted values and has value index
     * </pre>
     *
     * <code>optional .doris.segment_v2.BTreeMetaPB value_index_meta = 5;</code>
     */
    doris.segment_v2.SegmentV2.BTreeMetaPBOrBuilder getValueIndexMetaOrBuilder();

    /**
     * <pre>
     * compression type for data and index page
     * </pre>
     *
     * <code>optional .doris.segment_v2.CompressionTypePB compression = 6 [default = NO_COMPRESSION];</code>
     * @return Whether the compression field is set.
     */
    boolean hasCompression();
    /**
     * <pre>
     * compression type for data and index page
     * </pre>
     *
     * <code>optional .doris.segment_v2.CompressionTypePB compression = 6 [default = NO_COMPRESSION];</code>
     * @return The compression.
     */
    doris.segment_v2.SegmentV2.CompressionTypePB getCompression();

    /**
     * <pre>
     * index size
     * </pre>
     *
     * <code>optional uint64 size = 7;</code>
     * @return Whether the size field is set.
     */
    boolean hasSize();
    /**
     * <pre>
     * index size
     * </pre>
     *
     * <code>optional uint64 size = 7;</code>
     * @return The size.
     */
    long getSize();
  }
  /**
   * Protobuf type {@code doris.segment_v2.IndexedColumnMetaPB}
   */
  public static final class IndexedColumnMetaPB extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:doris.segment_v2.IndexedColumnMetaPB)
      IndexedColumnMetaPBOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use IndexedColumnMetaPB.newBuilder() to construct.
    private IndexedColumnMetaPB(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private IndexedColumnMetaPB() {
      encoding_ = 0;
      compression_ = 2;
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_IndexedColumnMetaPB_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_IndexedColumnMetaPB_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              doris.segment_v2.SegmentV2.IndexedColumnMetaPB.class, doris.segment_v2.SegmentV2.IndexedColumnMetaPB.Builder.class);
    }

    private int bitField0_;
    public static final int DATA_TYPE_FIELD_NUMBER = 1;
    private int dataType_ = 0;
    /**
     * <pre>
     * required: FieldType value
     * </pre>
     *
     * <code>optional int32 data_type = 1;</code>
     * @return Whether the dataType field is set.
     */
    @java.lang.Override
    public boolean hasDataType() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * required: FieldType value
     * </pre>
     *
     * <code>optional int32 data_type = 1;</code>
     * @return The dataType.
     */
    @java.lang.Override
    public int getDataType() {
      return dataType_;
    }

    public static final int ENCODING_FIELD_NUMBER = 2;
    private int encoding_ = 0;
    /**
     * <pre>
     * required: encoding for this column
     * </pre>
     *
     * <code>optional .doris.segment_v2.EncodingTypePB encoding = 2;</code>
     * @return Whether the encoding field is set.
     */
    @java.lang.Override public boolean hasEncoding() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * required: encoding for this column
     * </pre>
     *
     * <code>optional .doris.segment_v2.EncodingTypePB encoding = 2;</code>
     * @return The encoding.
     */
    @java.lang.Override public doris.segment_v2.SegmentV2.EncodingTypePB getEncoding() {
      doris.segment_v2.SegmentV2.EncodingTypePB result = doris.segment_v2.SegmentV2.EncodingTypePB.forNumber(encoding_);
      return result == null ? doris.segment_v2.SegmentV2.EncodingTypePB.UNKNOWN_ENCODING : result;
    }

    public static final int NUM_VALUES_FIELD_NUMBER = 3;
    private long numValues_ = 0L;
    /**
     * <pre>
     * required: total number of values in this column
     * </pre>
     *
     * <code>optional int64 num_values = 3;</code>
     * @return Whether the numValues field is set.
     */
    @java.lang.Override
    public boolean hasNumValues() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * required: total number of values in this column
     * </pre>
     *
     * <code>optional int64 num_values = 3;</code>
     * @return The numValues.
     */
    @java.lang.Override
    public long getNumValues() {
      return numValues_;
    }

    public static final int ORDINAL_INDEX_META_FIELD_NUMBER = 4;
    private doris.segment_v2.SegmentV2.BTreeMetaPB ordinalIndexMeta_;
    /**
     * <pre>
     * present iff this column has ordinal index
     * </pre>
     *
     * <code>optional .doris.segment_v2.BTreeMetaPB ordinal_index_meta = 4;</code>
     * @return Whether the ordinalIndexMeta field is set.
     */
    @java.lang.Override
    public boolean hasOrdinalIndexMeta() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * present iff this column has ordinal index
     * </pre>
     *
     * <code>optional .doris.segment_v2.BTreeMetaPB ordinal_index_meta = 4;</code>
     * @return The ordinalIndexMeta.
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.BTreeMetaPB getOrdinalIndexMeta() {
      return ordinalIndexMeta_ == null ? doris.segment_v2.SegmentV2.BTreeMetaPB.getDefaultInstance() : ordinalIndexMeta_;
    }
    /**
     * <pre>
     * present iff this column has ordinal index
     * </pre>
     *
     * <code>optional .doris.segment_v2.BTreeMetaPB ordinal_index_meta = 4;</code>
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.BTreeMetaPBOrBuilder getOrdinalIndexMetaOrBuilder() {
      return ordinalIndexMeta_ == null ? doris.segment_v2.SegmentV2.BTreeMetaPB.getDefaultInstance() : ordinalIndexMeta_;
    }

    public static final int VALUE_INDEX_META_FIELD_NUMBER = 5;
    private doris.segment_v2.SegmentV2.BTreeMetaPB valueIndexMeta_;
    /**
     * <pre>
     * present iff this column contains sorted values and has value index
     * </pre>
     *
     * <code>optional .doris.segment_v2.BTreeMetaPB value_index_meta = 5;</code>
     * @return Whether the valueIndexMeta field is set.
     */
    @java.lang.Override
    public boolean hasValueIndexMeta() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <pre>
     * present iff this column contains sorted values and has value index
     * </pre>
     *
     * <code>optional .doris.segment_v2.BTreeMetaPB value_index_meta = 5;</code>
     * @return The valueIndexMeta.
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.BTreeMetaPB getValueIndexMeta() {
      return valueIndexMeta_ == null ? doris.segment_v2.SegmentV2.BTreeMetaPB.getDefaultInstance() : valueIndexMeta_;
    }
    /**
     * <pre>
     * present iff this column contains sorted values and has value index
     * </pre>
     *
     * <code>optional .doris.segment_v2.BTreeMetaPB value_index_meta = 5;</code>
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.BTreeMetaPBOrBuilder getValueIndexMetaOrBuilder() {
      return valueIndexMeta_ == null ? doris.segment_v2.SegmentV2.BTreeMetaPB.getDefaultInstance() : valueIndexMeta_;
    }

    public static final int COMPRESSION_FIELD_NUMBER = 6;
    private int compression_ = 2;
    /**
     * <pre>
     * compression type for data and index page
     * </pre>
     *
     * <code>optional .doris.segment_v2.CompressionTypePB compression = 6 [default = NO_COMPRESSION];</code>
     * @return Whether the compression field is set.
     */
    @java.lang.Override public boolean hasCompression() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     * <pre>
     * compression type for data and index page
     * </pre>
     *
     * <code>optional .doris.segment_v2.CompressionTypePB compression = 6 [default = NO_COMPRESSION];</code>
     * @return The compression.
     */
    @java.lang.Override public doris.segment_v2.SegmentV2.CompressionTypePB getCompression() {
      doris.segment_v2.SegmentV2.CompressionTypePB result = doris.segment_v2.SegmentV2.CompressionTypePB.forNumber(compression_);
      return result == null ? doris.segment_v2.SegmentV2.CompressionTypePB.NO_COMPRESSION : result;
    }

    public static final int SIZE_FIELD_NUMBER = 7;
    private long size_ = 0L;
    /**
     * <pre>
     * index size
     * </pre>
     *
     * <code>optional uint64 size = 7;</code>
     * @return Whether the size field is set.
     */
    @java.lang.Override
    public boolean hasSize() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     * <pre>
     * index size
     * </pre>
     *
     * <code>optional uint64 size = 7;</code>
     * @return The size.
     */
    @java.lang.Override
    public long getSize() {
      return size_;
    }

    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 (hasOrdinalIndexMeta()) {
        if (!getOrdinalIndexMeta().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasValueIndexMeta()) {
        if (!getValueIndexMeta().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, dataType_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeEnum(2, encoding_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeInt64(3, numValues_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeMessage(4, getOrdinalIndexMeta());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeMessage(5, getValueIndexMeta());
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        output.writeEnum(6, compression_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        output.writeUInt64(7, size_);
      }
      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, dataType_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(2, encoding_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, numValues_);
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getOrdinalIndexMeta());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getValueIndexMeta());
      }
      if (((bitField0_ & 0x00000020) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(6, compression_);
      }
      if (((bitField0_ & 0x00000040) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(7, 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 doris.segment_v2.SegmentV2.IndexedColumnMetaPB)) {
        return super.equals(obj);
      }
      doris.segment_v2.SegmentV2.IndexedColumnMetaPB other = (doris.segment_v2.SegmentV2.IndexedColumnMetaPB) obj;

      if (hasDataType() != other.hasDataType()) return false;
      if (hasDataType()) {
        if (getDataType()
            != other.getDataType()) return false;
      }
      if (hasEncoding() != other.hasEncoding()) return false;
      if (hasEncoding()) {
        if (encoding_ != other.encoding_) return false;
      }
      if (hasNumValues() != other.hasNumValues()) return false;
      if (hasNumValues()) {
        if (getNumValues()
            != other.getNumValues()) return false;
      }
      if (hasOrdinalIndexMeta() != other.hasOrdinalIndexMeta()) return false;
      if (hasOrdinalIndexMeta()) {
        if (!getOrdinalIndexMeta()
            .equals(other.getOrdinalIndexMeta())) return false;
      }
      if (hasValueIndexMeta() != other.hasValueIndexMeta()) return false;
      if (hasValueIndexMeta()) {
        if (!getValueIndexMeta()
            .equals(other.getValueIndexMeta())) return false;
      }
      if (hasCompression() != other.hasCompression()) return false;
      if (hasCompression()) {
        if (compression_ != other.compression_) return false;
      }
      if (hasSize() != other.hasSize()) return false;
      if (hasSize()) {
        if (getSize()
            != other.getSize()) 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 (hasDataType()) {
        hash = (37 * hash) + DATA_TYPE_FIELD_NUMBER;
        hash = (53 * hash) + getDataType();
      }
      if (hasEncoding()) {
        hash = (37 * hash) + ENCODING_FIELD_NUMBER;
        hash = (53 * hash) + encoding_;
      }
      if (hasNumValues()) {
        hash = (37 * hash) + NUM_VALUES_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getNumValues());
      }
      if (hasOrdinalIndexMeta()) {
        hash = (37 * hash) + ORDINAL_INDEX_META_FIELD_NUMBER;
        hash = (53 * hash) + getOrdinalIndexMeta().hashCode();
      }
      if (hasValueIndexMeta()) {
        hash = (37 * hash) + VALUE_INDEX_META_FIELD_NUMBER;
        hash = (53 * hash) + getValueIndexMeta().hashCode();
      }
      if (hasCompression()) {
        hash = (37 * hash) + COMPRESSION_FIELD_NUMBER;
        hash = (53 * hash) + compression_;
      }
      if (hasSize()) {
        hash = (37 * hash) + SIZE_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getSize());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static doris.segment_v2.SegmentV2.IndexedColumnMetaPB parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.IndexedColumnMetaPB parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.IndexedColumnMetaPB parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.IndexedColumnMetaPB parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.IndexedColumnMetaPB parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.IndexedColumnMetaPB parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.IndexedColumnMetaPB parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.segment_v2.SegmentV2.IndexedColumnMetaPB 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 doris.segment_v2.SegmentV2.IndexedColumnMetaPB parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static doris.segment_v2.SegmentV2.IndexedColumnMetaPB 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 doris.segment_v2.SegmentV2.IndexedColumnMetaPB parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.segment_v2.SegmentV2.IndexedColumnMetaPB 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(doris.segment_v2.SegmentV2.IndexedColumnMetaPB 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.segment_v2.IndexedColumnMetaPB}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:doris.segment_v2.IndexedColumnMetaPB)
        doris.segment_v2.SegmentV2.IndexedColumnMetaPBOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_IndexedColumnMetaPB_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_IndexedColumnMetaPB_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                doris.segment_v2.SegmentV2.IndexedColumnMetaPB.class, doris.segment_v2.SegmentV2.IndexedColumnMetaPB.Builder.class);
      }

      // Construct using doris.segment_v2.SegmentV2.IndexedColumnMetaPB.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getOrdinalIndexMetaFieldBuilder();
          getValueIndexMetaFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        dataType_ = 0;
        encoding_ = 0;
        numValues_ = 0L;
        ordinalIndexMeta_ = null;
        if (ordinalIndexMetaBuilder_ != null) {
          ordinalIndexMetaBuilder_.dispose();
          ordinalIndexMetaBuilder_ = null;
        }
        valueIndexMeta_ = null;
        if (valueIndexMetaBuilder_ != null) {
          valueIndexMetaBuilder_.dispose();
          valueIndexMetaBuilder_ = null;
        }
        compression_ = 2;
        size_ = 0L;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_IndexedColumnMetaPB_descriptor;
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.IndexedColumnMetaPB getDefaultInstanceForType() {
        return doris.segment_v2.SegmentV2.IndexedColumnMetaPB.getDefaultInstance();
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.IndexedColumnMetaPB build() {
        doris.segment_v2.SegmentV2.IndexedColumnMetaPB result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.IndexedColumnMetaPB buildPartial() {
        doris.segment_v2.SegmentV2.IndexedColumnMetaPB result = new doris.segment_v2.SegmentV2.IndexedColumnMetaPB(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(doris.segment_v2.SegmentV2.IndexedColumnMetaPB result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.dataType_ = dataType_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.encoding_ = encoding_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.numValues_ = numValues_;
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.ordinalIndexMeta_ = ordinalIndexMetaBuilder_ == null
              ? ordinalIndexMeta_
              : ordinalIndexMetaBuilder_.build();
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.valueIndexMeta_ = valueIndexMetaBuilder_ == null
              ? valueIndexMeta_
              : valueIndexMetaBuilder_.build();
          to_bitField0_ |= 0x00000010;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.compression_ = compression_;
          to_bitField0_ |= 0x00000020;
        }
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.size_ = size_;
          to_bitField0_ |= 0x00000040;
        }
        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 doris.segment_v2.SegmentV2.IndexedColumnMetaPB) {
          return mergeFrom((doris.segment_v2.SegmentV2.IndexedColumnMetaPB)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(doris.segment_v2.SegmentV2.IndexedColumnMetaPB other) {
        if (other == doris.segment_v2.SegmentV2.IndexedColumnMetaPB.getDefaultInstance()) return this;
        if (other.hasDataType()) {
          setDataType(other.getDataType());
        }
        if (other.hasEncoding()) {
          setEncoding(other.getEncoding());
        }
        if (other.hasNumValues()) {
          setNumValues(other.getNumValues());
        }
        if (other.hasOrdinalIndexMeta()) {
          mergeOrdinalIndexMeta(other.getOrdinalIndexMeta());
        }
        if (other.hasValueIndexMeta()) {
          mergeValueIndexMeta(other.getValueIndexMeta());
        }
        if (other.hasCompression()) {
          setCompression(other.getCompression());
        }
        if (other.hasSize()) {
          setSize(other.getSize());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (hasOrdinalIndexMeta()) {
          if (!getOrdinalIndexMeta().isInitialized()) {
            return false;
          }
        }
        if (hasValueIndexMeta()) {
          if (!getValueIndexMeta().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: {
                dataType_ = input.readInt32();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 16: {
                int tmpRaw = input.readEnum();
                doris.segment_v2.SegmentV2.EncodingTypePB tmpValue =
                    doris.segment_v2.SegmentV2.EncodingTypePB.forNumber(tmpRaw);
                if (tmpValue == null) {
                  mergeUnknownVarintField(2, tmpRaw);
                } else {
                  encoding_ = tmpRaw;
                  bitField0_ |= 0x00000002;
                }
                break;
              } // case 16
              case 24: {
                numValues_ = input.readInt64();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 34: {
                input.readMessage(
                    getOrdinalIndexMetaFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                input.readMessage(
                    getValueIndexMetaFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 48: {
                int tmpRaw = input.readEnum();
                doris.segment_v2.SegmentV2.CompressionTypePB tmpValue =
                    doris.segment_v2.SegmentV2.CompressionTypePB.forNumber(tmpRaw);
                if (tmpValue == null) {
                  mergeUnknownVarintField(6, tmpRaw);
                } else {
                  compression_ = tmpRaw;
                  bitField0_ |= 0x00000020;
                }
                break;
              } // case 48
              case 56: {
                size_ = input.readUInt64();
                bitField0_ |= 0x00000040;
                break;
              } // case 56
              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 dataType_ ;
      /**
       * <pre>
       * required: FieldType value
       * </pre>
       *
       * <code>optional int32 data_type = 1;</code>
       * @return Whether the dataType field is set.
       */
      @java.lang.Override
      public boolean hasDataType() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * required: FieldType value
       * </pre>
       *
       * <code>optional int32 data_type = 1;</code>
       * @return The dataType.
       */
      @java.lang.Override
      public int getDataType() {
        return dataType_;
      }
      /**
       * <pre>
       * required: FieldType value
       * </pre>
       *
       * <code>optional int32 data_type = 1;</code>
       * @param value The dataType to set.
       * @return This builder for chaining.
       */
      public Builder setDataType(int value) {

        dataType_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * required: FieldType value
       * </pre>
       *
       * <code>optional int32 data_type = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearDataType() {
        bitField0_ = (bitField0_ & ~0x00000001);
        dataType_ = 0;
        onChanged();
        return this;
      }

      private int encoding_ = 0;
      /**
       * <pre>
       * required: encoding for this column
       * </pre>
       *
       * <code>optional .doris.segment_v2.EncodingTypePB encoding = 2;</code>
       * @return Whether the encoding field is set.
       */
      @java.lang.Override public boolean hasEncoding() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * required: encoding for this column
       * </pre>
       *
       * <code>optional .doris.segment_v2.EncodingTypePB encoding = 2;</code>
       * @return The encoding.
       */
      @java.lang.Override
      public doris.segment_v2.SegmentV2.EncodingTypePB getEncoding() {
        doris.segment_v2.SegmentV2.EncodingTypePB result = doris.segment_v2.SegmentV2.EncodingTypePB.forNumber(encoding_);
        return result == null ? doris.segment_v2.SegmentV2.EncodingTypePB.UNKNOWN_ENCODING : result;
      }
      /**
       * <pre>
       * required: encoding for this column
       * </pre>
       *
       * <code>optional .doris.segment_v2.EncodingTypePB encoding = 2;</code>
       * @param value The encoding to set.
       * @return This builder for chaining.
       */
      public Builder setEncoding(doris.segment_v2.SegmentV2.EncodingTypePB value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000002;
        encoding_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * required: encoding for this column
       * </pre>
       *
       * <code>optional .doris.segment_v2.EncodingTypePB encoding = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearEncoding() {
        bitField0_ = (bitField0_ & ~0x00000002);
        encoding_ = 0;
        onChanged();
        return this;
      }

      private long numValues_ ;
      /**
       * <pre>
       * required: total number of values in this column
       * </pre>
       *
       * <code>optional int64 num_values = 3;</code>
       * @return Whether the numValues field is set.
       */
      @java.lang.Override
      public boolean hasNumValues() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * required: total number of values in this column
       * </pre>
       *
       * <code>optional int64 num_values = 3;</code>
       * @return The numValues.
       */
      @java.lang.Override
      public long getNumValues() {
        return numValues_;
      }
      /**
       * <pre>
       * required: total number of values in this column
       * </pre>
       *
       * <code>optional int64 num_values = 3;</code>
       * @param value The numValues to set.
       * @return This builder for chaining.
       */
      public Builder setNumValues(long value) {

        numValues_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * required: total number of values in this column
       * </pre>
       *
       * <code>optional int64 num_values = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearNumValues() {
        bitField0_ = (bitField0_ & ~0x00000004);
        numValues_ = 0L;
        onChanged();
        return this;
      }

      private doris.segment_v2.SegmentV2.BTreeMetaPB ordinalIndexMeta_;
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.BTreeMetaPB, doris.segment_v2.SegmentV2.BTreeMetaPB.Builder, doris.segment_v2.SegmentV2.BTreeMetaPBOrBuilder> ordinalIndexMetaBuilder_;
      /**
       * <pre>
       * present iff this column has ordinal index
       * </pre>
       *
       * <code>optional .doris.segment_v2.BTreeMetaPB ordinal_index_meta = 4;</code>
       * @return Whether the ordinalIndexMeta field is set.
       */
      public boolean hasOrdinalIndexMeta() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * present iff this column has ordinal index
       * </pre>
       *
       * <code>optional .doris.segment_v2.BTreeMetaPB ordinal_index_meta = 4;</code>
       * @return The ordinalIndexMeta.
       */
      public doris.segment_v2.SegmentV2.BTreeMetaPB getOrdinalIndexMeta() {
        if (ordinalIndexMetaBuilder_ == null) {
          return ordinalIndexMeta_ == null ? doris.segment_v2.SegmentV2.BTreeMetaPB.getDefaultInstance() : ordinalIndexMeta_;
        } else {
          return ordinalIndexMetaBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * present iff this column has ordinal index
       * </pre>
       *
       * <code>optional .doris.segment_v2.BTreeMetaPB ordinal_index_meta = 4;</code>
       */
      public Builder setOrdinalIndexMeta(doris.segment_v2.SegmentV2.BTreeMetaPB value) {
        if (ordinalIndexMetaBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ordinalIndexMeta_ = value;
        } else {
          ordinalIndexMetaBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * present iff this column has ordinal index
       * </pre>
       *
       * <code>optional .doris.segment_v2.BTreeMetaPB ordinal_index_meta = 4;</code>
       */
      public Builder setOrdinalIndexMeta(
          doris.segment_v2.SegmentV2.BTreeMetaPB.Builder builderForValue) {
        if (ordinalIndexMetaBuilder_ == null) {
          ordinalIndexMeta_ = builderForValue.build();
        } else {
          ordinalIndexMetaBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * present iff this column has ordinal index
       * </pre>
       *
       * <code>optional .doris.segment_v2.BTreeMetaPB ordinal_index_meta = 4;</code>
       */
      public Builder mergeOrdinalIndexMeta(doris.segment_v2.SegmentV2.BTreeMetaPB value) {
        if (ordinalIndexMetaBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0) &&
            ordinalIndexMeta_ != null &&
            ordinalIndexMeta_ != doris.segment_v2.SegmentV2.BTreeMetaPB.getDefaultInstance()) {
            getOrdinalIndexMetaBuilder().mergeFrom(value);
          } else {
            ordinalIndexMeta_ = value;
          }
        } else {
          ordinalIndexMetaBuilder_.mergeFrom(value);
        }
        if (ordinalIndexMeta_ != null) {
          bitField0_ |= 0x00000008;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * present iff this column has ordinal index
       * </pre>
       *
       * <code>optional .doris.segment_v2.BTreeMetaPB ordinal_index_meta = 4;</code>
       */
      public Builder clearOrdinalIndexMeta() {
        bitField0_ = (bitField0_ & ~0x00000008);
        ordinalIndexMeta_ = null;
        if (ordinalIndexMetaBuilder_ != null) {
          ordinalIndexMetaBuilder_.dispose();
          ordinalIndexMetaBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * present iff this column has ordinal index
       * </pre>
       *
       * <code>optional .doris.segment_v2.BTreeMetaPB ordinal_index_meta = 4;</code>
       */
      public doris.segment_v2.SegmentV2.BTreeMetaPB.Builder getOrdinalIndexMetaBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getOrdinalIndexMetaFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * present iff this column has ordinal index
       * </pre>
       *
       * <code>optional .doris.segment_v2.BTreeMetaPB ordinal_index_meta = 4;</code>
       */
      public doris.segment_v2.SegmentV2.BTreeMetaPBOrBuilder getOrdinalIndexMetaOrBuilder() {
        if (ordinalIndexMetaBuilder_ != null) {
          return ordinalIndexMetaBuilder_.getMessageOrBuilder();
        } else {
          return ordinalIndexMeta_ == null ?
              doris.segment_v2.SegmentV2.BTreeMetaPB.getDefaultInstance() : ordinalIndexMeta_;
        }
      }
      /**
       * <pre>
       * present iff this column has ordinal index
       * </pre>
       *
       * <code>optional .doris.segment_v2.BTreeMetaPB ordinal_index_meta = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.BTreeMetaPB, doris.segment_v2.SegmentV2.BTreeMetaPB.Builder, doris.segment_v2.SegmentV2.BTreeMetaPBOrBuilder> 
          getOrdinalIndexMetaFieldBuilder() {
        if (ordinalIndexMetaBuilder_ == null) {
          ordinalIndexMetaBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              doris.segment_v2.SegmentV2.BTreeMetaPB, doris.segment_v2.SegmentV2.BTreeMetaPB.Builder, doris.segment_v2.SegmentV2.BTreeMetaPBOrBuilder>(
                  getOrdinalIndexMeta(),
                  getParentForChildren(),
                  isClean());
          ordinalIndexMeta_ = null;
        }
        return ordinalIndexMetaBuilder_;
      }

      private doris.segment_v2.SegmentV2.BTreeMetaPB valueIndexMeta_;
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.BTreeMetaPB, doris.segment_v2.SegmentV2.BTreeMetaPB.Builder, doris.segment_v2.SegmentV2.BTreeMetaPBOrBuilder> valueIndexMetaBuilder_;
      /**
       * <pre>
       * present iff this column contains sorted values and has value index
       * </pre>
       *
       * <code>optional .doris.segment_v2.BTreeMetaPB value_index_meta = 5;</code>
       * @return Whether the valueIndexMeta field is set.
       */
      public boolean hasValueIndexMeta() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * present iff this column contains sorted values and has value index
       * </pre>
       *
       * <code>optional .doris.segment_v2.BTreeMetaPB value_index_meta = 5;</code>
       * @return The valueIndexMeta.
       */
      public doris.segment_v2.SegmentV2.BTreeMetaPB getValueIndexMeta() {
        if (valueIndexMetaBuilder_ == null) {
          return valueIndexMeta_ == null ? doris.segment_v2.SegmentV2.BTreeMetaPB.getDefaultInstance() : valueIndexMeta_;
        } else {
          return valueIndexMetaBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * present iff this column contains sorted values and has value index
       * </pre>
       *
       * <code>optional .doris.segment_v2.BTreeMetaPB value_index_meta = 5;</code>
       */
      public Builder setValueIndexMeta(doris.segment_v2.SegmentV2.BTreeMetaPB value) {
        if (valueIndexMetaBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          valueIndexMeta_ = value;
        } else {
          valueIndexMetaBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * present iff this column contains sorted values and has value index
       * </pre>
       *
       * <code>optional .doris.segment_v2.BTreeMetaPB value_index_meta = 5;</code>
       */
      public Builder setValueIndexMeta(
          doris.segment_v2.SegmentV2.BTreeMetaPB.Builder builderForValue) {
        if (valueIndexMetaBuilder_ == null) {
          valueIndexMeta_ = builderForValue.build();
        } else {
          valueIndexMetaBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * present iff this column contains sorted values and has value index
       * </pre>
       *
       * <code>optional .doris.segment_v2.BTreeMetaPB value_index_meta = 5;</code>
       */
      public Builder mergeValueIndexMeta(doris.segment_v2.SegmentV2.BTreeMetaPB value) {
        if (valueIndexMetaBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0) &&
            valueIndexMeta_ != null &&
            valueIndexMeta_ != doris.segment_v2.SegmentV2.BTreeMetaPB.getDefaultInstance()) {
            getValueIndexMetaBuilder().mergeFrom(value);
          } else {
            valueIndexMeta_ = value;
          }
        } else {
          valueIndexMetaBuilder_.mergeFrom(value);
        }
        if (valueIndexMeta_ != null) {
          bitField0_ |= 0x00000010;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * present iff this column contains sorted values and has value index
       * </pre>
       *
       * <code>optional .doris.segment_v2.BTreeMetaPB value_index_meta = 5;</code>
       */
      public Builder clearValueIndexMeta() {
        bitField0_ = (bitField0_ & ~0x00000010);
        valueIndexMeta_ = null;
        if (valueIndexMetaBuilder_ != null) {
          valueIndexMetaBuilder_.dispose();
          valueIndexMetaBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * present iff this column contains sorted values and has value index
       * </pre>
       *
       * <code>optional .doris.segment_v2.BTreeMetaPB value_index_meta = 5;</code>
       */
      public doris.segment_v2.SegmentV2.BTreeMetaPB.Builder getValueIndexMetaBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getValueIndexMetaFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * present iff this column contains sorted values and has value index
       * </pre>
       *
       * <code>optional .doris.segment_v2.BTreeMetaPB value_index_meta = 5;</code>
       */
      public doris.segment_v2.SegmentV2.BTreeMetaPBOrBuilder getValueIndexMetaOrBuilder() {
        if (valueIndexMetaBuilder_ != null) {
          return valueIndexMetaBuilder_.getMessageOrBuilder();
        } else {
          return valueIndexMeta_ == null ?
              doris.segment_v2.SegmentV2.BTreeMetaPB.getDefaultInstance() : valueIndexMeta_;
        }
      }
      /**
       * <pre>
       * present iff this column contains sorted values and has value index
       * </pre>
       *
       * <code>optional .doris.segment_v2.BTreeMetaPB value_index_meta = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.BTreeMetaPB, doris.segment_v2.SegmentV2.BTreeMetaPB.Builder, doris.segment_v2.SegmentV2.BTreeMetaPBOrBuilder> 
          getValueIndexMetaFieldBuilder() {
        if (valueIndexMetaBuilder_ == null) {
          valueIndexMetaBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              doris.segment_v2.SegmentV2.BTreeMetaPB, doris.segment_v2.SegmentV2.BTreeMetaPB.Builder, doris.segment_v2.SegmentV2.BTreeMetaPBOrBuilder>(
                  getValueIndexMeta(),
                  getParentForChildren(),
                  isClean());
          valueIndexMeta_ = null;
        }
        return valueIndexMetaBuilder_;
      }

      private int compression_ = 2;
      /**
       * <pre>
       * compression type for data and index page
       * </pre>
       *
       * <code>optional .doris.segment_v2.CompressionTypePB compression = 6 [default = NO_COMPRESSION];</code>
       * @return Whether the compression field is set.
       */
      @java.lang.Override public boolean hasCompression() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       * compression type for data and index page
       * </pre>
       *
       * <code>optional .doris.segment_v2.CompressionTypePB compression = 6 [default = NO_COMPRESSION];</code>
       * @return The compression.
       */
      @java.lang.Override
      public doris.segment_v2.SegmentV2.CompressionTypePB getCompression() {
        doris.segment_v2.SegmentV2.CompressionTypePB result = doris.segment_v2.SegmentV2.CompressionTypePB.forNumber(compression_);
        return result == null ? doris.segment_v2.SegmentV2.CompressionTypePB.NO_COMPRESSION : result;
      }
      /**
       * <pre>
       * compression type for data and index page
       * </pre>
       *
       * <code>optional .doris.segment_v2.CompressionTypePB compression = 6 [default = NO_COMPRESSION];</code>
       * @param value The compression to set.
       * @return This builder for chaining.
       */
      public Builder setCompression(doris.segment_v2.SegmentV2.CompressionTypePB value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000020;
        compression_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * compression type for data and index page
       * </pre>
       *
       * <code>optional .doris.segment_v2.CompressionTypePB compression = 6 [default = NO_COMPRESSION];</code>
       * @return This builder for chaining.
       */
      public Builder clearCompression() {
        bitField0_ = (bitField0_ & ~0x00000020);
        compression_ = 2;
        onChanged();
        return this;
      }

      private long size_ ;
      /**
       * <pre>
       * index size
       * </pre>
       *
       * <code>optional uint64 size = 7;</code>
       * @return Whether the size field is set.
       */
      @java.lang.Override
      public boolean hasSize() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <pre>
       * index size
       * </pre>
       *
       * <code>optional uint64 size = 7;</code>
       * @return The size.
       */
      @java.lang.Override
      public long getSize() {
        return size_;
      }
      /**
       * <pre>
       * index size
       * </pre>
       *
       * <code>optional uint64 size = 7;</code>
       * @param value The size to set.
       * @return This builder for chaining.
       */
      public Builder setSize(long value) {

        size_ = value;
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * index size
       * </pre>
       *
       * <code>optional uint64 size = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearSize() {
        bitField0_ = (bitField0_ & ~0x00000040);
        size_ = 0L;
        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.segment_v2.IndexedColumnMetaPB)
    }

    // @@protoc_insertion_point(class_scope:doris.segment_v2.IndexedColumnMetaPB)
    private static final doris.segment_v2.SegmentV2.IndexedColumnMetaPB DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new doris.segment_v2.SegmentV2.IndexedColumnMetaPB();
    }

    public static doris.segment_v2.SegmentV2.IndexedColumnMetaPB getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<IndexedColumnMetaPB>
        PARSER = new com.google.protobuf.AbstractParser<IndexedColumnMetaPB>() {
      @java.lang.Override
      public IndexedColumnMetaPB 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<IndexedColumnMetaPB> parser() {
      return PARSER;
    }

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

    @java.lang.Override
    public doris.segment_v2.SegmentV2.IndexedColumnMetaPB getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ColumnIndexMetaPBOrBuilder extends
      // @@protoc_insertion_point(interface_extends:doris.segment_v2.ColumnIndexMetaPB)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>optional .doris.segment_v2.ColumnIndexTypePB type = 1;</code>
     * @return Whether the type field is set.
     */
    boolean hasType();
    /**
     * <code>optional .doris.segment_v2.ColumnIndexTypePB type = 1;</code>
     * @return The type.
     */
    doris.segment_v2.SegmentV2.ColumnIndexTypePB getType();

    /**
     * <code>optional .doris.segment_v2.OrdinalIndexPB ordinal_index = 7;</code>
     * @return Whether the ordinalIndex field is set.
     */
    boolean hasOrdinalIndex();
    /**
     * <code>optional .doris.segment_v2.OrdinalIndexPB ordinal_index = 7;</code>
     * @return The ordinalIndex.
     */
    doris.segment_v2.SegmentV2.OrdinalIndexPB getOrdinalIndex();
    /**
     * <code>optional .doris.segment_v2.OrdinalIndexPB ordinal_index = 7;</code>
     */
    doris.segment_v2.SegmentV2.OrdinalIndexPBOrBuilder getOrdinalIndexOrBuilder();

    /**
     * <code>optional .doris.segment_v2.ZoneMapIndexPB zone_map_index = 8;</code>
     * @return Whether the zoneMapIndex field is set.
     */
    boolean hasZoneMapIndex();
    /**
     * <code>optional .doris.segment_v2.ZoneMapIndexPB zone_map_index = 8;</code>
     * @return The zoneMapIndex.
     */
    doris.segment_v2.SegmentV2.ZoneMapIndexPB getZoneMapIndex();
    /**
     * <code>optional .doris.segment_v2.ZoneMapIndexPB zone_map_index = 8;</code>
     */
    doris.segment_v2.SegmentV2.ZoneMapIndexPBOrBuilder getZoneMapIndexOrBuilder();

    /**
     * <code>optional .doris.segment_v2.BitmapIndexPB bitmap_index = 9;</code>
     * @return Whether the bitmapIndex field is set.
     */
    boolean hasBitmapIndex();
    /**
     * <code>optional .doris.segment_v2.BitmapIndexPB bitmap_index = 9;</code>
     * @return The bitmapIndex.
     */
    doris.segment_v2.SegmentV2.BitmapIndexPB getBitmapIndex();
    /**
     * <code>optional .doris.segment_v2.BitmapIndexPB bitmap_index = 9;</code>
     */
    doris.segment_v2.SegmentV2.BitmapIndexPBOrBuilder getBitmapIndexOrBuilder();

    /**
     * <code>optional .doris.segment_v2.BloomFilterIndexPB bloom_filter_index = 10;</code>
     * @return Whether the bloomFilterIndex field is set.
     */
    boolean hasBloomFilterIndex();
    /**
     * <code>optional .doris.segment_v2.BloomFilterIndexPB bloom_filter_index = 10;</code>
     * @return The bloomFilterIndex.
     */
    doris.segment_v2.SegmentV2.BloomFilterIndexPB getBloomFilterIndex();
    /**
     * <code>optional .doris.segment_v2.BloomFilterIndexPB bloom_filter_index = 10;</code>
     */
    doris.segment_v2.SegmentV2.BloomFilterIndexPBOrBuilder getBloomFilterIndexOrBuilder();
  }
  /**
   * Protobuf type {@code doris.segment_v2.ColumnIndexMetaPB}
   */
  public static final class ColumnIndexMetaPB extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:doris.segment_v2.ColumnIndexMetaPB)
      ColumnIndexMetaPBOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ColumnIndexMetaPB.newBuilder() to construct.
    private ColumnIndexMetaPB(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ColumnIndexMetaPB() {
      type_ = 0;
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_ColumnIndexMetaPB_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_ColumnIndexMetaPB_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              doris.segment_v2.SegmentV2.ColumnIndexMetaPB.class, doris.segment_v2.SegmentV2.ColumnIndexMetaPB.Builder.class);
    }

    private int bitField0_;
    public static final int TYPE_FIELD_NUMBER = 1;
    private int type_ = 0;
    /**
     * <code>optional .doris.segment_v2.ColumnIndexTypePB type = 1;</code>
     * @return Whether the type field is set.
     */
    @java.lang.Override public boolean hasType() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>optional .doris.segment_v2.ColumnIndexTypePB type = 1;</code>
     * @return The type.
     */
    @java.lang.Override public doris.segment_v2.SegmentV2.ColumnIndexTypePB getType() {
      doris.segment_v2.SegmentV2.ColumnIndexTypePB result = doris.segment_v2.SegmentV2.ColumnIndexTypePB.forNumber(type_);
      return result == null ? doris.segment_v2.SegmentV2.ColumnIndexTypePB.UNKNOWN_INDEX_TYPE : result;
    }

    public static final int ORDINAL_INDEX_FIELD_NUMBER = 7;
    private doris.segment_v2.SegmentV2.OrdinalIndexPB ordinalIndex_;
    /**
     * <code>optional .doris.segment_v2.OrdinalIndexPB ordinal_index = 7;</code>
     * @return Whether the ordinalIndex field is set.
     */
    @java.lang.Override
    public boolean hasOrdinalIndex() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>optional .doris.segment_v2.OrdinalIndexPB ordinal_index = 7;</code>
     * @return The ordinalIndex.
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.OrdinalIndexPB getOrdinalIndex() {
      return ordinalIndex_ == null ? doris.segment_v2.SegmentV2.OrdinalIndexPB.getDefaultInstance() : ordinalIndex_;
    }
    /**
     * <code>optional .doris.segment_v2.OrdinalIndexPB ordinal_index = 7;</code>
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.OrdinalIndexPBOrBuilder getOrdinalIndexOrBuilder() {
      return ordinalIndex_ == null ? doris.segment_v2.SegmentV2.OrdinalIndexPB.getDefaultInstance() : ordinalIndex_;
    }

    public static final int ZONE_MAP_INDEX_FIELD_NUMBER = 8;
    private doris.segment_v2.SegmentV2.ZoneMapIndexPB zoneMapIndex_;
    /**
     * <code>optional .doris.segment_v2.ZoneMapIndexPB zone_map_index = 8;</code>
     * @return Whether the zoneMapIndex field is set.
     */
    @java.lang.Override
    public boolean hasZoneMapIndex() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <code>optional .doris.segment_v2.ZoneMapIndexPB zone_map_index = 8;</code>
     * @return The zoneMapIndex.
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.ZoneMapIndexPB getZoneMapIndex() {
      return zoneMapIndex_ == null ? doris.segment_v2.SegmentV2.ZoneMapIndexPB.getDefaultInstance() : zoneMapIndex_;
    }
    /**
     * <code>optional .doris.segment_v2.ZoneMapIndexPB zone_map_index = 8;</code>
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.ZoneMapIndexPBOrBuilder getZoneMapIndexOrBuilder() {
      return zoneMapIndex_ == null ? doris.segment_v2.SegmentV2.ZoneMapIndexPB.getDefaultInstance() : zoneMapIndex_;
    }

    public static final int BITMAP_INDEX_FIELD_NUMBER = 9;
    private doris.segment_v2.SegmentV2.BitmapIndexPB bitmapIndex_;
    /**
     * <code>optional .doris.segment_v2.BitmapIndexPB bitmap_index = 9;</code>
     * @return Whether the bitmapIndex field is set.
     */
    @java.lang.Override
    public boolean hasBitmapIndex() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <code>optional .doris.segment_v2.BitmapIndexPB bitmap_index = 9;</code>
     * @return The bitmapIndex.
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.BitmapIndexPB getBitmapIndex() {
      return bitmapIndex_ == null ? doris.segment_v2.SegmentV2.BitmapIndexPB.getDefaultInstance() : bitmapIndex_;
    }
    /**
     * <code>optional .doris.segment_v2.BitmapIndexPB bitmap_index = 9;</code>
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.BitmapIndexPBOrBuilder getBitmapIndexOrBuilder() {
      return bitmapIndex_ == null ? doris.segment_v2.SegmentV2.BitmapIndexPB.getDefaultInstance() : bitmapIndex_;
    }

    public static final int BLOOM_FILTER_INDEX_FIELD_NUMBER = 10;
    private doris.segment_v2.SegmentV2.BloomFilterIndexPB bloomFilterIndex_;
    /**
     * <code>optional .doris.segment_v2.BloomFilterIndexPB bloom_filter_index = 10;</code>
     * @return Whether the bloomFilterIndex field is set.
     */
    @java.lang.Override
    public boolean hasBloomFilterIndex() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     * <code>optional .doris.segment_v2.BloomFilterIndexPB bloom_filter_index = 10;</code>
     * @return The bloomFilterIndex.
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.BloomFilterIndexPB getBloomFilterIndex() {
      return bloomFilterIndex_ == null ? doris.segment_v2.SegmentV2.BloomFilterIndexPB.getDefaultInstance() : bloomFilterIndex_;
    }
    /**
     * <code>optional .doris.segment_v2.BloomFilterIndexPB bloom_filter_index = 10;</code>
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.BloomFilterIndexPBOrBuilder getBloomFilterIndexOrBuilder() {
      return bloomFilterIndex_ == null ? doris.segment_v2.SegmentV2.BloomFilterIndexPB.getDefaultInstance() : bloomFilterIndex_;
    }

    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 (hasOrdinalIndex()) {
        if (!getOrdinalIndex().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasZoneMapIndex()) {
        if (!getZoneMapIndex().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasBitmapIndex()) {
        if (!getBitmapIndex().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasBloomFilterIndex()) {
        if (!getBloomFilterIndex().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.writeEnum(1, type_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(7, getOrdinalIndex());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(8, getZoneMapIndex());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeMessage(9, getBitmapIndex());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        output.writeMessage(10, getBloomFilterIndex());
      }
      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(7, getOrdinalIndex());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, getZoneMapIndex());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, getBitmapIndex());
      }
      if (((bitField0_ & 0x00000010) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, getBloomFilterIndex());
      }
      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 doris.segment_v2.SegmentV2.ColumnIndexMetaPB)) {
        return super.equals(obj);
      }
      doris.segment_v2.SegmentV2.ColumnIndexMetaPB other = (doris.segment_v2.SegmentV2.ColumnIndexMetaPB) obj;

      if (hasType() != other.hasType()) return false;
      if (hasType()) {
        if (type_ != other.type_) return false;
      }
      if (hasOrdinalIndex() != other.hasOrdinalIndex()) return false;
      if (hasOrdinalIndex()) {
        if (!getOrdinalIndex()
            .equals(other.getOrdinalIndex())) return false;
      }
      if (hasZoneMapIndex() != other.hasZoneMapIndex()) return false;
      if (hasZoneMapIndex()) {
        if (!getZoneMapIndex()
            .equals(other.getZoneMapIndex())) return false;
      }
      if (hasBitmapIndex() != other.hasBitmapIndex()) return false;
      if (hasBitmapIndex()) {
        if (!getBitmapIndex()
            .equals(other.getBitmapIndex())) return false;
      }
      if (hasBloomFilterIndex() != other.hasBloomFilterIndex()) return false;
      if (hasBloomFilterIndex()) {
        if (!getBloomFilterIndex()
            .equals(other.getBloomFilterIndex())) 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 (hasOrdinalIndex()) {
        hash = (37 * hash) + ORDINAL_INDEX_FIELD_NUMBER;
        hash = (53 * hash) + getOrdinalIndex().hashCode();
      }
      if (hasZoneMapIndex()) {
        hash = (37 * hash) + ZONE_MAP_INDEX_FIELD_NUMBER;
        hash = (53 * hash) + getZoneMapIndex().hashCode();
      }
      if (hasBitmapIndex()) {
        hash = (37 * hash) + BITMAP_INDEX_FIELD_NUMBER;
        hash = (53 * hash) + getBitmapIndex().hashCode();
      }
      if (hasBloomFilterIndex()) {
        hash = (37 * hash) + BLOOM_FILTER_INDEX_FIELD_NUMBER;
        hash = (53 * hash) + getBloomFilterIndex().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static doris.segment_v2.SegmentV2.ColumnIndexMetaPB parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.ColumnIndexMetaPB parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.ColumnIndexMetaPB parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.ColumnIndexMetaPB parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.ColumnIndexMetaPB parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.ColumnIndexMetaPB parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.ColumnIndexMetaPB parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.segment_v2.SegmentV2.ColumnIndexMetaPB 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 doris.segment_v2.SegmentV2.ColumnIndexMetaPB parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static doris.segment_v2.SegmentV2.ColumnIndexMetaPB 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 doris.segment_v2.SegmentV2.ColumnIndexMetaPB parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.segment_v2.SegmentV2.ColumnIndexMetaPB 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(doris.segment_v2.SegmentV2.ColumnIndexMetaPB 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.segment_v2.ColumnIndexMetaPB}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:doris.segment_v2.ColumnIndexMetaPB)
        doris.segment_v2.SegmentV2.ColumnIndexMetaPBOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_ColumnIndexMetaPB_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_ColumnIndexMetaPB_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                doris.segment_v2.SegmentV2.ColumnIndexMetaPB.class, doris.segment_v2.SegmentV2.ColumnIndexMetaPB.Builder.class);
      }

      // Construct using doris.segment_v2.SegmentV2.ColumnIndexMetaPB.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getOrdinalIndexFieldBuilder();
          getZoneMapIndexFieldBuilder();
          getBitmapIndexFieldBuilder();
          getBloomFilterIndexFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        type_ = 0;
        ordinalIndex_ = null;
        if (ordinalIndexBuilder_ != null) {
          ordinalIndexBuilder_.dispose();
          ordinalIndexBuilder_ = null;
        }
        zoneMapIndex_ = null;
        if (zoneMapIndexBuilder_ != null) {
          zoneMapIndexBuilder_.dispose();
          zoneMapIndexBuilder_ = null;
        }
        bitmapIndex_ = null;
        if (bitmapIndexBuilder_ != null) {
          bitmapIndexBuilder_.dispose();
          bitmapIndexBuilder_ = null;
        }
        bloomFilterIndex_ = null;
        if (bloomFilterIndexBuilder_ != null) {
          bloomFilterIndexBuilder_.dispose();
          bloomFilterIndexBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_ColumnIndexMetaPB_descriptor;
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.ColumnIndexMetaPB getDefaultInstanceForType() {
        return doris.segment_v2.SegmentV2.ColumnIndexMetaPB.getDefaultInstance();
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.ColumnIndexMetaPB build() {
        doris.segment_v2.SegmentV2.ColumnIndexMetaPB result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.ColumnIndexMetaPB buildPartial() {
        doris.segment_v2.SegmentV2.ColumnIndexMetaPB result = new doris.segment_v2.SegmentV2.ColumnIndexMetaPB(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(doris.segment_v2.SegmentV2.ColumnIndexMetaPB 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.ordinalIndex_ = ordinalIndexBuilder_ == null
              ? ordinalIndex_
              : ordinalIndexBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.zoneMapIndex_ = zoneMapIndexBuilder_ == null
              ? zoneMapIndex_
              : zoneMapIndexBuilder_.build();
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.bitmapIndex_ = bitmapIndexBuilder_ == null
              ? bitmapIndex_
              : bitmapIndexBuilder_.build();
          to_bitField0_ |= 0x00000008;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.bloomFilterIndex_ = bloomFilterIndexBuilder_ == null
              ? bloomFilterIndex_
              : bloomFilterIndexBuilder_.build();
          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 doris.segment_v2.SegmentV2.ColumnIndexMetaPB) {
          return mergeFrom((doris.segment_v2.SegmentV2.ColumnIndexMetaPB)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(doris.segment_v2.SegmentV2.ColumnIndexMetaPB other) {
        if (other == doris.segment_v2.SegmentV2.ColumnIndexMetaPB.getDefaultInstance()) return this;
        if (other.hasType()) {
          setType(other.getType());
        }
        if (other.hasOrdinalIndex()) {
          mergeOrdinalIndex(other.getOrdinalIndex());
        }
        if (other.hasZoneMapIndex()) {
          mergeZoneMapIndex(other.getZoneMapIndex());
        }
        if (other.hasBitmapIndex()) {
          mergeBitmapIndex(other.getBitmapIndex());
        }
        if (other.hasBloomFilterIndex()) {
          mergeBloomFilterIndex(other.getBloomFilterIndex());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (hasOrdinalIndex()) {
          if (!getOrdinalIndex().isInitialized()) {
            return false;
          }
        }
        if (hasZoneMapIndex()) {
          if (!getZoneMapIndex().isInitialized()) {
            return false;
          }
        }
        if (hasBitmapIndex()) {
          if (!getBitmapIndex().isInitialized()) {
            return false;
          }
        }
        if (hasBloomFilterIndex()) {
          if (!getBloomFilterIndex().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: {
                int tmpRaw = input.readEnum();
                doris.segment_v2.SegmentV2.ColumnIndexTypePB tmpValue =
                    doris.segment_v2.SegmentV2.ColumnIndexTypePB.forNumber(tmpRaw);
                if (tmpValue == null) {
                  mergeUnknownVarintField(1, tmpRaw);
                } else {
                  type_ = tmpRaw;
                  bitField0_ |= 0x00000001;
                }
                break;
              } // case 8
              case 58: {
                input.readMessage(
                    getOrdinalIndexFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000002;
                break;
              } // case 58
              case 66: {
                input.readMessage(
                    getZoneMapIndexFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 66
              case 74: {
                input.readMessage(
                    getBitmapIndexFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000008;
                break;
              } // case 74
              case 82: {
                input.readMessage(
                    getBloomFilterIndexFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000010;
                break;
              } // case 82
              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_ = 0;
      /**
       * <code>optional .doris.segment_v2.ColumnIndexTypePB type = 1;</code>
       * @return Whether the type field is set.
       */
      @java.lang.Override public boolean hasType() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional .doris.segment_v2.ColumnIndexTypePB type = 1;</code>
       * @return The type.
       */
      @java.lang.Override
      public doris.segment_v2.SegmentV2.ColumnIndexTypePB getType() {
        doris.segment_v2.SegmentV2.ColumnIndexTypePB result = doris.segment_v2.SegmentV2.ColumnIndexTypePB.forNumber(type_);
        return result == null ? doris.segment_v2.SegmentV2.ColumnIndexTypePB.UNKNOWN_INDEX_TYPE : result;
      }
      /**
       * <code>optional .doris.segment_v2.ColumnIndexTypePB type = 1;</code>
       * @param value The type to set.
       * @return This builder for chaining.
       */
      public Builder setType(doris.segment_v2.SegmentV2.ColumnIndexTypePB value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        type_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>optional .doris.segment_v2.ColumnIndexTypePB type = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearType() {
        bitField0_ = (bitField0_ & ~0x00000001);
        type_ = 0;
        onChanged();
        return this;
      }

      private doris.segment_v2.SegmentV2.OrdinalIndexPB ordinalIndex_;
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.OrdinalIndexPB, doris.segment_v2.SegmentV2.OrdinalIndexPB.Builder, doris.segment_v2.SegmentV2.OrdinalIndexPBOrBuilder> ordinalIndexBuilder_;
      /**
       * <code>optional .doris.segment_v2.OrdinalIndexPB ordinal_index = 7;</code>
       * @return Whether the ordinalIndex field is set.
       */
      public boolean hasOrdinalIndex() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional .doris.segment_v2.OrdinalIndexPB ordinal_index = 7;</code>
       * @return The ordinalIndex.
       */
      public doris.segment_v2.SegmentV2.OrdinalIndexPB getOrdinalIndex() {
        if (ordinalIndexBuilder_ == null) {
          return ordinalIndex_ == null ? doris.segment_v2.SegmentV2.OrdinalIndexPB.getDefaultInstance() : ordinalIndex_;
        } else {
          return ordinalIndexBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .doris.segment_v2.OrdinalIndexPB ordinal_index = 7;</code>
       */
      public Builder setOrdinalIndex(doris.segment_v2.SegmentV2.OrdinalIndexPB value) {
        if (ordinalIndexBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ordinalIndex_ = value;
        } else {
          ordinalIndexBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>optional .doris.segment_v2.OrdinalIndexPB ordinal_index = 7;</code>
       */
      public Builder setOrdinalIndex(
          doris.segment_v2.SegmentV2.OrdinalIndexPB.Builder builderForValue) {
        if (ordinalIndexBuilder_ == null) {
          ordinalIndex_ = builderForValue.build();
        } else {
          ordinalIndexBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <code>optional .doris.segment_v2.OrdinalIndexPB ordinal_index = 7;</code>
       */
      public Builder mergeOrdinalIndex(doris.segment_v2.SegmentV2.OrdinalIndexPB value) {
        if (ordinalIndexBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            ordinalIndex_ != null &&
            ordinalIndex_ != doris.segment_v2.SegmentV2.OrdinalIndexPB.getDefaultInstance()) {
            getOrdinalIndexBuilder().mergeFrom(value);
          } else {
            ordinalIndex_ = value;
          }
        } else {
          ordinalIndexBuilder_.mergeFrom(value);
        }
        if (ordinalIndex_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <code>optional .doris.segment_v2.OrdinalIndexPB ordinal_index = 7;</code>
       */
      public Builder clearOrdinalIndex() {
        bitField0_ = (bitField0_ & ~0x00000002);
        ordinalIndex_ = null;
        if (ordinalIndexBuilder_ != null) {
          ordinalIndexBuilder_.dispose();
          ordinalIndexBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>optional .doris.segment_v2.OrdinalIndexPB ordinal_index = 7;</code>
       */
      public doris.segment_v2.SegmentV2.OrdinalIndexPB.Builder getOrdinalIndexBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getOrdinalIndexFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .doris.segment_v2.OrdinalIndexPB ordinal_index = 7;</code>
       */
      public doris.segment_v2.SegmentV2.OrdinalIndexPBOrBuilder getOrdinalIndexOrBuilder() {
        if (ordinalIndexBuilder_ != null) {
          return ordinalIndexBuilder_.getMessageOrBuilder();
        } else {
          return ordinalIndex_ == null ?
              doris.segment_v2.SegmentV2.OrdinalIndexPB.getDefaultInstance() : ordinalIndex_;
        }
      }
      /**
       * <code>optional .doris.segment_v2.OrdinalIndexPB ordinal_index = 7;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.OrdinalIndexPB, doris.segment_v2.SegmentV2.OrdinalIndexPB.Builder, doris.segment_v2.SegmentV2.OrdinalIndexPBOrBuilder> 
          getOrdinalIndexFieldBuilder() {
        if (ordinalIndexBuilder_ == null) {
          ordinalIndexBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              doris.segment_v2.SegmentV2.OrdinalIndexPB, doris.segment_v2.SegmentV2.OrdinalIndexPB.Builder, doris.segment_v2.SegmentV2.OrdinalIndexPBOrBuilder>(
                  getOrdinalIndex(),
                  getParentForChildren(),
                  isClean());
          ordinalIndex_ = null;
        }
        return ordinalIndexBuilder_;
      }

      private doris.segment_v2.SegmentV2.ZoneMapIndexPB zoneMapIndex_;
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.ZoneMapIndexPB, doris.segment_v2.SegmentV2.ZoneMapIndexPB.Builder, doris.segment_v2.SegmentV2.ZoneMapIndexPBOrBuilder> zoneMapIndexBuilder_;
      /**
       * <code>optional .doris.segment_v2.ZoneMapIndexPB zone_map_index = 8;</code>
       * @return Whether the zoneMapIndex field is set.
       */
      public boolean hasZoneMapIndex() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <code>optional .doris.segment_v2.ZoneMapIndexPB zone_map_index = 8;</code>
       * @return The zoneMapIndex.
       */
      public doris.segment_v2.SegmentV2.ZoneMapIndexPB getZoneMapIndex() {
        if (zoneMapIndexBuilder_ == null) {
          return zoneMapIndex_ == null ? doris.segment_v2.SegmentV2.ZoneMapIndexPB.getDefaultInstance() : zoneMapIndex_;
        } else {
          return zoneMapIndexBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .doris.segment_v2.ZoneMapIndexPB zone_map_index = 8;</code>
       */
      public Builder setZoneMapIndex(doris.segment_v2.SegmentV2.ZoneMapIndexPB value) {
        if (zoneMapIndexBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          zoneMapIndex_ = value;
        } else {
          zoneMapIndexBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>optional .doris.segment_v2.ZoneMapIndexPB zone_map_index = 8;</code>
       */
      public Builder setZoneMapIndex(
          doris.segment_v2.SegmentV2.ZoneMapIndexPB.Builder builderForValue) {
        if (zoneMapIndexBuilder_ == null) {
          zoneMapIndex_ = builderForValue.build();
        } else {
          zoneMapIndexBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <code>optional .doris.segment_v2.ZoneMapIndexPB zone_map_index = 8;</code>
       */
      public Builder mergeZoneMapIndex(doris.segment_v2.SegmentV2.ZoneMapIndexPB value) {
        if (zoneMapIndexBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            zoneMapIndex_ != null &&
            zoneMapIndex_ != doris.segment_v2.SegmentV2.ZoneMapIndexPB.getDefaultInstance()) {
            getZoneMapIndexBuilder().mergeFrom(value);
          } else {
            zoneMapIndex_ = value;
          }
        } else {
          zoneMapIndexBuilder_.mergeFrom(value);
        }
        if (zoneMapIndex_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <code>optional .doris.segment_v2.ZoneMapIndexPB zone_map_index = 8;</code>
       */
      public Builder clearZoneMapIndex() {
        bitField0_ = (bitField0_ & ~0x00000004);
        zoneMapIndex_ = null;
        if (zoneMapIndexBuilder_ != null) {
          zoneMapIndexBuilder_.dispose();
          zoneMapIndexBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>optional .doris.segment_v2.ZoneMapIndexPB zone_map_index = 8;</code>
       */
      public doris.segment_v2.SegmentV2.ZoneMapIndexPB.Builder getZoneMapIndexBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getZoneMapIndexFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .doris.segment_v2.ZoneMapIndexPB zone_map_index = 8;</code>
       */
      public doris.segment_v2.SegmentV2.ZoneMapIndexPBOrBuilder getZoneMapIndexOrBuilder() {
        if (zoneMapIndexBuilder_ != null) {
          return zoneMapIndexBuilder_.getMessageOrBuilder();
        } else {
          return zoneMapIndex_ == null ?
              doris.segment_v2.SegmentV2.ZoneMapIndexPB.getDefaultInstance() : zoneMapIndex_;
        }
      }
      /**
       * <code>optional .doris.segment_v2.ZoneMapIndexPB zone_map_index = 8;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.ZoneMapIndexPB, doris.segment_v2.SegmentV2.ZoneMapIndexPB.Builder, doris.segment_v2.SegmentV2.ZoneMapIndexPBOrBuilder> 
          getZoneMapIndexFieldBuilder() {
        if (zoneMapIndexBuilder_ == null) {
          zoneMapIndexBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              doris.segment_v2.SegmentV2.ZoneMapIndexPB, doris.segment_v2.SegmentV2.ZoneMapIndexPB.Builder, doris.segment_v2.SegmentV2.ZoneMapIndexPBOrBuilder>(
                  getZoneMapIndex(),
                  getParentForChildren(),
                  isClean());
          zoneMapIndex_ = null;
        }
        return zoneMapIndexBuilder_;
      }

      private doris.segment_v2.SegmentV2.BitmapIndexPB bitmapIndex_;
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.BitmapIndexPB, doris.segment_v2.SegmentV2.BitmapIndexPB.Builder, doris.segment_v2.SegmentV2.BitmapIndexPBOrBuilder> bitmapIndexBuilder_;
      /**
       * <code>optional .doris.segment_v2.BitmapIndexPB bitmap_index = 9;</code>
       * @return Whether the bitmapIndex field is set.
       */
      public boolean hasBitmapIndex() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <code>optional .doris.segment_v2.BitmapIndexPB bitmap_index = 9;</code>
       * @return The bitmapIndex.
       */
      public doris.segment_v2.SegmentV2.BitmapIndexPB getBitmapIndex() {
        if (bitmapIndexBuilder_ == null) {
          return bitmapIndex_ == null ? doris.segment_v2.SegmentV2.BitmapIndexPB.getDefaultInstance() : bitmapIndex_;
        } else {
          return bitmapIndexBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .doris.segment_v2.BitmapIndexPB bitmap_index = 9;</code>
       */
      public Builder setBitmapIndex(doris.segment_v2.SegmentV2.BitmapIndexPB value) {
        if (bitmapIndexBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitmapIndex_ = value;
        } else {
          bitmapIndexBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <code>optional .doris.segment_v2.BitmapIndexPB bitmap_index = 9;</code>
       */
      public Builder setBitmapIndex(
          doris.segment_v2.SegmentV2.BitmapIndexPB.Builder builderForValue) {
        if (bitmapIndexBuilder_ == null) {
          bitmapIndex_ = builderForValue.build();
        } else {
          bitmapIndexBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <code>optional .doris.segment_v2.BitmapIndexPB bitmap_index = 9;</code>
       */
      public Builder mergeBitmapIndex(doris.segment_v2.SegmentV2.BitmapIndexPB value) {
        if (bitmapIndexBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0) &&
            bitmapIndex_ != null &&
            bitmapIndex_ != doris.segment_v2.SegmentV2.BitmapIndexPB.getDefaultInstance()) {
            getBitmapIndexBuilder().mergeFrom(value);
          } else {
            bitmapIndex_ = value;
          }
        } else {
          bitmapIndexBuilder_.mergeFrom(value);
        }
        if (bitmapIndex_ != null) {
          bitField0_ |= 0x00000008;
          onChanged();
        }
        return this;
      }
      /**
       * <code>optional .doris.segment_v2.BitmapIndexPB bitmap_index = 9;</code>
       */
      public Builder clearBitmapIndex() {
        bitField0_ = (bitField0_ & ~0x00000008);
        bitmapIndex_ = null;
        if (bitmapIndexBuilder_ != null) {
          bitmapIndexBuilder_.dispose();
          bitmapIndexBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>optional .doris.segment_v2.BitmapIndexPB bitmap_index = 9;</code>
       */
      public doris.segment_v2.SegmentV2.BitmapIndexPB.Builder getBitmapIndexBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getBitmapIndexFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .doris.segment_v2.BitmapIndexPB bitmap_index = 9;</code>
       */
      public doris.segment_v2.SegmentV2.BitmapIndexPBOrBuilder getBitmapIndexOrBuilder() {
        if (bitmapIndexBuilder_ != null) {
          return bitmapIndexBuilder_.getMessageOrBuilder();
        } else {
          return bitmapIndex_ == null ?
              doris.segment_v2.SegmentV2.BitmapIndexPB.getDefaultInstance() : bitmapIndex_;
        }
      }
      /**
       * <code>optional .doris.segment_v2.BitmapIndexPB bitmap_index = 9;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.BitmapIndexPB, doris.segment_v2.SegmentV2.BitmapIndexPB.Builder, doris.segment_v2.SegmentV2.BitmapIndexPBOrBuilder> 
          getBitmapIndexFieldBuilder() {
        if (bitmapIndexBuilder_ == null) {
          bitmapIndexBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              doris.segment_v2.SegmentV2.BitmapIndexPB, doris.segment_v2.SegmentV2.BitmapIndexPB.Builder, doris.segment_v2.SegmentV2.BitmapIndexPBOrBuilder>(
                  getBitmapIndex(),
                  getParentForChildren(),
                  isClean());
          bitmapIndex_ = null;
        }
        return bitmapIndexBuilder_;
      }

      private doris.segment_v2.SegmentV2.BloomFilterIndexPB bloomFilterIndex_;
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.BloomFilterIndexPB, doris.segment_v2.SegmentV2.BloomFilterIndexPB.Builder, doris.segment_v2.SegmentV2.BloomFilterIndexPBOrBuilder> bloomFilterIndexBuilder_;
      /**
       * <code>optional .doris.segment_v2.BloomFilterIndexPB bloom_filter_index = 10;</code>
       * @return Whether the bloomFilterIndex field is set.
       */
      public boolean hasBloomFilterIndex() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <code>optional .doris.segment_v2.BloomFilterIndexPB bloom_filter_index = 10;</code>
       * @return The bloomFilterIndex.
       */
      public doris.segment_v2.SegmentV2.BloomFilterIndexPB getBloomFilterIndex() {
        if (bloomFilterIndexBuilder_ == null) {
          return bloomFilterIndex_ == null ? doris.segment_v2.SegmentV2.BloomFilterIndexPB.getDefaultInstance() : bloomFilterIndex_;
        } else {
          return bloomFilterIndexBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .doris.segment_v2.BloomFilterIndexPB bloom_filter_index = 10;</code>
       */
      public Builder setBloomFilterIndex(doris.segment_v2.SegmentV2.BloomFilterIndexPB value) {
        if (bloomFilterIndexBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          bloomFilterIndex_ = value;
        } else {
          bloomFilterIndexBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>optional .doris.segment_v2.BloomFilterIndexPB bloom_filter_index = 10;</code>
       */
      public Builder setBloomFilterIndex(
          doris.segment_v2.SegmentV2.BloomFilterIndexPB.Builder builderForValue) {
        if (bloomFilterIndexBuilder_ == null) {
          bloomFilterIndex_ = builderForValue.build();
        } else {
          bloomFilterIndexBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <code>optional .doris.segment_v2.BloomFilterIndexPB bloom_filter_index = 10;</code>
       */
      public Builder mergeBloomFilterIndex(doris.segment_v2.SegmentV2.BloomFilterIndexPB value) {
        if (bloomFilterIndexBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0) &&
            bloomFilterIndex_ != null &&
            bloomFilterIndex_ != doris.segment_v2.SegmentV2.BloomFilterIndexPB.getDefaultInstance()) {
            getBloomFilterIndexBuilder().mergeFrom(value);
          } else {
            bloomFilterIndex_ = value;
          }
        } else {
          bloomFilterIndexBuilder_.mergeFrom(value);
        }
        if (bloomFilterIndex_ != null) {
          bitField0_ |= 0x00000010;
          onChanged();
        }
        return this;
      }
      /**
       * <code>optional .doris.segment_v2.BloomFilterIndexPB bloom_filter_index = 10;</code>
       */
      public Builder clearBloomFilterIndex() {
        bitField0_ = (bitField0_ & ~0x00000010);
        bloomFilterIndex_ = null;
        if (bloomFilterIndexBuilder_ != null) {
          bloomFilterIndexBuilder_.dispose();
          bloomFilterIndexBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <code>optional .doris.segment_v2.BloomFilterIndexPB bloom_filter_index = 10;</code>
       */
      public doris.segment_v2.SegmentV2.BloomFilterIndexPB.Builder getBloomFilterIndexBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getBloomFilterIndexFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .doris.segment_v2.BloomFilterIndexPB bloom_filter_index = 10;</code>
       */
      public doris.segment_v2.SegmentV2.BloomFilterIndexPBOrBuilder getBloomFilterIndexOrBuilder() {
        if (bloomFilterIndexBuilder_ != null) {
          return bloomFilterIndexBuilder_.getMessageOrBuilder();
        } else {
          return bloomFilterIndex_ == null ?
              doris.segment_v2.SegmentV2.BloomFilterIndexPB.getDefaultInstance() : bloomFilterIndex_;
        }
      }
      /**
       * <code>optional .doris.segment_v2.BloomFilterIndexPB bloom_filter_index = 10;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.BloomFilterIndexPB, doris.segment_v2.SegmentV2.BloomFilterIndexPB.Builder, doris.segment_v2.SegmentV2.BloomFilterIndexPBOrBuilder> 
          getBloomFilterIndexFieldBuilder() {
        if (bloomFilterIndexBuilder_ == null) {
          bloomFilterIndexBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              doris.segment_v2.SegmentV2.BloomFilterIndexPB, doris.segment_v2.SegmentV2.BloomFilterIndexPB.Builder, doris.segment_v2.SegmentV2.BloomFilterIndexPBOrBuilder>(
                  getBloomFilterIndex(),
                  getParentForChildren(),
                  isClean());
          bloomFilterIndex_ = null;
        }
        return bloomFilterIndexBuilder_;
      }
      @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.segment_v2.ColumnIndexMetaPB)
    }

    // @@protoc_insertion_point(class_scope:doris.segment_v2.ColumnIndexMetaPB)
    private static final doris.segment_v2.SegmentV2.ColumnIndexMetaPB DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new doris.segment_v2.SegmentV2.ColumnIndexMetaPB();
    }

    public static doris.segment_v2.SegmentV2.ColumnIndexMetaPB getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<ColumnIndexMetaPB>
        PARSER = new com.google.protobuf.AbstractParser<ColumnIndexMetaPB>() {
      @java.lang.Override
      public ColumnIndexMetaPB 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<ColumnIndexMetaPB> parser() {
      return PARSER;
    }

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

    @java.lang.Override
    public doris.segment_v2.SegmentV2.ColumnIndexMetaPB getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface OrdinalIndexPBOrBuilder extends
      // @@protoc_insertion_point(interface_extends:doris.segment_v2.OrdinalIndexPB)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * required: the root page can be data page if there is only one data page,
     * or the only index page if there is more than one data pages.
     * </pre>
     *
     * <code>optional .doris.segment_v2.BTreeMetaPB root_page = 1;</code>
     * @return Whether the rootPage field is set.
     */
    boolean hasRootPage();
    /**
     * <pre>
     * required: the root page can be data page if there is only one data page,
     * or the only index page if there is more than one data pages.
     * </pre>
     *
     * <code>optional .doris.segment_v2.BTreeMetaPB root_page = 1;</code>
     * @return The rootPage.
     */
    doris.segment_v2.SegmentV2.BTreeMetaPB getRootPage();
    /**
     * <pre>
     * required: the root page can be data page if there is only one data page,
     * or the only index page if there is more than one data pages.
     * </pre>
     *
     * <code>optional .doris.segment_v2.BTreeMetaPB root_page = 1;</code>
     */
    doris.segment_v2.SegmentV2.BTreeMetaPBOrBuilder getRootPageOrBuilder();
  }
  /**
   * Protobuf type {@code doris.segment_v2.OrdinalIndexPB}
   */
  public static final class OrdinalIndexPB extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:doris.segment_v2.OrdinalIndexPB)
      OrdinalIndexPBOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use OrdinalIndexPB.newBuilder() to construct.
    private OrdinalIndexPB(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private OrdinalIndexPB() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_OrdinalIndexPB_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_OrdinalIndexPB_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              doris.segment_v2.SegmentV2.OrdinalIndexPB.class, doris.segment_v2.SegmentV2.OrdinalIndexPB.Builder.class);
    }

    private int bitField0_;
    public static final int ROOT_PAGE_FIELD_NUMBER = 1;
    private doris.segment_v2.SegmentV2.BTreeMetaPB rootPage_;
    /**
     * <pre>
     * required: the root page can be data page if there is only one data page,
     * or the only index page if there is more than one data pages.
     * </pre>
     *
     * <code>optional .doris.segment_v2.BTreeMetaPB root_page = 1;</code>
     * @return Whether the rootPage field is set.
     */
    @java.lang.Override
    public boolean hasRootPage() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * required: the root page can be data page if there is only one data page,
     * or the only index page if there is more than one data pages.
     * </pre>
     *
     * <code>optional .doris.segment_v2.BTreeMetaPB root_page = 1;</code>
     * @return The rootPage.
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.BTreeMetaPB getRootPage() {
      return rootPage_ == null ? doris.segment_v2.SegmentV2.BTreeMetaPB.getDefaultInstance() : rootPage_;
    }
    /**
     * <pre>
     * required: the root page can be data page if there is only one data page,
     * or the only index page if there is more than one data pages.
     * </pre>
     *
     * <code>optional .doris.segment_v2.BTreeMetaPB root_page = 1;</code>
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.BTreeMetaPBOrBuilder getRootPageOrBuilder() {
      return rootPage_ == null ? doris.segment_v2.SegmentV2.BTreeMetaPB.getDefaultInstance() : rootPage_;
    }

    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 (hasRootPage()) {
        if (!getRootPage().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.writeMessage(1, getRootPage());
      }
      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
          .computeMessageSize(1, getRootPage());
      }
      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 doris.segment_v2.SegmentV2.OrdinalIndexPB)) {
        return super.equals(obj);
      }
      doris.segment_v2.SegmentV2.OrdinalIndexPB other = (doris.segment_v2.SegmentV2.OrdinalIndexPB) obj;

      if (hasRootPage() != other.hasRootPage()) return false;
      if (hasRootPage()) {
        if (!getRootPage()
            .equals(other.getRootPage())) 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 (hasRootPage()) {
        hash = (37 * hash) + ROOT_PAGE_FIELD_NUMBER;
        hash = (53 * hash) + getRootPage().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static doris.segment_v2.SegmentV2.OrdinalIndexPB parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.OrdinalIndexPB parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.OrdinalIndexPB parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.OrdinalIndexPB parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.OrdinalIndexPB parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.OrdinalIndexPB parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.OrdinalIndexPB parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.segment_v2.SegmentV2.OrdinalIndexPB 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 doris.segment_v2.SegmentV2.OrdinalIndexPB parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static doris.segment_v2.SegmentV2.OrdinalIndexPB 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 doris.segment_v2.SegmentV2.OrdinalIndexPB parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.segment_v2.SegmentV2.OrdinalIndexPB 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(doris.segment_v2.SegmentV2.OrdinalIndexPB 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.segment_v2.OrdinalIndexPB}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:doris.segment_v2.OrdinalIndexPB)
        doris.segment_v2.SegmentV2.OrdinalIndexPBOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_OrdinalIndexPB_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_OrdinalIndexPB_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                doris.segment_v2.SegmentV2.OrdinalIndexPB.class, doris.segment_v2.SegmentV2.OrdinalIndexPB.Builder.class);
      }

      // Construct using doris.segment_v2.SegmentV2.OrdinalIndexPB.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getRootPageFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        rootPage_ = null;
        if (rootPageBuilder_ != null) {
          rootPageBuilder_.dispose();
          rootPageBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_OrdinalIndexPB_descriptor;
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.OrdinalIndexPB getDefaultInstanceForType() {
        return doris.segment_v2.SegmentV2.OrdinalIndexPB.getDefaultInstance();
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.OrdinalIndexPB build() {
        doris.segment_v2.SegmentV2.OrdinalIndexPB result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.OrdinalIndexPB buildPartial() {
        doris.segment_v2.SegmentV2.OrdinalIndexPB result = new doris.segment_v2.SegmentV2.OrdinalIndexPB(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(doris.segment_v2.SegmentV2.OrdinalIndexPB result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.rootPage_ = rootPageBuilder_ == null
              ? rootPage_
              : rootPageBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        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 doris.segment_v2.SegmentV2.OrdinalIndexPB) {
          return mergeFrom((doris.segment_v2.SegmentV2.OrdinalIndexPB)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(doris.segment_v2.SegmentV2.OrdinalIndexPB other) {
        if (other == doris.segment_v2.SegmentV2.OrdinalIndexPB.getDefaultInstance()) return this;
        if (other.hasRootPage()) {
          mergeRootPage(other.getRootPage());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (hasRootPage()) {
          if (!getRootPage().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 10: {
                input.readMessage(
                    getRootPageFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                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 doris.segment_v2.SegmentV2.BTreeMetaPB rootPage_;
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.BTreeMetaPB, doris.segment_v2.SegmentV2.BTreeMetaPB.Builder, doris.segment_v2.SegmentV2.BTreeMetaPBOrBuilder> rootPageBuilder_;
      /**
       * <pre>
       * required: the root page can be data page if there is only one data page,
       * or the only index page if there is more than one data pages.
       * </pre>
       *
       * <code>optional .doris.segment_v2.BTreeMetaPB root_page = 1;</code>
       * @return Whether the rootPage field is set.
       */
      public boolean hasRootPage() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * required: the root page can be data page if there is only one data page,
       * or the only index page if there is more than one data pages.
       * </pre>
       *
       * <code>optional .doris.segment_v2.BTreeMetaPB root_page = 1;</code>
       * @return The rootPage.
       */
      public doris.segment_v2.SegmentV2.BTreeMetaPB getRootPage() {
        if (rootPageBuilder_ == null) {
          return rootPage_ == null ? doris.segment_v2.SegmentV2.BTreeMetaPB.getDefaultInstance() : rootPage_;
        } else {
          return rootPageBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * required: the root page can be data page if there is only one data page,
       * or the only index page if there is more than one data pages.
       * </pre>
       *
       * <code>optional .doris.segment_v2.BTreeMetaPB root_page = 1;</code>
       */
      public Builder setRootPage(doris.segment_v2.SegmentV2.BTreeMetaPB value) {
        if (rootPageBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          rootPage_ = value;
        } else {
          rootPageBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * required: the root page can be data page if there is only one data page,
       * or the only index page if there is more than one data pages.
       * </pre>
       *
       * <code>optional .doris.segment_v2.BTreeMetaPB root_page = 1;</code>
       */
      public Builder setRootPage(
          doris.segment_v2.SegmentV2.BTreeMetaPB.Builder builderForValue) {
        if (rootPageBuilder_ == null) {
          rootPage_ = builderForValue.build();
        } else {
          rootPageBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * required: the root page can be data page if there is only one data page,
       * or the only index page if there is more than one data pages.
       * </pre>
       *
       * <code>optional .doris.segment_v2.BTreeMetaPB root_page = 1;</code>
       */
      public Builder mergeRootPage(doris.segment_v2.SegmentV2.BTreeMetaPB value) {
        if (rootPageBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            rootPage_ != null &&
            rootPage_ != doris.segment_v2.SegmentV2.BTreeMetaPB.getDefaultInstance()) {
            getRootPageBuilder().mergeFrom(value);
          } else {
            rootPage_ = value;
          }
        } else {
          rootPageBuilder_.mergeFrom(value);
        }
        if (rootPage_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * required: the root page can be data page if there is only one data page,
       * or the only index page if there is more than one data pages.
       * </pre>
       *
       * <code>optional .doris.segment_v2.BTreeMetaPB root_page = 1;</code>
       */
      public Builder clearRootPage() {
        bitField0_ = (bitField0_ & ~0x00000001);
        rootPage_ = null;
        if (rootPageBuilder_ != null) {
          rootPageBuilder_.dispose();
          rootPageBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * required: the root page can be data page if there is only one data page,
       * or the only index page if there is more than one data pages.
       * </pre>
       *
       * <code>optional .doris.segment_v2.BTreeMetaPB root_page = 1;</code>
       */
      public doris.segment_v2.SegmentV2.BTreeMetaPB.Builder getRootPageBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getRootPageFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * required: the root page can be data page if there is only one data page,
       * or the only index page if there is more than one data pages.
       * </pre>
       *
       * <code>optional .doris.segment_v2.BTreeMetaPB root_page = 1;</code>
       */
      public doris.segment_v2.SegmentV2.BTreeMetaPBOrBuilder getRootPageOrBuilder() {
        if (rootPageBuilder_ != null) {
          return rootPageBuilder_.getMessageOrBuilder();
        } else {
          return rootPage_ == null ?
              doris.segment_v2.SegmentV2.BTreeMetaPB.getDefaultInstance() : rootPage_;
        }
      }
      /**
       * <pre>
       * required: the root page can be data page if there is only one data page,
       * or the only index page if there is more than one data pages.
       * </pre>
       *
       * <code>optional .doris.segment_v2.BTreeMetaPB root_page = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.BTreeMetaPB, doris.segment_v2.SegmentV2.BTreeMetaPB.Builder, doris.segment_v2.SegmentV2.BTreeMetaPBOrBuilder> 
          getRootPageFieldBuilder() {
        if (rootPageBuilder_ == null) {
          rootPageBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              doris.segment_v2.SegmentV2.BTreeMetaPB, doris.segment_v2.SegmentV2.BTreeMetaPB.Builder, doris.segment_v2.SegmentV2.BTreeMetaPBOrBuilder>(
                  getRootPage(),
                  getParentForChildren(),
                  isClean());
          rootPage_ = null;
        }
        return rootPageBuilder_;
      }
      @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.segment_v2.OrdinalIndexPB)
    }

    // @@protoc_insertion_point(class_scope:doris.segment_v2.OrdinalIndexPB)
    private static final doris.segment_v2.SegmentV2.OrdinalIndexPB DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new doris.segment_v2.SegmentV2.OrdinalIndexPB();
    }

    public static doris.segment_v2.SegmentV2.OrdinalIndexPB getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<OrdinalIndexPB>
        PARSER = new com.google.protobuf.AbstractParser<OrdinalIndexPB>() {
      @java.lang.Override
      public OrdinalIndexPB 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<OrdinalIndexPB> parser() {
      return PARSER;
    }

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

    @java.lang.Override
    public doris.segment_v2.SegmentV2.OrdinalIndexPB getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ZoneMapIndexPBOrBuilder extends
      // @@protoc_insertion_point(interface_extends:doris.segment_v2.ZoneMapIndexPB)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * required: segment-level zone map
     * </pre>
     *
     * <code>optional .doris.segment_v2.ZoneMapPB segment_zone_map = 1;</code>
     * @return Whether the segmentZoneMap field is set.
     */
    boolean hasSegmentZoneMap();
    /**
     * <pre>
     * required: segment-level zone map
     * </pre>
     *
     * <code>optional .doris.segment_v2.ZoneMapPB segment_zone_map = 1;</code>
     * @return The segmentZoneMap.
     */
    doris.segment_v2.SegmentV2.ZoneMapPB getSegmentZoneMap();
    /**
     * <pre>
     * required: segment-level zone map
     * </pre>
     *
     * <code>optional .doris.segment_v2.ZoneMapPB segment_zone_map = 1;</code>
     */
    doris.segment_v2.SegmentV2.ZoneMapPBOrBuilder getSegmentZoneMapOrBuilder();

    /**
     * <pre>
     * required: zone map for each data page is stored in an IndexedColumn with ordinal index
     * </pre>
     *
     * <code>optional .doris.segment_v2.IndexedColumnMetaPB page_zone_maps = 2;</code>
     * @return Whether the pageZoneMaps field is set.
     */
    boolean hasPageZoneMaps();
    /**
     * <pre>
     * required: zone map for each data page is stored in an IndexedColumn with ordinal index
     * </pre>
     *
     * <code>optional .doris.segment_v2.IndexedColumnMetaPB page_zone_maps = 2;</code>
     * @return The pageZoneMaps.
     */
    doris.segment_v2.SegmentV2.IndexedColumnMetaPB getPageZoneMaps();
    /**
     * <pre>
     * required: zone map for each data page is stored in an IndexedColumn with ordinal index
     * </pre>
     *
     * <code>optional .doris.segment_v2.IndexedColumnMetaPB page_zone_maps = 2;</code>
     */
    doris.segment_v2.SegmentV2.IndexedColumnMetaPBOrBuilder getPageZoneMapsOrBuilder();
  }
  /**
   * Protobuf type {@code doris.segment_v2.ZoneMapIndexPB}
   */
  public static final class ZoneMapIndexPB extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:doris.segment_v2.ZoneMapIndexPB)
      ZoneMapIndexPBOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ZoneMapIndexPB.newBuilder() to construct.
    private ZoneMapIndexPB(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ZoneMapIndexPB() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_ZoneMapIndexPB_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_ZoneMapIndexPB_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              doris.segment_v2.SegmentV2.ZoneMapIndexPB.class, doris.segment_v2.SegmentV2.ZoneMapIndexPB.Builder.class);
    }

    private int bitField0_;
    public static final int SEGMENT_ZONE_MAP_FIELD_NUMBER = 1;
    private doris.segment_v2.SegmentV2.ZoneMapPB segmentZoneMap_;
    /**
     * <pre>
     * required: segment-level zone map
     * </pre>
     *
     * <code>optional .doris.segment_v2.ZoneMapPB segment_zone_map = 1;</code>
     * @return Whether the segmentZoneMap field is set.
     */
    @java.lang.Override
    public boolean hasSegmentZoneMap() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * required: segment-level zone map
     * </pre>
     *
     * <code>optional .doris.segment_v2.ZoneMapPB segment_zone_map = 1;</code>
     * @return The segmentZoneMap.
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.ZoneMapPB getSegmentZoneMap() {
      return segmentZoneMap_ == null ? doris.segment_v2.SegmentV2.ZoneMapPB.getDefaultInstance() : segmentZoneMap_;
    }
    /**
     * <pre>
     * required: segment-level zone map
     * </pre>
     *
     * <code>optional .doris.segment_v2.ZoneMapPB segment_zone_map = 1;</code>
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.ZoneMapPBOrBuilder getSegmentZoneMapOrBuilder() {
      return segmentZoneMap_ == null ? doris.segment_v2.SegmentV2.ZoneMapPB.getDefaultInstance() : segmentZoneMap_;
    }

    public static final int PAGE_ZONE_MAPS_FIELD_NUMBER = 2;
    private doris.segment_v2.SegmentV2.IndexedColumnMetaPB pageZoneMaps_;
    /**
     * <pre>
     * required: zone map for each data page is stored in an IndexedColumn with ordinal index
     * </pre>
     *
     * <code>optional .doris.segment_v2.IndexedColumnMetaPB page_zone_maps = 2;</code>
     * @return Whether the pageZoneMaps field is set.
     */
    @java.lang.Override
    public boolean hasPageZoneMaps() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * required: zone map for each data page is stored in an IndexedColumn with ordinal index
     * </pre>
     *
     * <code>optional .doris.segment_v2.IndexedColumnMetaPB page_zone_maps = 2;</code>
     * @return The pageZoneMaps.
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.IndexedColumnMetaPB getPageZoneMaps() {
      return pageZoneMaps_ == null ? doris.segment_v2.SegmentV2.IndexedColumnMetaPB.getDefaultInstance() : pageZoneMaps_;
    }
    /**
     * <pre>
     * required: zone map for each data page is stored in an IndexedColumn with ordinal index
     * </pre>
     *
     * <code>optional .doris.segment_v2.IndexedColumnMetaPB page_zone_maps = 2;</code>
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.IndexedColumnMetaPBOrBuilder getPageZoneMapsOrBuilder() {
      return pageZoneMaps_ == null ? doris.segment_v2.SegmentV2.IndexedColumnMetaPB.getDefaultInstance() : pageZoneMaps_;
    }

    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 (hasPageZoneMaps()) {
        if (!getPageZoneMaps().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.writeMessage(1, getSegmentZoneMap());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getPageZoneMaps());
      }
      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
          .computeMessageSize(1, getSegmentZoneMap());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getPageZoneMaps());
      }
      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 doris.segment_v2.SegmentV2.ZoneMapIndexPB)) {
        return super.equals(obj);
      }
      doris.segment_v2.SegmentV2.ZoneMapIndexPB other = (doris.segment_v2.SegmentV2.ZoneMapIndexPB) obj;

      if (hasSegmentZoneMap() != other.hasSegmentZoneMap()) return false;
      if (hasSegmentZoneMap()) {
        if (!getSegmentZoneMap()
            .equals(other.getSegmentZoneMap())) return false;
      }
      if (hasPageZoneMaps() != other.hasPageZoneMaps()) return false;
      if (hasPageZoneMaps()) {
        if (!getPageZoneMaps()
            .equals(other.getPageZoneMaps())) 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 (hasSegmentZoneMap()) {
        hash = (37 * hash) + SEGMENT_ZONE_MAP_FIELD_NUMBER;
        hash = (53 * hash) + getSegmentZoneMap().hashCode();
      }
      if (hasPageZoneMaps()) {
        hash = (37 * hash) + PAGE_ZONE_MAPS_FIELD_NUMBER;
        hash = (53 * hash) + getPageZoneMaps().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static doris.segment_v2.SegmentV2.ZoneMapIndexPB parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.ZoneMapIndexPB parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.ZoneMapIndexPB parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.ZoneMapIndexPB parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.ZoneMapIndexPB parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.ZoneMapIndexPB parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.ZoneMapIndexPB parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.segment_v2.SegmentV2.ZoneMapIndexPB 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 doris.segment_v2.SegmentV2.ZoneMapIndexPB parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static doris.segment_v2.SegmentV2.ZoneMapIndexPB 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 doris.segment_v2.SegmentV2.ZoneMapIndexPB parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.segment_v2.SegmentV2.ZoneMapIndexPB 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(doris.segment_v2.SegmentV2.ZoneMapIndexPB 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.segment_v2.ZoneMapIndexPB}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:doris.segment_v2.ZoneMapIndexPB)
        doris.segment_v2.SegmentV2.ZoneMapIndexPBOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_ZoneMapIndexPB_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_ZoneMapIndexPB_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                doris.segment_v2.SegmentV2.ZoneMapIndexPB.class, doris.segment_v2.SegmentV2.ZoneMapIndexPB.Builder.class);
      }

      // Construct using doris.segment_v2.SegmentV2.ZoneMapIndexPB.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getSegmentZoneMapFieldBuilder();
          getPageZoneMapsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        segmentZoneMap_ = null;
        if (segmentZoneMapBuilder_ != null) {
          segmentZoneMapBuilder_.dispose();
          segmentZoneMapBuilder_ = null;
        }
        pageZoneMaps_ = null;
        if (pageZoneMapsBuilder_ != null) {
          pageZoneMapsBuilder_.dispose();
          pageZoneMapsBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_ZoneMapIndexPB_descriptor;
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.ZoneMapIndexPB getDefaultInstanceForType() {
        return doris.segment_v2.SegmentV2.ZoneMapIndexPB.getDefaultInstance();
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.ZoneMapIndexPB build() {
        doris.segment_v2.SegmentV2.ZoneMapIndexPB result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.ZoneMapIndexPB buildPartial() {
        doris.segment_v2.SegmentV2.ZoneMapIndexPB result = new doris.segment_v2.SegmentV2.ZoneMapIndexPB(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(doris.segment_v2.SegmentV2.ZoneMapIndexPB result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.segmentZoneMap_ = segmentZoneMapBuilder_ == null
              ? segmentZoneMap_
              : segmentZoneMapBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.pageZoneMaps_ = pageZoneMapsBuilder_ == null
              ? pageZoneMaps_
              : pageZoneMapsBuilder_.build();
          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 doris.segment_v2.SegmentV2.ZoneMapIndexPB) {
          return mergeFrom((doris.segment_v2.SegmentV2.ZoneMapIndexPB)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(doris.segment_v2.SegmentV2.ZoneMapIndexPB other) {
        if (other == doris.segment_v2.SegmentV2.ZoneMapIndexPB.getDefaultInstance()) return this;
        if (other.hasSegmentZoneMap()) {
          mergeSegmentZoneMap(other.getSegmentZoneMap());
        }
        if (other.hasPageZoneMaps()) {
          mergePageZoneMaps(other.getPageZoneMaps());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (hasPageZoneMaps()) {
          if (!getPageZoneMaps().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 10: {
                input.readMessage(
                    getSegmentZoneMapFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getPageZoneMapsFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              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 doris.segment_v2.SegmentV2.ZoneMapPB segmentZoneMap_;
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.ZoneMapPB, doris.segment_v2.SegmentV2.ZoneMapPB.Builder, doris.segment_v2.SegmentV2.ZoneMapPBOrBuilder> segmentZoneMapBuilder_;
      /**
       * <pre>
       * required: segment-level zone map
       * </pre>
       *
       * <code>optional .doris.segment_v2.ZoneMapPB segment_zone_map = 1;</code>
       * @return Whether the segmentZoneMap field is set.
       */
      public boolean hasSegmentZoneMap() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * required: segment-level zone map
       * </pre>
       *
       * <code>optional .doris.segment_v2.ZoneMapPB segment_zone_map = 1;</code>
       * @return The segmentZoneMap.
       */
      public doris.segment_v2.SegmentV2.ZoneMapPB getSegmentZoneMap() {
        if (segmentZoneMapBuilder_ == null) {
          return segmentZoneMap_ == null ? doris.segment_v2.SegmentV2.ZoneMapPB.getDefaultInstance() : segmentZoneMap_;
        } else {
          return segmentZoneMapBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * required: segment-level zone map
       * </pre>
       *
       * <code>optional .doris.segment_v2.ZoneMapPB segment_zone_map = 1;</code>
       */
      public Builder setSegmentZoneMap(doris.segment_v2.SegmentV2.ZoneMapPB value) {
        if (segmentZoneMapBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          segmentZoneMap_ = value;
        } else {
          segmentZoneMapBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * required: segment-level zone map
       * </pre>
       *
       * <code>optional .doris.segment_v2.ZoneMapPB segment_zone_map = 1;</code>
       */
      public Builder setSegmentZoneMap(
          doris.segment_v2.SegmentV2.ZoneMapPB.Builder builderForValue) {
        if (segmentZoneMapBuilder_ == null) {
          segmentZoneMap_ = builderForValue.build();
        } else {
          segmentZoneMapBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * required: segment-level zone map
       * </pre>
       *
       * <code>optional .doris.segment_v2.ZoneMapPB segment_zone_map = 1;</code>
       */
      public Builder mergeSegmentZoneMap(doris.segment_v2.SegmentV2.ZoneMapPB value) {
        if (segmentZoneMapBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            segmentZoneMap_ != null &&
            segmentZoneMap_ != doris.segment_v2.SegmentV2.ZoneMapPB.getDefaultInstance()) {
            getSegmentZoneMapBuilder().mergeFrom(value);
          } else {
            segmentZoneMap_ = value;
          }
        } else {
          segmentZoneMapBuilder_.mergeFrom(value);
        }
        if (segmentZoneMap_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * required: segment-level zone map
       * </pre>
       *
       * <code>optional .doris.segment_v2.ZoneMapPB segment_zone_map = 1;</code>
       */
      public Builder clearSegmentZoneMap() {
        bitField0_ = (bitField0_ & ~0x00000001);
        segmentZoneMap_ = null;
        if (segmentZoneMapBuilder_ != null) {
          segmentZoneMapBuilder_.dispose();
          segmentZoneMapBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * required: segment-level zone map
       * </pre>
       *
       * <code>optional .doris.segment_v2.ZoneMapPB segment_zone_map = 1;</code>
       */
      public doris.segment_v2.SegmentV2.ZoneMapPB.Builder getSegmentZoneMapBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getSegmentZoneMapFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * required: segment-level zone map
       * </pre>
       *
       * <code>optional .doris.segment_v2.ZoneMapPB segment_zone_map = 1;</code>
       */
      public doris.segment_v2.SegmentV2.ZoneMapPBOrBuilder getSegmentZoneMapOrBuilder() {
        if (segmentZoneMapBuilder_ != null) {
          return segmentZoneMapBuilder_.getMessageOrBuilder();
        } else {
          return segmentZoneMap_ == null ?
              doris.segment_v2.SegmentV2.ZoneMapPB.getDefaultInstance() : segmentZoneMap_;
        }
      }
      /**
       * <pre>
       * required: segment-level zone map
       * </pre>
       *
       * <code>optional .doris.segment_v2.ZoneMapPB segment_zone_map = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.ZoneMapPB, doris.segment_v2.SegmentV2.ZoneMapPB.Builder, doris.segment_v2.SegmentV2.ZoneMapPBOrBuilder> 
          getSegmentZoneMapFieldBuilder() {
        if (segmentZoneMapBuilder_ == null) {
          segmentZoneMapBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              doris.segment_v2.SegmentV2.ZoneMapPB, doris.segment_v2.SegmentV2.ZoneMapPB.Builder, doris.segment_v2.SegmentV2.ZoneMapPBOrBuilder>(
                  getSegmentZoneMap(),
                  getParentForChildren(),
                  isClean());
          segmentZoneMap_ = null;
        }
        return segmentZoneMapBuilder_;
      }

      private doris.segment_v2.SegmentV2.IndexedColumnMetaPB pageZoneMaps_;
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.IndexedColumnMetaPB, doris.segment_v2.SegmentV2.IndexedColumnMetaPB.Builder, doris.segment_v2.SegmentV2.IndexedColumnMetaPBOrBuilder> pageZoneMapsBuilder_;
      /**
       * <pre>
       * required: zone map for each data page is stored in an IndexedColumn with ordinal index
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexedColumnMetaPB page_zone_maps = 2;</code>
       * @return Whether the pageZoneMaps field is set.
       */
      public boolean hasPageZoneMaps() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * required: zone map for each data page is stored in an IndexedColumn with ordinal index
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexedColumnMetaPB page_zone_maps = 2;</code>
       * @return The pageZoneMaps.
       */
      public doris.segment_v2.SegmentV2.IndexedColumnMetaPB getPageZoneMaps() {
        if (pageZoneMapsBuilder_ == null) {
          return pageZoneMaps_ == null ? doris.segment_v2.SegmentV2.IndexedColumnMetaPB.getDefaultInstance() : pageZoneMaps_;
        } else {
          return pageZoneMapsBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * required: zone map for each data page is stored in an IndexedColumn with ordinal index
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexedColumnMetaPB page_zone_maps = 2;</code>
       */
      public Builder setPageZoneMaps(doris.segment_v2.SegmentV2.IndexedColumnMetaPB value) {
        if (pageZoneMapsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          pageZoneMaps_ = value;
        } else {
          pageZoneMapsBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * required: zone map for each data page is stored in an IndexedColumn with ordinal index
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexedColumnMetaPB page_zone_maps = 2;</code>
       */
      public Builder setPageZoneMaps(
          doris.segment_v2.SegmentV2.IndexedColumnMetaPB.Builder builderForValue) {
        if (pageZoneMapsBuilder_ == null) {
          pageZoneMaps_ = builderForValue.build();
        } else {
          pageZoneMapsBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * required: zone map for each data page is stored in an IndexedColumn with ordinal index
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexedColumnMetaPB page_zone_maps = 2;</code>
       */
      public Builder mergePageZoneMaps(doris.segment_v2.SegmentV2.IndexedColumnMetaPB value) {
        if (pageZoneMapsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            pageZoneMaps_ != null &&
            pageZoneMaps_ != doris.segment_v2.SegmentV2.IndexedColumnMetaPB.getDefaultInstance()) {
            getPageZoneMapsBuilder().mergeFrom(value);
          } else {
            pageZoneMaps_ = value;
          }
        } else {
          pageZoneMapsBuilder_.mergeFrom(value);
        }
        if (pageZoneMaps_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * required: zone map for each data page is stored in an IndexedColumn with ordinal index
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexedColumnMetaPB page_zone_maps = 2;</code>
       */
      public Builder clearPageZoneMaps() {
        bitField0_ = (bitField0_ & ~0x00000002);
        pageZoneMaps_ = null;
        if (pageZoneMapsBuilder_ != null) {
          pageZoneMapsBuilder_.dispose();
          pageZoneMapsBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * required: zone map for each data page is stored in an IndexedColumn with ordinal index
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexedColumnMetaPB page_zone_maps = 2;</code>
       */
      public doris.segment_v2.SegmentV2.IndexedColumnMetaPB.Builder getPageZoneMapsBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getPageZoneMapsFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * required: zone map for each data page is stored in an IndexedColumn with ordinal index
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexedColumnMetaPB page_zone_maps = 2;</code>
       */
      public doris.segment_v2.SegmentV2.IndexedColumnMetaPBOrBuilder getPageZoneMapsOrBuilder() {
        if (pageZoneMapsBuilder_ != null) {
          return pageZoneMapsBuilder_.getMessageOrBuilder();
        } else {
          return pageZoneMaps_ == null ?
              doris.segment_v2.SegmentV2.IndexedColumnMetaPB.getDefaultInstance() : pageZoneMaps_;
        }
      }
      /**
       * <pre>
       * required: zone map for each data page is stored in an IndexedColumn with ordinal index
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexedColumnMetaPB page_zone_maps = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.IndexedColumnMetaPB, doris.segment_v2.SegmentV2.IndexedColumnMetaPB.Builder, doris.segment_v2.SegmentV2.IndexedColumnMetaPBOrBuilder> 
          getPageZoneMapsFieldBuilder() {
        if (pageZoneMapsBuilder_ == null) {
          pageZoneMapsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              doris.segment_v2.SegmentV2.IndexedColumnMetaPB, doris.segment_v2.SegmentV2.IndexedColumnMetaPB.Builder, doris.segment_v2.SegmentV2.IndexedColumnMetaPBOrBuilder>(
                  getPageZoneMaps(),
                  getParentForChildren(),
                  isClean());
          pageZoneMaps_ = null;
        }
        return pageZoneMapsBuilder_;
      }
      @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.segment_v2.ZoneMapIndexPB)
    }

    // @@protoc_insertion_point(class_scope:doris.segment_v2.ZoneMapIndexPB)
    private static final doris.segment_v2.SegmentV2.ZoneMapIndexPB DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new doris.segment_v2.SegmentV2.ZoneMapIndexPB();
    }

    public static doris.segment_v2.SegmentV2.ZoneMapIndexPB getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<ZoneMapIndexPB>
        PARSER = new com.google.protobuf.AbstractParser<ZoneMapIndexPB>() {
      @java.lang.Override
      public ZoneMapIndexPB 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<ZoneMapIndexPB> parser() {
      return PARSER;
    }

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

    @java.lang.Override
    public doris.segment_v2.SegmentV2.ZoneMapIndexPB getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BitmapIndexPBOrBuilder extends
      // @@protoc_insertion_point(interface_extends:doris.segment_v2.BitmapIndexPB)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>optional .doris.segment_v2.BitmapIndexPB.BitmapType bitmap_type = 1 [default = ROARING_BITMAP];</code>
     * @return Whether the bitmapType field is set.
     */
    boolean hasBitmapType();
    /**
     * <code>optional .doris.segment_v2.BitmapIndexPB.BitmapType bitmap_type = 1 [default = ROARING_BITMAP];</code>
     * @return The bitmapType.
     */
    doris.segment_v2.SegmentV2.BitmapIndexPB.BitmapType getBitmapType();

    /**
     * <pre>
     * required: whether the index contains null key.
     * if true, the last bitmap (ordinal:dict_column.num_values) in bitmap_column is
     * the bitmap for null key. we don't store null key in dict_column.
     * </pre>
     *
     * <code>optional bool has_null = 2;</code>
     * @return Whether the hasNull field is set.
     */
    boolean hasHasNull();
    /**
     * <pre>
     * required: whether the index contains null key.
     * if true, the last bitmap (ordinal:dict_column.num_values) in bitmap_column is
     * the bitmap for null key. we don't store null key in dict_column.
     * </pre>
     *
     * <code>optional bool has_null = 2;</code>
     * @return The hasNull.
     */
    boolean getHasNull();

    /**
     * <pre>
     * required: meta for ordered dictionary part
     * </pre>
     *
     * <code>optional .doris.segment_v2.IndexedColumnMetaPB dict_column = 3;</code>
     * @return Whether the dictColumn field is set.
     */
    boolean hasDictColumn();
    /**
     * <pre>
     * required: meta for ordered dictionary part
     * </pre>
     *
     * <code>optional .doris.segment_v2.IndexedColumnMetaPB dict_column = 3;</code>
     * @return The dictColumn.
     */
    doris.segment_v2.SegmentV2.IndexedColumnMetaPB getDictColumn();
    /**
     * <pre>
     * required: meta for ordered dictionary part
     * </pre>
     *
     * <code>optional .doris.segment_v2.IndexedColumnMetaPB dict_column = 3;</code>
     */
    doris.segment_v2.SegmentV2.IndexedColumnMetaPBOrBuilder getDictColumnOrBuilder();

    /**
     * <pre>
     * required: meta for bitmaps part
     * </pre>
     *
     * <code>optional .doris.segment_v2.IndexedColumnMetaPB bitmap_column = 4;</code>
     * @return Whether the bitmapColumn field is set.
     */
    boolean hasBitmapColumn();
    /**
     * <pre>
     * required: meta for bitmaps part
     * </pre>
     *
     * <code>optional .doris.segment_v2.IndexedColumnMetaPB bitmap_column = 4;</code>
     * @return The bitmapColumn.
     */
    doris.segment_v2.SegmentV2.IndexedColumnMetaPB getBitmapColumn();
    /**
     * <pre>
     * required: meta for bitmaps part
     * </pre>
     *
     * <code>optional .doris.segment_v2.IndexedColumnMetaPB bitmap_column = 4;</code>
     */
    doris.segment_v2.SegmentV2.IndexedColumnMetaPBOrBuilder getBitmapColumnOrBuilder();
  }
  /**
   * Protobuf type {@code doris.segment_v2.BitmapIndexPB}
   */
  public static final class BitmapIndexPB extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:doris.segment_v2.BitmapIndexPB)
      BitmapIndexPBOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BitmapIndexPB.newBuilder() to construct.
    private BitmapIndexPB(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private BitmapIndexPB() {
      bitmapType_ = 1;
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_BitmapIndexPB_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_BitmapIndexPB_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              doris.segment_v2.SegmentV2.BitmapIndexPB.class, doris.segment_v2.SegmentV2.BitmapIndexPB.Builder.class);
    }

    /**
     * Protobuf enum {@code doris.segment_v2.BitmapIndexPB.BitmapType}
     */
    public enum BitmapType
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNKNOWN_BITMAP_TYPE = 0;</code>
       */
      UNKNOWN_BITMAP_TYPE(0),
      /**
       * <code>ROARING_BITMAP = 1;</code>
       */
      ROARING_BITMAP(1),
      ;

      /**
       * <code>UNKNOWN_BITMAP_TYPE = 0;</code>
       */
      public static final int UNKNOWN_BITMAP_TYPE_VALUE = 0;
      /**
       * <code>ROARING_BITMAP = 1;</code>
       */
      public static final int ROARING_BITMAP_VALUE = 1;


      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 BitmapType 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 BitmapType forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN_BITMAP_TYPE;
          case 1: return ROARING_BITMAP;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<BitmapType>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          BitmapType> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<BitmapType>() {
              public BitmapType findValueByNumber(int number) {
                return BitmapType.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 doris.segment_v2.SegmentV2.BitmapIndexPB.getDescriptor().getEnumTypes().get(0);
      }

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

      public static BitmapType 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 BitmapType(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:doris.segment_v2.BitmapIndexPB.BitmapType)
    }

    private int bitField0_;
    public static final int BITMAP_TYPE_FIELD_NUMBER = 1;
    private int bitmapType_ = 1;
    /**
     * <code>optional .doris.segment_v2.BitmapIndexPB.BitmapType bitmap_type = 1 [default = ROARING_BITMAP];</code>
     * @return Whether the bitmapType field is set.
     */
    @java.lang.Override public boolean hasBitmapType() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <code>optional .doris.segment_v2.BitmapIndexPB.BitmapType bitmap_type = 1 [default = ROARING_BITMAP];</code>
     * @return The bitmapType.
     */
    @java.lang.Override public doris.segment_v2.SegmentV2.BitmapIndexPB.BitmapType getBitmapType() {
      doris.segment_v2.SegmentV2.BitmapIndexPB.BitmapType result = doris.segment_v2.SegmentV2.BitmapIndexPB.BitmapType.forNumber(bitmapType_);
      return result == null ? doris.segment_v2.SegmentV2.BitmapIndexPB.BitmapType.ROARING_BITMAP : result;
    }

    public static final int HAS_NULL_FIELD_NUMBER = 2;
    private boolean hasNull_ = false;
    /**
     * <pre>
     * required: whether the index contains null key.
     * if true, the last bitmap (ordinal:dict_column.num_values) in bitmap_column is
     * the bitmap for null key. we don't store null key in dict_column.
     * </pre>
     *
     * <code>optional bool has_null = 2;</code>
     * @return Whether the hasNull field is set.
     */
    @java.lang.Override
    public boolean hasHasNull() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * required: whether the index contains null key.
     * if true, the last bitmap (ordinal:dict_column.num_values) in bitmap_column is
     * the bitmap for null key. we don't store null key in dict_column.
     * </pre>
     *
     * <code>optional bool has_null = 2;</code>
     * @return The hasNull.
     */
    @java.lang.Override
    public boolean getHasNull() {
      return hasNull_;
    }

    public static final int DICT_COLUMN_FIELD_NUMBER = 3;
    private doris.segment_v2.SegmentV2.IndexedColumnMetaPB dictColumn_;
    /**
     * <pre>
     * required: meta for ordered dictionary part
     * </pre>
     *
     * <code>optional .doris.segment_v2.IndexedColumnMetaPB dict_column = 3;</code>
     * @return Whether the dictColumn field is set.
     */
    @java.lang.Override
    public boolean hasDictColumn() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * required: meta for ordered dictionary part
     * </pre>
     *
     * <code>optional .doris.segment_v2.IndexedColumnMetaPB dict_column = 3;</code>
     * @return The dictColumn.
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.IndexedColumnMetaPB getDictColumn() {
      return dictColumn_ == null ? doris.segment_v2.SegmentV2.IndexedColumnMetaPB.getDefaultInstance() : dictColumn_;
    }
    /**
     * <pre>
     * required: meta for ordered dictionary part
     * </pre>
     *
     * <code>optional .doris.segment_v2.IndexedColumnMetaPB dict_column = 3;</code>
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.IndexedColumnMetaPBOrBuilder getDictColumnOrBuilder() {
      return dictColumn_ == null ? doris.segment_v2.SegmentV2.IndexedColumnMetaPB.getDefaultInstance() : dictColumn_;
    }

    public static final int BITMAP_COLUMN_FIELD_NUMBER = 4;
    private doris.segment_v2.SegmentV2.IndexedColumnMetaPB bitmapColumn_;
    /**
     * <pre>
     * required: meta for bitmaps part
     * </pre>
     *
     * <code>optional .doris.segment_v2.IndexedColumnMetaPB bitmap_column = 4;</code>
     * @return Whether the bitmapColumn field is set.
     */
    @java.lang.Override
    public boolean hasBitmapColumn() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     * <pre>
     * required: meta for bitmaps part
     * </pre>
     *
     * <code>optional .doris.segment_v2.IndexedColumnMetaPB bitmap_column = 4;</code>
     * @return The bitmapColumn.
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.IndexedColumnMetaPB getBitmapColumn() {
      return bitmapColumn_ == null ? doris.segment_v2.SegmentV2.IndexedColumnMetaPB.getDefaultInstance() : bitmapColumn_;
    }
    /**
     * <pre>
     * required: meta for bitmaps part
     * </pre>
     *
     * <code>optional .doris.segment_v2.IndexedColumnMetaPB bitmap_column = 4;</code>
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.IndexedColumnMetaPBOrBuilder getBitmapColumnOrBuilder() {
      return bitmapColumn_ == null ? doris.segment_v2.SegmentV2.IndexedColumnMetaPB.getDefaultInstance() : bitmapColumn_;
    }

    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 (hasDictColumn()) {
        if (!getDictColumn().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
      }
      if (hasBitmapColumn()) {
        if (!getBitmapColumn().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.writeEnum(1, bitmapType_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeBool(2, hasNull_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(3, getDictColumn());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        output.writeMessage(4, getBitmapColumn());
      }
      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, bitmapType_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, hasNull_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getDictColumn());
      }
      if (((bitField0_ & 0x00000008) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getBitmapColumn());
      }
      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 doris.segment_v2.SegmentV2.BitmapIndexPB)) {
        return super.equals(obj);
      }
      doris.segment_v2.SegmentV2.BitmapIndexPB other = (doris.segment_v2.SegmentV2.BitmapIndexPB) obj;

      if (hasBitmapType() != other.hasBitmapType()) return false;
      if (hasBitmapType()) {
        if (bitmapType_ != other.bitmapType_) return false;
      }
      if (hasHasNull() != other.hasHasNull()) return false;
      if (hasHasNull()) {
        if (getHasNull()
            != other.getHasNull()) return false;
      }
      if (hasDictColumn() != other.hasDictColumn()) return false;
      if (hasDictColumn()) {
        if (!getDictColumn()
            .equals(other.getDictColumn())) return false;
      }
      if (hasBitmapColumn() != other.hasBitmapColumn()) return false;
      if (hasBitmapColumn()) {
        if (!getBitmapColumn()
            .equals(other.getBitmapColumn())) 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 (hasBitmapType()) {
        hash = (37 * hash) + BITMAP_TYPE_FIELD_NUMBER;
        hash = (53 * hash) + bitmapType_;
      }
      if (hasHasNull()) {
        hash = (37 * hash) + HAS_NULL_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getHasNull());
      }
      if (hasDictColumn()) {
        hash = (37 * hash) + DICT_COLUMN_FIELD_NUMBER;
        hash = (53 * hash) + getDictColumn().hashCode();
      }
      if (hasBitmapColumn()) {
        hash = (37 * hash) + BITMAP_COLUMN_FIELD_NUMBER;
        hash = (53 * hash) + getBitmapColumn().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static doris.segment_v2.SegmentV2.BitmapIndexPB parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.BitmapIndexPB parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.BitmapIndexPB parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.BitmapIndexPB parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.BitmapIndexPB parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.BitmapIndexPB parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.BitmapIndexPB parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.segment_v2.SegmentV2.BitmapIndexPB 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 doris.segment_v2.SegmentV2.BitmapIndexPB parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static doris.segment_v2.SegmentV2.BitmapIndexPB 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 doris.segment_v2.SegmentV2.BitmapIndexPB parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.segment_v2.SegmentV2.BitmapIndexPB 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(doris.segment_v2.SegmentV2.BitmapIndexPB 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.segment_v2.BitmapIndexPB}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:doris.segment_v2.BitmapIndexPB)
        doris.segment_v2.SegmentV2.BitmapIndexPBOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_BitmapIndexPB_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_BitmapIndexPB_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                doris.segment_v2.SegmentV2.BitmapIndexPB.class, doris.segment_v2.SegmentV2.BitmapIndexPB.Builder.class);
      }

      // Construct using doris.segment_v2.SegmentV2.BitmapIndexPB.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getDictColumnFieldBuilder();
          getBitmapColumnFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        bitmapType_ = 1;
        hasNull_ = false;
        dictColumn_ = null;
        if (dictColumnBuilder_ != null) {
          dictColumnBuilder_.dispose();
          dictColumnBuilder_ = null;
        }
        bitmapColumn_ = null;
        if (bitmapColumnBuilder_ != null) {
          bitmapColumnBuilder_.dispose();
          bitmapColumnBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_BitmapIndexPB_descriptor;
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.BitmapIndexPB getDefaultInstanceForType() {
        return doris.segment_v2.SegmentV2.BitmapIndexPB.getDefaultInstance();
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.BitmapIndexPB build() {
        doris.segment_v2.SegmentV2.BitmapIndexPB result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.BitmapIndexPB buildPartial() {
        doris.segment_v2.SegmentV2.BitmapIndexPB result = new doris.segment_v2.SegmentV2.BitmapIndexPB(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(doris.segment_v2.SegmentV2.BitmapIndexPB result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.bitmapType_ = bitmapType_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.hasNull_ = hasNull_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.dictColumn_ = dictColumnBuilder_ == null
              ? dictColumn_
              : dictColumnBuilder_.build();
          to_bitField0_ |= 0x00000004;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.bitmapColumn_ = bitmapColumnBuilder_ == null
              ? bitmapColumn_
              : bitmapColumnBuilder_.build();
          to_bitField0_ |= 0x00000008;
        }
        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 doris.segment_v2.SegmentV2.BitmapIndexPB) {
          return mergeFrom((doris.segment_v2.SegmentV2.BitmapIndexPB)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(doris.segment_v2.SegmentV2.BitmapIndexPB other) {
        if (other == doris.segment_v2.SegmentV2.BitmapIndexPB.getDefaultInstance()) return this;
        if (other.hasBitmapType()) {
          setBitmapType(other.getBitmapType());
        }
        if (other.hasHasNull()) {
          setHasNull(other.getHasNull());
        }
        if (other.hasDictColumn()) {
          mergeDictColumn(other.getDictColumn());
        }
        if (other.hasBitmapColumn()) {
          mergeBitmapColumn(other.getBitmapColumn());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (hasDictColumn()) {
          if (!getDictColumn().isInitialized()) {
            return false;
          }
        }
        if (hasBitmapColumn()) {
          if (!getBitmapColumn().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: {
                int tmpRaw = input.readEnum();
                doris.segment_v2.SegmentV2.BitmapIndexPB.BitmapType tmpValue =
                    doris.segment_v2.SegmentV2.BitmapIndexPB.BitmapType.forNumber(tmpRaw);
                if (tmpValue == null) {
                  mergeUnknownVarintField(1, tmpRaw);
                } else {
                  bitmapType_ = tmpRaw;
                  bitField0_ |= 0x00000001;
                }
                break;
              } // case 8
              case 16: {
                hasNull_ = input.readBool();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 26: {
                input.readMessage(
                    getDictColumnFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                input.readMessage(
                    getBitmapColumnFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              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 bitmapType_ = 1;
      /**
       * <code>optional .doris.segment_v2.BitmapIndexPB.BitmapType bitmap_type = 1 [default = ROARING_BITMAP];</code>
       * @return Whether the bitmapType field is set.
       */
      @java.lang.Override public boolean hasBitmapType() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional .doris.segment_v2.BitmapIndexPB.BitmapType bitmap_type = 1 [default = ROARING_BITMAP];</code>
       * @return The bitmapType.
       */
      @java.lang.Override
      public doris.segment_v2.SegmentV2.BitmapIndexPB.BitmapType getBitmapType() {
        doris.segment_v2.SegmentV2.BitmapIndexPB.BitmapType result = doris.segment_v2.SegmentV2.BitmapIndexPB.BitmapType.forNumber(bitmapType_);
        return result == null ? doris.segment_v2.SegmentV2.BitmapIndexPB.BitmapType.ROARING_BITMAP : result;
      }
      /**
       * <code>optional .doris.segment_v2.BitmapIndexPB.BitmapType bitmap_type = 1 [default = ROARING_BITMAP];</code>
       * @param value The bitmapType to set.
       * @return This builder for chaining.
       */
      public Builder setBitmapType(doris.segment_v2.SegmentV2.BitmapIndexPB.BitmapType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        bitmapType_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>optional .doris.segment_v2.BitmapIndexPB.BitmapType bitmap_type = 1 [default = ROARING_BITMAP];</code>
       * @return This builder for chaining.
       */
      public Builder clearBitmapType() {
        bitField0_ = (bitField0_ & ~0x00000001);
        bitmapType_ = 1;
        onChanged();
        return this;
      }

      private boolean hasNull_ ;
      /**
       * <pre>
       * required: whether the index contains null key.
       * if true, the last bitmap (ordinal:dict_column.num_values) in bitmap_column is
       * the bitmap for null key. we don't store null key in dict_column.
       * </pre>
       *
       * <code>optional bool has_null = 2;</code>
       * @return Whether the hasNull field is set.
       */
      @java.lang.Override
      public boolean hasHasNull() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * required: whether the index contains null key.
       * if true, the last bitmap (ordinal:dict_column.num_values) in bitmap_column is
       * the bitmap for null key. we don't store null key in dict_column.
       * </pre>
       *
       * <code>optional bool has_null = 2;</code>
       * @return The hasNull.
       */
      @java.lang.Override
      public boolean getHasNull() {
        return hasNull_;
      }
      /**
       * <pre>
       * required: whether the index contains null key.
       * if true, the last bitmap (ordinal:dict_column.num_values) in bitmap_column is
       * the bitmap for null key. we don't store null key in dict_column.
       * </pre>
       *
       * <code>optional bool has_null = 2;</code>
       * @param value The hasNull to set.
       * @return This builder for chaining.
       */
      public Builder setHasNull(boolean value) {

        hasNull_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * required: whether the index contains null key.
       * if true, the last bitmap (ordinal:dict_column.num_values) in bitmap_column is
       * the bitmap for null key. we don't store null key in dict_column.
       * </pre>
       *
       * <code>optional bool has_null = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearHasNull() {
        bitField0_ = (bitField0_ & ~0x00000002);
        hasNull_ = false;
        onChanged();
        return this;
      }

      private doris.segment_v2.SegmentV2.IndexedColumnMetaPB dictColumn_;
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.IndexedColumnMetaPB, doris.segment_v2.SegmentV2.IndexedColumnMetaPB.Builder, doris.segment_v2.SegmentV2.IndexedColumnMetaPBOrBuilder> dictColumnBuilder_;
      /**
       * <pre>
       * required: meta for ordered dictionary part
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexedColumnMetaPB dict_column = 3;</code>
       * @return Whether the dictColumn field is set.
       */
      public boolean hasDictColumn() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * required: meta for ordered dictionary part
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexedColumnMetaPB dict_column = 3;</code>
       * @return The dictColumn.
       */
      public doris.segment_v2.SegmentV2.IndexedColumnMetaPB getDictColumn() {
        if (dictColumnBuilder_ == null) {
          return dictColumn_ == null ? doris.segment_v2.SegmentV2.IndexedColumnMetaPB.getDefaultInstance() : dictColumn_;
        } else {
          return dictColumnBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * required: meta for ordered dictionary part
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexedColumnMetaPB dict_column = 3;</code>
       */
      public Builder setDictColumn(doris.segment_v2.SegmentV2.IndexedColumnMetaPB value) {
        if (dictColumnBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          dictColumn_ = value;
        } else {
          dictColumnBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * required: meta for ordered dictionary part
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexedColumnMetaPB dict_column = 3;</code>
       */
      public Builder setDictColumn(
          doris.segment_v2.SegmentV2.IndexedColumnMetaPB.Builder builderForValue) {
        if (dictColumnBuilder_ == null) {
          dictColumn_ = builderForValue.build();
        } else {
          dictColumnBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * required: meta for ordered dictionary part
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexedColumnMetaPB dict_column = 3;</code>
       */
      public Builder mergeDictColumn(doris.segment_v2.SegmentV2.IndexedColumnMetaPB value) {
        if (dictColumnBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            dictColumn_ != null &&
            dictColumn_ != doris.segment_v2.SegmentV2.IndexedColumnMetaPB.getDefaultInstance()) {
            getDictColumnBuilder().mergeFrom(value);
          } else {
            dictColumn_ = value;
          }
        } else {
          dictColumnBuilder_.mergeFrom(value);
        }
        if (dictColumn_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * required: meta for ordered dictionary part
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexedColumnMetaPB dict_column = 3;</code>
       */
      public Builder clearDictColumn() {
        bitField0_ = (bitField0_ & ~0x00000004);
        dictColumn_ = null;
        if (dictColumnBuilder_ != null) {
          dictColumnBuilder_.dispose();
          dictColumnBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * required: meta for ordered dictionary part
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexedColumnMetaPB dict_column = 3;</code>
       */
      public doris.segment_v2.SegmentV2.IndexedColumnMetaPB.Builder getDictColumnBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getDictColumnFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * required: meta for ordered dictionary part
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexedColumnMetaPB dict_column = 3;</code>
       */
      public doris.segment_v2.SegmentV2.IndexedColumnMetaPBOrBuilder getDictColumnOrBuilder() {
        if (dictColumnBuilder_ != null) {
          return dictColumnBuilder_.getMessageOrBuilder();
        } else {
          return dictColumn_ == null ?
              doris.segment_v2.SegmentV2.IndexedColumnMetaPB.getDefaultInstance() : dictColumn_;
        }
      }
      /**
       * <pre>
       * required: meta for ordered dictionary part
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexedColumnMetaPB dict_column = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.IndexedColumnMetaPB, doris.segment_v2.SegmentV2.IndexedColumnMetaPB.Builder, doris.segment_v2.SegmentV2.IndexedColumnMetaPBOrBuilder> 
          getDictColumnFieldBuilder() {
        if (dictColumnBuilder_ == null) {
          dictColumnBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              doris.segment_v2.SegmentV2.IndexedColumnMetaPB, doris.segment_v2.SegmentV2.IndexedColumnMetaPB.Builder, doris.segment_v2.SegmentV2.IndexedColumnMetaPBOrBuilder>(
                  getDictColumn(),
                  getParentForChildren(),
                  isClean());
          dictColumn_ = null;
        }
        return dictColumnBuilder_;
      }

      private doris.segment_v2.SegmentV2.IndexedColumnMetaPB bitmapColumn_;
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.IndexedColumnMetaPB, doris.segment_v2.SegmentV2.IndexedColumnMetaPB.Builder, doris.segment_v2.SegmentV2.IndexedColumnMetaPBOrBuilder> bitmapColumnBuilder_;
      /**
       * <pre>
       * required: meta for bitmaps part
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexedColumnMetaPB bitmap_column = 4;</code>
       * @return Whether the bitmapColumn field is set.
       */
      public boolean hasBitmapColumn() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       * required: meta for bitmaps part
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexedColumnMetaPB bitmap_column = 4;</code>
       * @return The bitmapColumn.
       */
      public doris.segment_v2.SegmentV2.IndexedColumnMetaPB getBitmapColumn() {
        if (bitmapColumnBuilder_ == null) {
          return bitmapColumn_ == null ? doris.segment_v2.SegmentV2.IndexedColumnMetaPB.getDefaultInstance() : bitmapColumn_;
        } else {
          return bitmapColumnBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * required: meta for bitmaps part
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexedColumnMetaPB bitmap_column = 4;</code>
       */
      public Builder setBitmapColumn(doris.segment_v2.SegmentV2.IndexedColumnMetaPB value) {
        if (bitmapColumnBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitmapColumn_ = value;
        } else {
          bitmapColumnBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * required: meta for bitmaps part
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexedColumnMetaPB bitmap_column = 4;</code>
       */
      public Builder setBitmapColumn(
          doris.segment_v2.SegmentV2.IndexedColumnMetaPB.Builder builderForValue) {
        if (bitmapColumnBuilder_ == null) {
          bitmapColumn_ = builderForValue.build();
        } else {
          bitmapColumnBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * required: meta for bitmaps part
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexedColumnMetaPB bitmap_column = 4;</code>
       */
      public Builder mergeBitmapColumn(doris.segment_v2.SegmentV2.IndexedColumnMetaPB value) {
        if (bitmapColumnBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0) &&
            bitmapColumn_ != null &&
            bitmapColumn_ != doris.segment_v2.SegmentV2.IndexedColumnMetaPB.getDefaultInstance()) {
            getBitmapColumnBuilder().mergeFrom(value);
          } else {
            bitmapColumn_ = value;
          }
        } else {
          bitmapColumnBuilder_.mergeFrom(value);
        }
        if (bitmapColumn_ != null) {
          bitField0_ |= 0x00000008;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * required: meta for bitmaps part
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexedColumnMetaPB bitmap_column = 4;</code>
       */
      public Builder clearBitmapColumn() {
        bitField0_ = (bitField0_ & ~0x00000008);
        bitmapColumn_ = null;
        if (bitmapColumnBuilder_ != null) {
          bitmapColumnBuilder_.dispose();
          bitmapColumnBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * required: meta for bitmaps part
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexedColumnMetaPB bitmap_column = 4;</code>
       */
      public doris.segment_v2.SegmentV2.IndexedColumnMetaPB.Builder getBitmapColumnBuilder() {
        bitField0_ |= 0x00000008;
        onChanged();
        return getBitmapColumnFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * required: meta for bitmaps part
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexedColumnMetaPB bitmap_column = 4;</code>
       */
      public doris.segment_v2.SegmentV2.IndexedColumnMetaPBOrBuilder getBitmapColumnOrBuilder() {
        if (bitmapColumnBuilder_ != null) {
          return bitmapColumnBuilder_.getMessageOrBuilder();
        } else {
          return bitmapColumn_ == null ?
              doris.segment_v2.SegmentV2.IndexedColumnMetaPB.getDefaultInstance() : bitmapColumn_;
        }
      }
      /**
       * <pre>
       * required: meta for bitmaps part
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexedColumnMetaPB bitmap_column = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.IndexedColumnMetaPB, doris.segment_v2.SegmentV2.IndexedColumnMetaPB.Builder, doris.segment_v2.SegmentV2.IndexedColumnMetaPBOrBuilder> 
          getBitmapColumnFieldBuilder() {
        if (bitmapColumnBuilder_ == null) {
          bitmapColumnBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              doris.segment_v2.SegmentV2.IndexedColumnMetaPB, doris.segment_v2.SegmentV2.IndexedColumnMetaPB.Builder, doris.segment_v2.SegmentV2.IndexedColumnMetaPBOrBuilder>(
                  getBitmapColumn(),
                  getParentForChildren(),
                  isClean());
          bitmapColumn_ = null;
        }
        return bitmapColumnBuilder_;
      }
      @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.segment_v2.BitmapIndexPB)
    }

    // @@protoc_insertion_point(class_scope:doris.segment_v2.BitmapIndexPB)
    private static final doris.segment_v2.SegmentV2.BitmapIndexPB DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new doris.segment_v2.SegmentV2.BitmapIndexPB();
    }

    public static doris.segment_v2.SegmentV2.BitmapIndexPB getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<BitmapIndexPB>
        PARSER = new com.google.protobuf.AbstractParser<BitmapIndexPB>() {
      @java.lang.Override
      public BitmapIndexPB 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<BitmapIndexPB> parser() {
      return PARSER;
    }

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

    @java.lang.Override
    public doris.segment_v2.SegmentV2.BitmapIndexPB getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BloomFilterIndexPBOrBuilder extends
      // @@protoc_insertion_point(interface_extends:doris.segment_v2.BloomFilterIndexPB)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * required
     * </pre>
     *
     * <code>optional .doris.segment_v2.HashStrategyPB hash_strategy = 1;</code>
     * @return Whether the hashStrategy field is set.
     */
    boolean hasHashStrategy();
    /**
     * <pre>
     * required
     * </pre>
     *
     * <code>optional .doris.segment_v2.HashStrategyPB hash_strategy = 1;</code>
     * @return The hashStrategy.
     */
    doris.segment_v2.SegmentV2.HashStrategyPB getHashStrategy();

    /**
     * <code>optional .doris.segment_v2.BloomFilterAlgorithmPB algorithm = 2;</code>
     * @return Whether the algorithm field is set.
     */
    boolean hasAlgorithm();
    /**
     * <code>optional .doris.segment_v2.BloomFilterAlgorithmPB algorithm = 2;</code>
     * @return The algorithm.
     */
    doris.segment_v2.SegmentV2.BloomFilterAlgorithmPB getAlgorithm();

    /**
     * <pre>
     * required: meta for bloom filters
     * </pre>
     *
     * <code>optional .doris.segment_v2.IndexedColumnMetaPB bloom_filter = 3;</code>
     * @return Whether the bloomFilter field is set.
     */
    boolean hasBloomFilter();
    /**
     * <pre>
     * required: meta for bloom filters
     * </pre>
     *
     * <code>optional .doris.segment_v2.IndexedColumnMetaPB bloom_filter = 3;</code>
     * @return The bloomFilter.
     */
    doris.segment_v2.SegmentV2.IndexedColumnMetaPB getBloomFilter();
    /**
     * <pre>
     * required: meta for bloom filters
     * </pre>
     *
     * <code>optional .doris.segment_v2.IndexedColumnMetaPB bloom_filter = 3;</code>
     */
    doris.segment_v2.SegmentV2.IndexedColumnMetaPBOrBuilder getBloomFilterOrBuilder();
  }
  /**
   * Protobuf type {@code doris.segment_v2.BloomFilterIndexPB}
   */
  public static final class BloomFilterIndexPB extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:doris.segment_v2.BloomFilterIndexPB)
      BloomFilterIndexPBOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BloomFilterIndexPB.newBuilder() to construct.
    private BloomFilterIndexPB(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private BloomFilterIndexPB() {
      hashStrategy_ = 0;
      algorithm_ = 0;
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_BloomFilterIndexPB_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_BloomFilterIndexPB_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              doris.segment_v2.SegmentV2.BloomFilterIndexPB.class, doris.segment_v2.SegmentV2.BloomFilterIndexPB.Builder.class);
    }

    private int bitField0_;
    public static final int HASH_STRATEGY_FIELD_NUMBER = 1;
    private int hashStrategy_ = 0;
    /**
     * <pre>
     * required
     * </pre>
     *
     * <code>optional .doris.segment_v2.HashStrategyPB hash_strategy = 1;</code>
     * @return Whether the hashStrategy field is set.
     */
    @java.lang.Override public boolean hasHashStrategy() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * required
     * </pre>
     *
     * <code>optional .doris.segment_v2.HashStrategyPB hash_strategy = 1;</code>
     * @return The hashStrategy.
     */
    @java.lang.Override public doris.segment_v2.SegmentV2.HashStrategyPB getHashStrategy() {
      doris.segment_v2.SegmentV2.HashStrategyPB result = doris.segment_v2.SegmentV2.HashStrategyPB.forNumber(hashStrategy_);
      return result == null ? doris.segment_v2.SegmentV2.HashStrategyPB.HASH_MURMUR3_X64_64 : result;
    }

    public static final int ALGORITHM_FIELD_NUMBER = 2;
    private int algorithm_ = 0;
    /**
     * <code>optional .doris.segment_v2.BloomFilterAlgorithmPB algorithm = 2;</code>
     * @return Whether the algorithm field is set.
     */
    @java.lang.Override public boolean hasAlgorithm() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <code>optional .doris.segment_v2.BloomFilterAlgorithmPB algorithm = 2;</code>
     * @return The algorithm.
     */
    @java.lang.Override public doris.segment_v2.SegmentV2.BloomFilterAlgorithmPB getAlgorithm() {
      doris.segment_v2.SegmentV2.BloomFilterAlgorithmPB result = doris.segment_v2.SegmentV2.BloomFilterAlgorithmPB.forNumber(algorithm_);
      return result == null ? doris.segment_v2.SegmentV2.BloomFilterAlgorithmPB.BLOCK_BLOOM_FILTER : result;
    }

    public static final int BLOOM_FILTER_FIELD_NUMBER = 3;
    private doris.segment_v2.SegmentV2.IndexedColumnMetaPB bloomFilter_;
    /**
     * <pre>
     * required: meta for bloom filters
     * </pre>
     *
     * <code>optional .doris.segment_v2.IndexedColumnMetaPB bloom_filter = 3;</code>
     * @return Whether the bloomFilter field is set.
     */
    @java.lang.Override
    public boolean hasBloomFilter() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * <pre>
     * required: meta for bloom filters
     * </pre>
     *
     * <code>optional .doris.segment_v2.IndexedColumnMetaPB bloom_filter = 3;</code>
     * @return The bloomFilter.
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.IndexedColumnMetaPB getBloomFilter() {
      return bloomFilter_ == null ? doris.segment_v2.SegmentV2.IndexedColumnMetaPB.getDefaultInstance() : bloomFilter_;
    }
    /**
     * <pre>
     * required: meta for bloom filters
     * </pre>
     *
     * <code>optional .doris.segment_v2.IndexedColumnMetaPB bloom_filter = 3;</code>
     */
    @java.lang.Override
    public doris.segment_v2.SegmentV2.IndexedColumnMetaPBOrBuilder getBloomFilterOrBuilder() {
      return bloomFilter_ == null ? doris.segment_v2.SegmentV2.IndexedColumnMetaPB.getDefaultInstance() : bloomFilter_;
    }

    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 (hasBloomFilter()) {
        if (!getBloomFilter().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.writeEnum(1, hashStrategy_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeEnum(2, algorithm_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(3, getBloomFilter());
      }
      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, hashStrategy_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(2, algorithm_);
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getBloomFilter());
      }
      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 doris.segment_v2.SegmentV2.BloomFilterIndexPB)) {
        return super.equals(obj);
      }
      doris.segment_v2.SegmentV2.BloomFilterIndexPB other = (doris.segment_v2.SegmentV2.BloomFilterIndexPB) obj;

      if (hasHashStrategy() != other.hasHashStrategy()) return false;
      if (hasHashStrategy()) {
        if (hashStrategy_ != other.hashStrategy_) return false;
      }
      if (hasAlgorithm() != other.hasAlgorithm()) return false;
      if (hasAlgorithm()) {
        if (algorithm_ != other.algorithm_) return false;
      }
      if (hasBloomFilter() != other.hasBloomFilter()) return false;
      if (hasBloomFilter()) {
        if (!getBloomFilter()
            .equals(other.getBloomFilter())) 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 (hasHashStrategy()) {
        hash = (37 * hash) + HASH_STRATEGY_FIELD_NUMBER;
        hash = (53 * hash) + hashStrategy_;
      }
      if (hasAlgorithm()) {
        hash = (37 * hash) + ALGORITHM_FIELD_NUMBER;
        hash = (53 * hash) + algorithm_;
      }
      if (hasBloomFilter()) {
        hash = (37 * hash) + BLOOM_FILTER_FIELD_NUMBER;
        hash = (53 * hash) + getBloomFilter().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static doris.segment_v2.SegmentV2.BloomFilterIndexPB parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.BloomFilterIndexPB parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.BloomFilterIndexPB parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.BloomFilterIndexPB parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.BloomFilterIndexPB parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static doris.segment_v2.SegmentV2.BloomFilterIndexPB parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static doris.segment_v2.SegmentV2.BloomFilterIndexPB parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.segment_v2.SegmentV2.BloomFilterIndexPB 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 doris.segment_v2.SegmentV2.BloomFilterIndexPB parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static doris.segment_v2.SegmentV2.BloomFilterIndexPB 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 doris.segment_v2.SegmentV2.BloomFilterIndexPB parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static doris.segment_v2.SegmentV2.BloomFilterIndexPB 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(doris.segment_v2.SegmentV2.BloomFilterIndexPB 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.segment_v2.BloomFilterIndexPB}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:doris.segment_v2.BloomFilterIndexPB)
        doris.segment_v2.SegmentV2.BloomFilterIndexPBOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_BloomFilterIndexPB_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_BloomFilterIndexPB_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                doris.segment_v2.SegmentV2.BloomFilterIndexPB.class, doris.segment_v2.SegmentV2.BloomFilterIndexPB.Builder.class);
      }

      // Construct using doris.segment_v2.SegmentV2.BloomFilterIndexPB.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getBloomFilterFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        hashStrategy_ = 0;
        algorithm_ = 0;
        bloomFilter_ = null;
        if (bloomFilterBuilder_ != null) {
          bloomFilterBuilder_.dispose();
          bloomFilterBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return doris.segment_v2.SegmentV2.internal_static_doris_segment_v2_BloomFilterIndexPB_descriptor;
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.BloomFilterIndexPB getDefaultInstanceForType() {
        return doris.segment_v2.SegmentV2.BloomFilterIndexPB.getDefaultInstance();
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.BloomFilterIndexPB build() {
        doris.segment_v2.SegmentV2.BloomFilterIndexPB result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public doris.segment_v2.SegmentV2.BloomFilterIndexPB buildPartial() {
        doris.segment_v2.SegmentV2.BloomFilterIndexPB result = new doris.segment_v2.SegmentV2.BloomFilterIndexPB(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(doris.segment_v2.SegmentV2.BloomFilterIndexPB result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.hashStrategy_ = hashStrategy_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.algorithm_ = algorithm_;
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.bloomFilter_ = bloomFilterBuilder_ == null
              ? bloomFilter_
              : bloomFilterBuilder_.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 doris.segment_v2.SegmentV2.BloomFilterIndexPB) {
          return mergeFrom((doris.segment_v2.SegmentV2.BloomFilterIndexPB)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(doris.segment_v2.SegmentV2.BloomFilterIndexPB other) {
        if (other == doris.segment_v2.SegmentV2.BloomFilterIndexPB.getDefaultInstance()) return this;
        if (other.hasHashStrategy()) {
          setHashStrategy(other.getHashStrategy());
        }
        if (other.hasAlgorithm()) {
          setAlgorithm(other.getAlgorithm());
        }
        if (other.hasBloomFilter()) {
          mergeBloomFilter(other.getBloomFilter());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        if (hasBloomFilter()) {
          if (!getBloomFilter().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: {
                int tmpRaw = input.readEnum();
                doris.segment_v2.SegmentV2.HashStrategyPB tmpValue =
                    doris.segment_v2.SegmentV2.HashStrategyPB.forNumber(tmpRaw);
                if (tmpValue == null) {
                  mergeUnknownVarintField(1, tmpRaw);
                } else {
                  hashStrategy_ = tmpRaw;
                  bitField0_ |= 0x00000001;
                }
                break;
              } // case 8
              case 16: {
                int tmpRaw = input.readEnum();
                doris.segment_v2.SegmentV2.BloomFilterAlgorithmPB tmpValue =
                    doris.segment_v2.SegmentV2.BloomFilterAlgorithmPB.forNumber(tmpRaw);
                if (tmpValue == null) {
                  mergeUnknownVarintField(2, tmpRaw);
                } else {
                  algorithm_ = tmpRaw;
                  bitField0_ |= 0x00000002;
                }
                break;
              } // case 16
              case 26: {
                input.readMessage(
                    getBloomFilterFieldBuilder().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 hashStrategy_ = 0;
      /**
       * <pre>
       * required
       * </pre>
       *
       * <code>optional .doris.segment_v2.HashStrategyPB hash_strategy = 1;</code>
       * @return Whether the hashStrategy field is set.
       */
      @java.lang.Override public boolean hasHashStrategy() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * required
       * </pre>
       *
       * <code>optional .doris.segment_v2.HashStrategyPB hash_strategy = 1;</code>
       * @return The hashStrategy.
       */
      @java.lang.Override
      public doris.segment_v2.SegmentV2.HashStrategyPB getHashStrategy() {
        doris.segment_v2.SegmentV2.HashStrategyPB result = doris.segment_v2.SegmentV2.HashStrategyPB.forNumber(hashStrategy_);
        return result == null ? doris.segment_v2.SegmentV2.HashStrategyPB.HASH_MURMUR3_X64_64 : result;
      }
      /**
       * <pre>
       * required
       * </pre>
       *
       * <code>optional .doris.segment_v2.HashStrategyPB hash_strategy = 1;</code>
       * @param value The hashStrategy to set.
       * @return This builder for chaining.
       */
      public Builder setHashStrategy(doris.segment_v2.SegmentV2.HashStrategyPB value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        hashStrategy_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * required
       * </pre>
       *
       * <code>optional .doris.segment_v2.HashStrategyPB hash_strategy = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearHashStrategy() {
        bitField0_ = (bitField0_ & ~0x00000001);
        hashStrategy_ = 0;
        onChanged();
        return this;
      }

      private int algorithm_ = 0;
      /**
       * <code>optional .doris.segment_v2.BloomFilterAlgorithmPB algorithm = 2;</code>
       * @return Whether the algorithm field is set.
       */
      @java.lang.Override public boolean hasAlgorithm() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional .doris.segment_v2.BloomFilterAlgorithmPB algorithm = 2;</code>
       * @return The algorithm.
       */
      @java.lang.Override
      public doris.segment_v2.SegmentV2.BloomFilterAlgorithmPB getAlgorithm() {
        doris.segment_v2.SegmentV2.BloomFilterAlgorithmPB result = doris.segment_v2.SegmentV2.BloomFilterAlgorithmPB.forNumber(algorithm_);
        return result == null ? doris.segment_v2.SegmentV2.BloomFilterAlgorithmPB.BLOCK_BLOOM_FILTER : result;
      }
      /**
       * <code>optional .doris.segment_v2.BloomFilterAlgorithmPB algorithm = 2;</code>
       * @param value The algorithm to set.
       * @return This builder for chaining.
       */
      public Builder setAlgorithm(doris.segment_v2.SegmentV2.BloomFilterAlgorithmPB value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000002;
        algorithm_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>optional .doris.segment_v2.BloomFilterAlgorithmPB algorithm = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearAlgorithm() {
        bitField0_ = (bitField0_ & ~0x00000002);
        algorithm_ = 0;
        onChanged();
        return this;
      }

      private doris.segment_v2.SegmentV2.IndexedColumnMetaPB bloomFilter_;
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.IndexedColumnMetaPB, doris.segment_v2.SegmentV2.IndexedColumnMetaPB.Builder, doris.segment_v2.SegmentV2.IndexedColumnMetaPBOrBuilder> bloomFilterBuilder_;
      /**
       * <pre>
       * required: meta for bloom filters
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexedColumnMetaPB bloom_filter = 3;</code>
       * @return Whether the bloomFilter field is set.
       */
      public boolean hasBloomFilter() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * required: meta for bloom filters
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexedColumnMetaPB bloom_filter = 3;</code>
       * @return The bloomFilter.
       */
      public doris.segment_v2.SegmentV2.IndexedColumnMetaPB getBloomFilter() {
        if (bloomFilterBuilder_ == null) {
          return bloomFilter_ == null ? doris.segment_v2.SegmentV2.IndexedColumnMetaPB.getDefaultInstance() : bloomFilter_;
        } else {
          return bloomFilterBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * required: meta for bloom filters
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexedColumnMetaPB bloom_filter = 3;</code>
       */
      public Builder setBloomFilter(doris.segment_v2.SegmentV2.IndexedColumnMetaPB value) {
        if (bloomFilterBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          bloomFilter_ = value;
        } else {
          bloomFilterBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * required: meta for bloom filters
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexedColumnMetaPB bloom_filter = 3;</code>
       */
      public Builder setBloomFilter(
          doris.segment_v2.SegmentV2.IndexedColumnMetaPB.Builder builderForValue) {
        if (bloomFilterBuilder_ == null) {
          bloomFilter_ = builderForValue.build();
        } else {
          bloomFilterBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * required: meta for bloom filters
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexedColumnMetaPB bloom_filter = 3;</code>
       */
      public Builder mergeBloomFilter(doris.segment_v2.SegmentV2.IndexedColumnMetaPB value) {
        if (bloomFilterBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            bloomFilter_ != null &&
            bloomFilter_ != doris.segment_v2.SegmentV2.IndexedColumnMetaPB.getDefaultInstance()) {
            getBloomFilterBuilder().mergeFrom(value);
          } else {
            bloomFilter_ = value;
          }
        } else {
          bloomFilterBuilder_.mergeFrom(value);
        }
        if (bloomFilter_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * required: meta for bloom filters
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexedColumnMetaPB bloom_filter = 3;</code>
       */
      public Builder clearBloomFilter() {
        bitField0_ = (bitField0_ & ~0x00000004);
        bloomFilter_ = null;
        if (bloomFilterBuilder_ != null) {
          bloomFilterBuilder_.dispose();
          bloomFilterBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * required: meta for bloom filters
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexedColumnMetaPB bloom_filter = 3;</code>
       */
      public doris.segment_v2.SegmentV2.IndexedColumnMetaPB.Builder getBloomFilterBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getBloomFilterFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * required: meta for bloom filters
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexedColumnMetaPB bloom_filter = 3;</code>
       */
      public doris.segment_v2.SegmentV2.IndexedColumnMetaPBOrBuilder getBloomFilterOrBuilder() {
        if (bloomFilterBuilder_ != null) {
          return bloomFilterBuilder_.getMessageOrBuilder();
        } else {
          return bloomFilter_ == null ?
              doris.segment_v2.SegmentV2.IndexedColumnMetaPB.getDefaultInstance() : bloomFilter_;
        }
      }
      /**
       * <pre>
       * required: meta for bloom filters
       * </pre>
       *
       * <code>optional .doris.segment_v2.IndexedColumnMetaPB bloom_filter = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          doris.segment_v2.SegmentV2.IndexedColumnMetaPB, doris.segment_v2.SegmentV2.IndexedColumnMetaPB.Builder, doris.segment_v2.SegmentV2.IndexedColumnMetaPBOrBuilder> 
          getBloomFilterFieldBuilder() {
        if (bloomFilterBuilder_ == null) {
          bloomFilterBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              doris.segment_v2.SegmentV2.IndexedColumnMetaPB, doris.segment_v2.SegmentV2.IndexedColumnMetaPB.Builder, doris.segment_v2.SegmentV2.IndexedColumnMetaPBOrBuilder>(
                  getBloomFilter(),
                  getParentForChildren(),
                  isClean());
          bloomFilter_ = null;
        }
        return bloomFilterBuilder_;
      }
      @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.segment_v2.BloomFilterIndexPB)
    }

    // @@protoc_insertion_point(class_scope:doris.segment_v2.BloomFilterIndexPB)
    private static final doris.segment_v2.SegmentV2.BloomFilterIndexPB DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new doris.segment_v2.SegmentV2.BloomFilterIndexPB();
    }

    public static doris.segment_v2.SegmentV2.BloomFilterIndexPB getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    @java.lang.Deprecated public static final com.google.protobuf.Parser<BloomFilterIndexPB>
        PARSER = new com.google.protobuf.AbstractParser<BloomFilterIndexPB>() {
      @java.lang.Override
      public BloomFilterIndexPB 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<BloomFilterIndexPB> parser() {
      return PARSER;
    }

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

    @java.lang.Override
    public doris.segment_v2.SegmentV2.BloomFilterIndexPB getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_doris_segment_v2_PagePointerPB_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_doris_segment_v2_PagePointerPB_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_doris_segment_v2_MetadataPairPB_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_doris_segment_v2_MetadataPairPB_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_doris_segment_v2_DataPageFooterPB_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_doris_segment_v2_DataPageFooterPB_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_doris_segment_v2_IndexPageFooterPB_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_doris_segment_v2_IndexPageFooterPB_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_doris_segment_v2_DictPageFooterPB_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_doris_segment_v2_DictPageFooterPB_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_doris_segment_v2_ShortKeyFooterPB_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_doris_segment_v2_ShortKeyFooterPB_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_doris_segment_v2_PageFooterPB_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_doris_segment_v2_PageFooterPB_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_doris_segment_v2_ZoneMapPB_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_doris_segment_v2_ZoneMapPB_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_doris_segment_v2_ColumnPathPartInfo_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_doris_segment_v2_ColumnPathPartInfo_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_doris_segment_v2_ColumnPathInfo_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_doris_segment_v2_ColumnPathInfo_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_doris_segment_v2_ColumnMetaPB_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_doris_segment_v2_ColumnMetaPB_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_doris_segment_v2_PrimaryKeyIndexMetaPB_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_doris_segment_v2_PrimaryKeyIndexMetaPB_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_doris_segment_v2_SegmentFooterPB_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_doris_segment_v2_SegmentFooterPB_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_doris_segment_v2_BTreeMetaPB_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_doris_segment_v2_BTreeMetaPB_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_doris_segment_v2_IndexedColumnMetaPB_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_doris_segment_v2_IndexedColumnMetaPB_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_doris_segment_v2_ColumnIndexMetaPB_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_doris_segment_v2_ColumnIndexMetaPB_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_doris_segment_v2_OrdinalIndexPB_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_doris_segment_v2_OrdinalIndexPB_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_doris_segment_v2_ZoneMapIndexPB_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_doris_segment_v2_ZoneMapIndexPB_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_doris_segment_v2_BitmapIndexPB_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_doris_segment_v2_BitmapIndexPB_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_doris_segment_v2_BloomFilterIndexPB_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_doris_segment_v2_BloomFilterIndexPB_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\020segment_v2.proto\022\020doris.segment_v2\"-\n\r" +
      "PagePointerPB\022\016\n\006offset\030\001 \002(\004\022\014\n\004size\030\002 " +
      "\002(\r\",\n\016MetadataPairPB\022\013\n\003key\030\001 \001(\t\022\r\n\005va" +
      "lue\030\002 \001(\014\"t\n\020DataPageFooterPB\022\025\n\rfirst_o" +
      "rdinal\030\001 \001(\004\022\022\n\nnum_values\030\002 \001(\004\022\024\n\014null" +
      "map_size\030\003 \001(\r\022\037\n\027next_array_item_ordina" +
      "l\030\004 \001(\004\"\235\001\n\021IndexPageFooterPB\022\023\n\013num_ent" +
      "ries\030\001 \001(\r\0226\n\004type\030\002 \001(\0162(.doris.segment" +
      "_v2.IndexPageFooterPB.Type\";\n\004Type\022\033\n\027UN" +
      "KNOWN_INDEX_PAGE_TYPE\020\000\022\010\n\004LEAF\020\001\022\014\n\010INT" +
      "ERNAL\020\002\"F\n\020DictPageFooterPB\0222\n\010encoding\030" +
      "\001 \001(\0162 .doris.segment_v2.EncodingTypePB\"" +
      "\230\001\n\020ShortKeyFooterPB\022\021\n\tnum_items\030\001 \001(\r\022" +
      "\021\n\tkey_bytes\030\002 \001(\r\022\024\n\014offset_bytes\030\003 \001(\r" +
      "\022\022\n\nsegment_id\030\004 \001(\r\022\032\n\022num_rows_per_blo" +
      "ck\030\005 \001(\r\022\030\n\020num_segment_rows\030\006 \001(\r\"\324\002\n\014P" +
      "ageFooterPB\022*\n\004type\030\001 \001(\0162\034.doris.segmen" +
      "t_v2.PageTypePB\022\031\n\021uncompressed_size\030\002 \001" +
      "(\r\022<\n\020data_page_footer\030\007 \001(\0132\".doris.seg" +
      "ment_v2.DataPageFooterPB\022>\n\021index_page_f" +
      "ooter\030\010 \001(\0132#.doris.segment_v2.IndexPage" +
      "FooterPB\022<\n\020dict_page_footer\030\t \001(\0132\".dor" +
      "is.segment_v2.DictPageFooterPB\022A\n\025short_" +
      "key_page_footer\030\n \001(\0132\".doris.segment_v2" +
      ".ShortKeyFooterPB\"f\n\tZoneMapPB\022\013\n\003min\030\001 " +
      "\001(\014\022\013\n\003max\030\002 \001(\014\022\020\n\010has_null\030\003 \001(\010\022\024\n\014ha" +
      "s_not_null\030\004 \001(\010\022\027\n\010pass_all\030\005 \001(\010:\005fals" +
      "e\"S\n\022ColumnPathPartInfo\022\013\n\003key\030\001 \001(\t\022\021\n\t" +
      "is_nested\030\002 \001(\010\022\035\n\025anonymous_array_level" +
      "\030\003 \001(\r\"\223\001\n\016ColumnPathInfo\022\014\n\004path\030\001 \001(\t\022" +
      "=\n\017path_part_infos\030\002 \003(\0132$.doris.segment" +
      "_v2.ColumnPathPartInfo\022\022\n\nhas_nested\030\003 \001" +
      "(\010\022 \n\030parrent_column_unique_id\030\004 \001(\r\"\242\005\n" +
      "\014ColumnMetaPB\022\021\n\tcolumn_id\030\001 \001(\r\022\021\n\tuniq" +
      "ue_id\030\002 \001(\r\022\014\n\004type\030\003 \001(\005\022\016\n\006length\030\004 \001(" +
      "\005\0222\n\010encoding\030\005 \001(\0162 .doris.segment_v2.E" +
      "ncodingTypePB\0228\n\013compression\030\006 \001(\0162#.dor" +
      "is.segment_v2.CompressionTypePB\022\023\n\013is_nu" +
      "llable\030\007 \001(\010\0224\n\007indexes\030\010 \003(\0132#.doris.se" +
      "gment_v2.ColumnIndexMetaPB\0222\n\tdict_page\030" +
      "\t \001(\0132\037.doris.segment_v2.PagePointerPB\0228" +
      "\n\020children_columns\030\n \003(\0132\036.doris.segment" +
      "_v2.ColumnMetaPB\022\020\n\010num_rows\030\013 \001(\004\022\035\n\025ch" +
      "ildren_column_names\030\014 \003(\t\022:\n\020column_path" +
      "_info\030\r \001(\0132 .doris.segment_v2.ColumnPat" +
      "hInfo\022\025\n\rdefault_value\030\016 \001(\014\022\021\n\tprecisio" +
      "n\030\017 \001(\005\022\014\n\004frac\030\020 \001(\005\0226\n\016sparse_columns\030" +
      "\021 \003(\0132\036.doris.segment_v2.ColumnMetaPB\022\032\n" +
      "\022result_is_nullable\030\022 \001(\010\022\025\n\rfunction_na" +
      "me\030\023 \001(\t\022\027\n\017be_exec_version\030\024 \001(\005\"\274\001\n\025Pr" +
      "imaryKeyIndexMetaPB\022@\n\021primary_key_index" +
      "\030\001 \001(\0132%.doris.segment_v2.IndexedColumnM" +
      "etaPB\022?\n\022bloom_filter_index\030\002 \001(\0132#.dori" +
      "s.segment_v2.ColumnIndexMetaPB\022\017\n\007min_ke" +
      "y\030\003 \001(\014\022\017\n\007max_key\030\004 \001(\014\"\272\003\n\017SegmentFoot" +
      "erPB\022\022\n\007version\030\001 \001(\r:\0011\022/\n\007columns\030\002 \003(" +
      "\0132\036.doris.segment_v2.ColumnMetaPB\022\020\n\010num" +
      "_rows\030\003 \001(\r\022\027\n\017index_footprint\030\004 \001(\004\022\026\n\016" +
      "data_footprint\030\005 \001(\004\022\032\n\022raw_data_footpri" +
      "nt\030\006 \001(\004\022@\n\rcompress_type\030\007 \001(\0162#.doris." +
      "segment_v2.CompressionTypePB:\004LZ4F\0229\n\017fi" +
      "le_meta_datas\030\010 \003(\0132 .doris.segment_v2.M" +
      "etadataPairPB\022=\n\024short_key_index_page\030\t " +
      "\001(\0132\037.doris.segment_v2.PagePointerPB\022G\n\026" +
      "primary_key_index_meta\030\n \001(\0132\'.doris.seg" +
      "ment_v2.PrimaryKeyIndexMetaPB\"\\\n\013BTreeMe" +
      "taPB\0222\n\troot_page\030\001 \001(\0132\037.doris.segment_" +
      "v2.PagePointerPB\022\031\n\021is_root_data_page\030\002 " +
      "\001(\010\"\274\002\n\023IndexedColumnMetaPB\022\021\n\tdata_type" +
      "\030\001 \001(\005\0222\n\010encoding\030\002 \001(\0162 .doris.segment" +
      "_v2.EncodingTypePB\022\022\n\nnum_values\030\003 \001(\003\0229" +
      "\n\022ordinal_index_meta\030\004 \001(\0132\035.doris.segme" +
      "nt_v2.BTreeMetaPB\0227\n\020value_index_meta\030\005 " +
      "\001(\0132\035.doris.segment_v2.BTreeMetaPB\022H\n\013co" +
      "mpression\030\006 \001(\0162#.doris.segment_v2.Compr" +
      "essionTypePB:\016NO_COMPRESSION\022\014\n\004size\030\007 \001" +
      "(\004\"\262\002\n\021ColumnIndexMetaPB\0221\n\004type\030\001 \001(\0162#" +
      ".doris.segment_v2.ColumnIndexTypePB\0227\n\ro" +
      "rdinal_index\030\007 \001(\0132 .doris.segment_v2.Or" +
      "dinalIndexPB\0228\n\016zone_map_index\030\010 \001(\0132 .d" +
      "oris.segment_v2.ZoneMapIndexPB\0225\n\014bitmap" +
      "_index\030\t \001(\0132\037.doris.segment_v2.BitmapIn" +
      "dexPB\022@\n\022bloom_filter_index\030\n \001(\0132$.dori" +
      "s.segment_v2.BloomFilterIndexPB\"B\n\016Ordin" +
      "alIndexPB\0220\n\troot_page\030\001 \001(\0132\035.doris.seg" +
      "ment_v2.BTreeMetaPB\"\206\001\n\016ZoneMapIndexPB\0225" +
      "\n\020segment_zone_map\030\001 \001(\0132\033.doris.segment" +
      "_v2.ZoneMapPB\022=\n\016page_zone_maps\030\002 \001(\0132%." +
      "doris.segment_v2.IndexedColumnMetaPB\"\247\002\n" +
      "\rBitmapIndexPB\022O\n\013bitmap_type\030\001 \001(\0162*.do" +
      "ris.segment_v2.BitmapIndexPB.BitmapType:" +
      "\016ROARING_BITMAP\022\020\n\010has_null\030\002 \001(\010\022:\n\013dic" +
      "t_column\030\003 \001(\0132%.doris.segment_v2.Indexe" +
      "dColumnMetaPB\022<\n\rbitmap_column\030\004 \001(\0132%.d" +
      "oris.segment_v2.IndexedColumnMetaPB\"9\n\nB" +
      "itmapType\022\027\n\023UNKNOWN_BITMAP_TYPE\020\000\022\022\n\016RO" +
      "ARING_BITMAP\020\001\"\307\001\n\022BloomFilterIndexPB\0227\n" +
      "\rhash_strategy\030\001 \001(\0162 .doris.segment_v2." +
      "HashStrategyPB\022;\n\talgorithm\030\002 \001(\0162(.dori" +
      "s.segment_v2.BloomFilterAlgorithmPB\022;\n\014b" +
      "loom_filter\030\003 \001(\0132%.doris.segment_v2.Ind" +
      "exedColumnMetaPB*\244\001\n\016EncodingTypePB\022\024\n\020U" +
      "NKNOWN_ENCODING\020\000\022\024\n\020DEFAULT_ENCODING\020\001\022" +
      "\022\n\016PLAIN_ENCODING\020\002\022\023\n\017PREFIX_ENCODING\020\003" +
      "\022\007\n\003RLE\020\004\022\021\n\rDICT_ENCODING\020\005\022\017\n\013BIT_SHUF" +
      "FLE\020\006\022\020\n\014FOR_ENCODING\020\007*\227\001\n\021CompressionT" +
      "ypePB\022\027\n\023UNKNOWN_COMPRESSION\020\000\022\027\n\023DEFAUL" +
      "T_COMPRESSION\020\001\022\022\n\016NO_COMPRESSION\020\002\022\n\n\006S" +
      "NAPPY\020\003\022\007\n\003LZ4\020\004\022\010\n\004LZ4F\020\005\022\010\n\004ZLIB\020\006\022\010\n\004" +
      "ZSTD\020\007\022\t\n\005LZ4HC\020\010*\207\001\n\nPageTypePB\022\025\n\021UNKN" +
      "OWN_PAGE_TYPE\020\000\022\r\n\tDATA_PAGE\020\001\022\016\n\nINDEX_" +
      "PAGE\020\002\022\023\n\017DICTIONARY_PAGE\020\003\022\022\n\016SHORT_KEY" +
      "_PAGE\020\004\022\032\n\026PRIMARY_KEY_INDEX_PAGE\020\005*|\n\021C" +
      "olumnIndexTypePB\022\026\n\022UNKNOWN_INDEX_TYPE\020\000" +
      "\022\021\n\rORDINAL_INDEX\020\001\022\022\n\016ZONE_MAP_INDEX\020\002\022" +
      "\020\n\014BITMAP_INDEX\020\003\022\026\n\022BLOOM_FILTER_INDEX\020" +
      "\004*;\n\016HashStrategyPB\022\027\n\023HASH_MURMUR3_X64_" +
      "64\020\000\022\020\n\014CITY_HASH_64\020\001*b\n\026BloomFilterAlg" +
      "orithmPB\022\026\n\022BLOCK_BLOOM_FILTER\020\000\022\030\n\024CLAS" +
      "SIC_BLOOM_FILTER\020\001\022\026\n\022NGRAM_BLOOM_FILTER" +
      "\020\002"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        });
    internal_static_doris_segment_v2_PagePointerPB_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_doris_segment_v2_PagePointerPB_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_doris_segment_v2_PagePointerPB_descriptor,
        new java.lang.String[] { "Offset", "Size", });
    internal_static_doris_segment_v2_MetadataPairPB_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_doris_segment_v2_MetadataPairPB_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_doris_segment_v2_MetadataPairPB_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_doris_segment_v2_DataPageFooterPB_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_doris_segment_v2_DataPageFooterPB_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_doris_segment_v2_DataPageFooterPB_descriptor,
        new java.lang.String[] { "FirstOrdinal", "NumValues", "NullmapSize", "NextArrayItemOrdinal", });
    internal_static_doris_segment_v2_IndexPageFooterPB_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_doris_segment_v2_IndexPageFooterPB_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_doris_segment_v2_IndexPageFooterPB_descriptor,
        new java.lang.String[] { "NumEntries", "Type", });
    internal_static_doris_segment_v2_DictPageFooterPB_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_doris_segment_v2_DictPageFooterPB_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_doris_segment_v2_DictPageFooterPB_descriptor,
        new java.lang.String[] { "Encoding", });
    internal_static_doris_segment_v2_ShortKeyFooterPB_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_doris_segment_v2_ShortKeyFooterPB_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_doris_segment_v2_ShortKeyFooterPB_descriptor,
        new java.lang.String[] { "NumItems", "KeyBytes", "OffsetBytes", "SegmentId", "NumRowsPerBlock", "NumSegmentRows", });
    internal_static_doris_segment_v2_PageFooterPB_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_doris_segment_v2_PageFooterPB_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_doris_segment_v2_PageFooterPB_descriptor,
        new java.lang.String[] { "Type", "UncompressedSize", "DataPageFooter", "IndexPageFooter", "DictPageFooter", "ShortKeyPageFooter", });
    internal_static_doris_segment_v2_ZoneMapPB_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_doris_segment_v2_ZoneMapPB_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_doris_segment_v2_ZoneMapPB_descriptor,
        new java.lang.String[] { "Min", "Max", "HasNull", "HasNotNull", "PassAll", });
    internal_static_doris_segment_v2_ColumnPathPartInfo_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_doris_segment_v2_ColumnPathPartInfo_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_doris_segment_v2_ColumnPathPartInfo_descriptor,
        new java.lang.String[] { "Key", "IsNested", "AnonymousArrayLevel", });
    internal_static_doris_segment_v2_ColumnPathInfo_descriptor =
      getDescriptor().getMessageTypes().get(9);
    internal_static_doris_segment_v2_ColumnPathInfo_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_doris_segment_v2_ColumnPathInfo_descriptor,
        new java.lang.String[] { "Path", "PathPartInfos", "HasNested", "ParrentColumnUniqueId", });
    internal_static_doris_segment_v2_ColumnMetaPB_descriptor =
      getDescriptor().getMessageTypes().get(10);
    internal_static_doris_segment_v2_ColumnMetaPB_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_doris_segment_v2_ColumnMetaPB_descriptor,
        new java.lang.String[] { "ColumnId", "UniqueId", "Type", "Length", "Encoding", "Compression", "IsNullable", "Indexes", "DictPage", "ChildrenColumns", "NumRows", "ChildrenColumnNames", "ColumnPathInfo", "DefaultValue", "Precision", "Frac", "SparseColumns", "ResultIsNullable", "FunctionName", "BeExecVersion", });
    internal_static_doris_segment_v2_PrimaryKeyIndexMetaPB_descriptor =
      getDescriptor().getMessageTypes().get(11);
    internal_static_doris_segment_v2_PrimaryKeyIndexMetaPB_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_doris_segment_v2_PrimaryKeyIndexMetaPB_descriptor,
        new java.lang.String[] { "PrimaryKeyIndex", "BloomFilterIndex", "MinKey", "MaxKey", });
    internal_static_doris_segment_v2_SegmentFooterPB_descriptor =
      getDescriptor().getMessageTypes().get(12);
    internal_static_doris_segment_v2_SegmentFooterPB_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_doris_segment_v2_SegmentFooterPB_descriptor,
        new java.lang.String[] { "Version", "Columns", "NumRows", "IndexFootprint", "DataFootprint", "RawDataFootprint", "CompressType", "FileMetaDatas", "ShortKeyIndexPage", "PrimaryKeyIndexMeta", });
    internal_static_doris_segment_v2_BTreeMetaPB_descriptor =
      getDescriptor().getMessageTypes().get(13);
    internal_static_doris_segment_v2_BTreeMetaPB_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_doris_segment_v2_BTreeMetaPB_descriptor,
        new java.lang.String[] { "RootPage", "IsRootDataPage", });
    internal_static_doris_segment_v2_IndexedColumnMetaPB_descriptor =
      getDescriptor().getMessageTypes().get(14);
    internal_static_doris_segment_v2_IndexedColumnMetaPB_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_doris_segment_v2_IndexedColumnMetaPB_descriptor,
        new java.lang.String[] { "DataType", "Encoding", "NumValues", "OrdinalIndexMeta", "ValueIndexMeta", "Compression", "Size", });
    internal_static_doris_segment_v2_ColumnIndexMetaPB_descriptor =
      getDescriptor().getMessageTypes().get(15);
    internal_static_doris_segment_v2_ColumnIndexMetaPB_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_doris_segment_v2_ColumnIndexMetaPB_descriptor,
        new java.lang.String[] { "Type", "OrdinalIndex", "ZoneMapIndex", "BitmapIndex", "BloomFilterIndex", });
    internal_static_doris_segment_v2_OrdinalIndexPB_descriptor =
      getDescriptor().getMessageTypes().get(16);
    internal_static_doris_segment_v2_OrdinalIndexPB_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_doris_segment_v2_OrdinalIndexPB_descriptor,
        new java.lang.String[] { "RootPage", });
    internal_static_doris_segment_v2_ZoneMapIndexPB_descriptor =
      getDescriptor().getMessageTypes().get(17);
    internal_static_doris_segment_v2_ZoneMapIndexPB_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_doris_segment_v2_ZoneMapIndexPB_descriptor,
        new java.lang.String[] { "SegmentZoneMap", "PageZoneMaps", });
    internal_static_doris_segment_v2_BitmapIndexPB_descriptor =
      getDescriptor().getMessageTypes().get(18);
    internal_static_doris_segment_v2_BitmapIndexPB_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_doris_segment_v2_BitmapIndexPB_descriptor,
        new java.lang.String[] { "BitmapType", "HasNull", "DictColumn", "BitmapColumn", });
    internal_static_doris_segment_v2_BloomFilterIndexPB_descriptor =
      getDescriptor().getMessageTypes().get(19);
    internal_static_doris_segment_v2_BloomFilterIndexPB_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_doris_segment_v2_BloomFilterIndexPB_descriptor,
        new java.lang.String[] { "HashStrategy", "Algorithm", "BloomFilter", });
  }

  // @@protoc_insertion_point(outer_class_scope)
}