// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: greptime/v1/index/inverted_index.proto

package io.greptime.v1.index;

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

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  public interface InvertedIndexFooterOrBuilder extends
      // @@protoc_insertion_point(interface_extends:greptime.v1.index.InvertedIndexFooter)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * A map of tag names to their respective metadata corresponding to an individual
     * inverted index within the SST file.
     * </pre>
     *
     * <code>map&lt;string, .greptime.v1.index.InvertedIndexMeta&gt; metas = 1;</code>
     */
    int getMetasCount();
    /**
     * <pre>
     * A map of tag names to their respective metadata corresponding to an individual
     * inverted index within the SST file.
     * </pre>
     *
     * <code>map&lt;string, .greptime.v1.index.InvertedIndexMeta&gt; metas = 1;</code>
     */
    boolean containsMetas(
        java.lang.String key);
    /**
     * Use {@link #getMetasMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, io.greptime.v1.index.InvertedIndex.InvertedIndexMeta>
    getMetas();
    /**
     * <pre>
     * A map of tag names to their respective metadata corresponding to an individual
     * inverted index within the SST file.
     * </pre>
     *
     * <code>map&lt;string, .greptime.v1.index.InvertedIndexMeta&gt; metas = 1;</code>
     */
    java.util.Map<java.lang.String, io.greptime.v1.index.InvertedIndex.InvertedIndexMeta>
    getMetasMap();
    /**
     * <pre>
     * A map of tag names to their respective metadata corresponding to an individual
     * inverted index within the SST file.
     * </pre>
     *
     * <code>map&lt;string, .greptime.v1.index.InvertedIndexMeta&gt; metas = 1;</code>
     */

    /* nullable */
io.greptime.v1.index.InvertedIndex.InvertedIndexMeta getMetasOrDefault(
        java.lang.String key,
        /* nullable */
io.greptime.v1.index.InvertedIndex.InvertedIndexMeta defaultValue);
    /**
     * <pre>
     * A map of tag names to their respective metadata corresponding to an individual
     * inverted index within the SST file.
     * </pre>
     *
     * <code>map&lt;string, .greptime.v1.index.InvertedIndexMeta&gt; metas = 1;</code>
     */

    io.greptime.v1.index.InvertedIndex.InvertedIndexMeta getMetasOrThrow(
        java.lang.String key);
  }
  /**
   * <pre>
   * InvertedIndexFooter defines the metadata for an inverted index
   * within an SST file.
   * </pre>
   *
   * Protobuf type {@code greptime.v1.index.InvertedIndexFooter}
   */
  public static final class InvertedIndexFooter extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:greptime.v1.index.InvertedIndexFooter)
      InvertedIndexFooterOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use InvertedIndexFooter.newBuilder() to construct.
    private InvertedIndexFooter(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private InvertedIndexFooter() {
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private InvertedIndexFooter(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                metas_ = com.google.protobuf.MapField.newMapField(
                    MetasDefaultEntryHolder.defaultEntry);
                mutable_bitField0_ |= 0x00000001;
              }
              com.google.protobuf.MapEntry<java.lang.String, io.greptime.v1.index.InvertedIndex.InvertedIndexMeta>
              metas__ = input.readMessage(
                  MetasDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
              metas_.getMutableMap().put(
                  metas__.getKey(), metas__.getValue());
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (com.google.protobuf.UninitializedMessageException e) {
        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.greptime.v1.index.InvertedIndex.internal_static_greptime_v1_index_InvertedIndexFooter_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapField internalGetMapField(
        int number) {
      switch (number) {
        case 1:
          return internalGetMetas();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.greptime.v1.index.InvertedIndex.internal_static_greptime_v1_index_InvertedIndexFooter_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.greptime.v1.index.InvertedIndex.InvertedIndexFooter.class, io.greptime.v1.index.InvertedIndex.InvertedIndexFooter.Builder.class);
    }

    public static final int METAS_FIELD_NUMBER = 1;
    private static final class MetasDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, io.greptime.v1.index.InvertedIndex.InvertedIndexMeta> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, io.greptime.v1.index.InvertedIndex.InvertedIndexMeta>newDefaultInstance(
                  io.greptime.v1.index.InvertedIndex.internal_static_greptime_v1_index_InvertedIndexFooter_MetasEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.MESSAGE,
                  io.greptime.v1.index.InvertedIndex.InvertedIndexMeta.getDefaultInstance());
    }
    private com.google.protobuf.MapField<
        java.lang.String, io.greptime.v1.index.InvertedIndex.InvertedIndexMeta> metas_;
    private com.google.protobuf.MapField<java.lang.String, io.greptime.v1.index.InvertedIndex.InvertedIndexMeta>
    internalGetMetas() {
      if (metas_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            MetasDefaultEntryHolder.defaultEntry);
      }
      return metas_;
    }

    public int getMetasCount() {
      return internalGetMetas().getMap().size();
    }
    /**
     * <pre>
     * A map of tag names to their respective metadata corresponding to an individual
     * inverted index within the SST file.
     * </pre>
     *
     * <code>map&lt;string, .greptime.v1.index.InvertedIndexMeta&gt; metas = 1;</code>
     */

    @java.lang.Override
    public boolean containsMetas(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetMetas().getMap().containsKey(key);
    }
    /**
     * Use {@link #getMetasMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, io.greptime.v1.index.InvertedIndex.InvertedIndexMeta> getMetas() {
      return getMetasMap();
    }
    /**
     * <pre>
     * A map of tag names to their respective metadata corresponding to an individual
     * inverted index within the SST file.
     * </pre>
     *
     * <code>map&lt;string, .greptime.v1.index.InvertedIndexMeta&gt; metas = 1;</code>
     */
    @java.lang.Override

    public java.util.Map<java.lang.String, io.greptime.v1.index.InvertedIndex.InvertedIndexMeta> getMetasMap() {
      return internalGetMetas().getMap();
    }
    /**
     * <pre>
     * A map of tag names to their respective metadata corresponding to an individual
     * inverted index within the SST file.
     * </pre>
     *
     * <code>map&lt;string, .greptime.v1.index.InvertedIndexMeta&gt; metas = 1;</code>
     */
    @java.lang.Override

    public io.greptime.v1.index.InvertedIndex.InvertedIndexMeta getMetasOrDefault(
        java.lang.String key,
        io.greptime.v1.index.InvertedIndex.InvertedIndexMeta defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.greptime.v1.index.InvertedIndex.InvertedIndexMeta> map =
          internalGetMetas().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * A map of tag names to their respective metadata corresponding to an individual
     * inverted index within the SST file.
     * </pre>
     *
     * <code>map&lt;string, .greptime.v1.index.InvertedIndexMeta&gt; metas = 1;</code>
     */
    @java.lang.Override

    public io.greptime.v1.index.InvertedIndex.InvertedIndexMeta getMetasOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, io.greptime.v1.index.InvertedIndex.InvertedIndexMeta> map =
          internalGetMetas().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    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 {
      com.google.protobuf.GeneratedMessageV3
        .serializeStringMapTo(
          output,
          internalGetMetas(),
          MetasDefaultEntryHolder.defaultEntry,
          1);
      unknownFields.writeTo(output);
    }

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

      size = 0;
      for (java.util.Map.Entry<java.lang.String, io.greptime.v1.index.InvertedIndex.InvertedIndexMeta> entry
           : internalGetMetas().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, io.greptime.v1.index.InvertedIndex.InvertedIndexMeta>
        metas__ = MetasDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, metas__);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.greptime.v1.index.InvertedIndex.InvertedIndexFooter)) {
        return super.equals(obj);
      }
      io.greptime.v1.index.InvertedIndex.InvertedIndexFooter other = (io.greptime.v1.index.InvertedIndex.InvertedIndexFooter) obj;

      if (!internalGetMetas().equals(
          other.internalGetMetas())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (!internalGetMetas().getMap().isEmpty()) {
        hash = (37 * hash) + METAS_FIELD_NUMBER;
        hash = (53 * hash) + internalGetMetas().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.greptime.v1.index.InvertedIndex.InvertedIndexFooter parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.greptime.v1.index.InvertedIndex.InvertedIndexFooter parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.greptime.v1.index.InvertedIndex.InvertedIndexFooter parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.greptime.v1.index.InvertedIndex.InvertedIndexFooter parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.greptime.v1.index.InvertedIndex.InvertedIndexFooter parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.greptime.v1.index.InvertedIndex.InvertedIndexFooter parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.greptime.v1.index.InvertedIndex.InvertedIndexFooter parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.greptime.v1.index.InvertedIndex.InvertedIndexFooter 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 io.greptime.v1.index.InvertedIndex.InvertedIndexFooter parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.greptime.v1.index.InvertedIndex.InvertedIndexFooter 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 io.greptime.v1.index.InvertedIndex.InvertedIndexFooter parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.greptime.v1.index.InvertedIndex.InvertedIndexFooter 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(io.greptime.v1.index.InvertedIndex.InvertedIndexFooter 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>
     * InvertedIndexFooter defines the metadata for an inverted index
     * within an SST file.
     * </pre>
     *
     * Protobuf type {@code greptime.v1.index.InvertedIndexFooter}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:greptime.v1.index.InvertedIndexFooter)
        io.greptime.v1.index.InvertedIndex.InvertedIndexFooterOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.greptime.v1.index.InvertedIndex.internal_static_greptime_v1_index_InvertedIndexFooter_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMapField(
          int number) {
        switch (number) {
          case 1:
            return internalGetMetas();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMutableMapField(
          int number) {
        switch (number) {
          case 1:
            return internalGetMutableMetas();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.greptime.v1.index.InvertedIndex.internal_static_greptime_v1_index_InvertedIndexFooter_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.greptime.v1.index.InvertedIndex.InvertedIndexFooter.class, io.greptime.v1.index.InvertedIndex.InvertedIndexFooter.Builder.class);
      }

      // Construct using io.greptime.v1.index.InvertedIndex.InvertedIndexFooter.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        internalGetMutableMetas().clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.greptime.v1.index.InvertedIndex.internal_static_greptime_v1_index_InvertedIndexFooter_descriptor;
      }

      @java.lang.Override
      public io.greptime.v1.index.InvertedIndex.InvertedIndexFooter getDefaultInstanceForType() {
        return io.greptime.v1.index.InvertedIndex.InvertedIndexFooter.getDefaultInstance();
      }

      @java.lang.Override
      public io.greptime.v1.index.InvertedIndex.InvertedIndexFooter build() {
        io.greptime.v1.index.InvertedIndex.InvertedIndexFooter result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.greptime.v1.index.InvertedIndex.InvertedIndexFooter buildPartial() {
        io.greptime.v1.index.InvertedIndex.InvertedIndexFooter result = new io.greptime.v1.index.InvertedIndex.InvertedIndexFooter(this);
        int from_bitField0_ = bitField0_;
        result.metas_ = internalGetMetas();
        result.metas_.makeImmutable();
        onBuilt();
        return result;
      }

      @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 io.greptime.v1.index.InvertedIndex.InvertedIndexFooter) {
          return mergeFrom((io.greptime.v1.index.InvertedIndex.InvertedIndexFooter)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.greptime.v1.index.InvertedIndex.InvertedIndexFooter other) {
        if (other == io.greptime.v1.index.InvertedIndex.InvertedIndexFooter.getDefaultInstance()) return this;
        internalGetMutableMetas().mergeFrom(
            other.internalGetMetas());
        this.mergeUnknownFields(other.unknownFields);
        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 {
        io.greptime.v1.index.InvertedIndex.InvertedIndexFooter parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.greptime.v1.index.InvertedIndex.InvertedIndexFooter) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.MapField<
          java.lang.String, io.greptime.v1.index.InvertedIndex.InvertedIndexMeta> metas_;
      private com.google.protobuf.MapField<java.lang.String, io.greptime.v1.index.InvertedIndex.InvertedIndexMeta>
      internalGetMetas() {
        if (metas_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              MetasDefaultEntryHolder.defaultEntry);
        }
        return metas_;
      }
      private com.google.protobuf.MapField<java.lang.String, io.greptime.v1.index.InvertedIndex.InvertedIndexMeta>
      internalGetMutableMetas() {
        onChanged();;
        if (metas_ == null) {
          metas_ = com.google.protobuf.MapField.newMapField(
              MetasDefaultEntryHolder.defaultEntry);
        }
        if (!metas_.isMutable()) {
          metas_ = metas_.copy();
        }
        return metas_;
      }

      public int getMetasCount() {
        return internalGetMetas().getMap().size();
      }
      /**
       * <pre>
       * A map of tag names to their respective metadata corresponding to an individual
       * inverted index within the SST file.
       * </pre>
       *
       * <code>map&lt;string, .greptime.v1.index.InvertedIndexMeta&gt; metas = 1;</code>
       */

      @java.lang.Override
      public boolean containsMetas(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetMetas().getMap().containsKey(key);
      }
      /**
       * Use {@link #getMetasMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.greptime.v1.index.InvertedIndex.InvertedIndexMeta> getMetas() {
        return getMetasMap();
      }
      /**
       * <pre>
       * A map of tag names to their respective metadata corresponding to an individual
       * inverted index within the SST file.
       * </pre>
       *
       * <code>map&lt;string, .greptime.v1.index.InvertedIndexMeta&gt; metas = 1;</code>
       */
      @java.lang.Override

      public java.util.Map<java.lang.String, io.greptime.v1.index.InvertedIndex.InvertedIndexMeta> getMetasMap() {
        return internalGetMetas().getMap();
      }
      /**
       * <pre>
       * A map of tag names to their respective metadata corresponding to an individual
       * inverted index within the SST file.
       * </pre>
       *
       * <code>map&lt;string, .greptime.v1.index.InvertedIndexMeta&gt; metas = 1;</code>
       */
      @java.lang.Override

      public io.greptime.v1.index.InvertedIndex.InvertedIndexMeta getMetasOrDefault(
          java.lang.String key,
          io.greptime.v1.index.InvertedIndex.InvertedIndexMeta defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.greptime.v1.index.InvertedIndex.InvertedIndexMeta> map =
            internalGetMetas().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <pre>
       * A map of tag names to their respective metadata corresponding to an individual
       * inverted index within the SST file.
       * </pre>
       *
       * <code>map&lt;string, .greptime.v1.index.InvertedIndexMeta&gt; metas = 1;</code>
       */
      @java.lang.Override

      public io.greptime.v1.index.InvertedIndex.InvertedIndexMeta getMetasOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, io.greptime.v1.index.InvertedIndex.InvertedIndexMeta> map =
            internalGetMetas().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearMetas() {
        internalGetMutableMetas().getMutableMap()
            .clear();
        return this;
      }
      /**
       * <pre>
       * A map of tag names to their respective metadata corresponding to an individual
       * inverted index within the SST file.
       * </pre>
       *
       * <code>map&lt;string, .greptime.v1.index.InvertedIndexMeta&gt; metas = 1;</code>
       */

      public Builder removeMetas(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableMetas().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, io.greptime.v1.index.InvertedIndex.InvertedIndexMeta>
      getMutableMetas() {
        return internalGetMutableMetas().getMutableMap();
      }
      /**
       * <pre>
       * A map of tag names to their respective metadata corresponding to an individual
       * inverted index within the SST file.
       * </pre>
       *
       * <code>map&lt;string, .greptime.v1.index.InvertedIndexMeta&gt; metas = 1;</code>
       */
      public Builder putMetas(
          java.lang.String key,
          io.greptime.v1.index.InvertedIndex.InvertedIndexMeta value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) {
  throw new NullPointerException("map value");
}

        internalGetMutableMetas().getMutableMap()
            .put(key, value);
        return this;
      }
      /**
       * <pre>
       * A map of tag names to their respective metadata corresponding to an individual
       * inverted index within the SST file.
       * </pre>
       *
       * <code>map&lt;string, .greptime.v1.index.InvertedIndexMeta&gt; metas = 1;</code>
       */

      public Builder putAllMetas(
          java.util.Map<java.lang.String, io.greptime.v1.index.InvertedIndex.InvertedIndexMeta> values) {
        internalGetMutableMetas().getMutableMap()
            .putAll(values);
        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:greptime.v1.index.InvertedIndexFooter)
    }

    // @@protoc_insertion_point(class_scope:greptime.v1.index.InvertedIndexFooter)
    private static final io.greptime.v1.index.InvertedIndex.InvertedIndexFooter DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.greptime.v1.index.InvertedIndex.InvertedIndexFooter();
    }

    public static io.greptime.v1.index.InvertedIndex.InvertedIndexFooter getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<InvertedIndexFooter>
        PARSER = new com.google.protobuf.AbstractParser<InvertedIndexFooter>() {
      @java.lang.Override
      public InvertedIndexFooter parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new InvertedIndexFooter(input, extensionRegistry);
      }
    };

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

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

    @java.lang.Override
    public io.greptime.v1.index.InvertedIndex.InvertedIndexFooter getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface InvertedIndexMetaOrBuilder extends
      // @@protoc_insertion_point(interface_extends:greptime.v1.index.InvertedIndexMeta)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Name of the tag associated with the inverted index.
     * </pre>
     *
     * <code>string name = 1;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * Name of the tag associated with the inverted index.
     * </pre>
     *
     * <code>string name = 1;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * Defines the number of rows per group for bitmap indexing. It determines how rows
     * are batched for indexing, with each batch corresponding to a segment in the bitmap.
     * The groups are usually of uniform size, with the exception of the final group which
     * may contain fewer rows if the total row count is not a multiple of 'row_count_in_group'.
     * Segmenting allows indexed values in the tag column to be quickly located within
     * their respective groups during a query, reducing the search space and improving
     * retrieval efficiency.
     * </pre>
     *
     * <code>uint64 row_count_in_group = 2;</code>
     * @return The rowCountInGroup.
     */
    long getRowCountInGroup();

    /**
     * <pre>
     * The byte offset of the Finite State Transducer (FST) within the SST file.
     * </pre>
     *
     * <code>uint64 fst_offset = 3;</code>
     * @return The fstOffset.
     */
    long getFstOffset();

    /**
     * <pre>
     * The size in bytes of the FST data.
     * </pre>
     *
     * <code>uint64 fst_size = 4;</code>
     * @return The fstSize.
     */
    long getFstSize();

    /**
     * <pre>
     * The byte offset where the null bitmap for this tag starts.
     * </pre>
     *
     * <code>uint64 null_bitmap_offset = 5;</code>
     * @return The nullBitmapOffset.
     */
    long getNullBitmapOffset();

    /**
     * <pre>
     * The size in bytes of the null bitmap.
     * </pre>
     *
     * <code>uint64 null_bitmap_size = 6;</code>
     * @return The nullBitmapSize.
     */
    long getNullBitmapSize();

    /**
     * <pre>
     * Statistical information about the tag's inverted index.
     * </pre>
     *
     * <code>.greptime.v1.index.InvertedIndexStats stats = 7;</code>
     * @return Whether the stats field is set.
     */
    boolean hasStats();
    /**
     * <pre>
     * Statistical information about the tag's inverted index.
     * </pre>
     *
     * <code>.greptime.v1.index.InvertedIndexStats stats = 7;</code>
     * @return The stats.
     */
    io.greptime.v1.index.InvertedIndex.InvertedIndexStats getStats();
    /**
     * <pre>
     * Statistical information about the tag's inverted index.
     * </pre>
     *
     * <code>.greptime.v1.index.InvertedIndexStats stats = 7;</code>
     */
    io.greptime.v1.index.InvertedIndex.InvertedIndexStatsOrBuilder getStatsOrBuilder();
  }
  /**
   * <pre>
   * InvertedIndexMeta contains the metadata for a specific tag's inverted index.
   * </pre>
   *
   * Protobuf type {@code greptime.v1.index.InvertedIndexMeta}
   */
  public static final class InvertedIndexMeta extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:greptime.v1.index.InvertedIndexMeta)
      InvertedIndexMetaOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use InvertedIndexMeta.newBuilder() to construct.
    private InvertedIndexMeta(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private InvertedIndexMeta() {
      name_ = "";
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private InvertedIndexMeta(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              name_ = s;
              break;
            }
            case 16: {

              rowCountInGroup_ = input.readUInt64();
              break;
            }
            case 24: {

              fstOffset_ = input.readUInt64();
              break;
            }
            case 32: {

              fstSize_ = input.readUInt64();
              break;
            }
            case 40: {

              nullBitmapOffset_ = input.readUInt64();
              break;
            }
            case 48: {

              nullBitmapSize_ = input.readUInt64();
              break;
            }
            case 58: {
              io.greptime.v1.index.InvertedIndex.InvertedIndexStats.Builder subBuilder = null;
              if (stats_ != null) {
                subBuilder = stats_.toBuilder();
              }
              stats_ = input.readMessage(io.greptime.v1.index.InvertedIndex.InvertedIndexStats.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(stats_);
                stats_ = subBuilder.buildPartial();
              }

              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (com.google.protobuf.UninitializedMessageException e) {
        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.greptime.v1.index.InvertedIndex.internal_static_greptime_v1_index_InvertedIndexMeta_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.greptime.v1.index.InvertedIndex.internal_static_greptime_v1_index_InvertedIndexMeta_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.greptime.v1.index.InvertedIndex.InvertedIndexMeta.class, io.greptime.v1.index.InvertedIndex.InvertedIndexMeta.Builder.class);
    }

    public static final int NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object name_;
    /**
     * <pre>
     * Name of the tag associated with the inverted index.
     * </pre>
     *
     * <code>string name = 1;</code>
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Name of the tag associated with the inverted index.
     * </pre>
     *
     * <code>string name = 1;</code>
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ROW_COUNT_IN_GROUP_FIELD_NUMBER = 2;
    private long rowCountInGroup_;
    /**
     * <pre>
     * Defines the number of rows per group for bitmap indexing. It determines how rows
     * are batched for indexing, with each batch corresponding to a segment in the bitmap.
     * The groups are usually of uniform size, with the exception of the final group which
     * may contain fewer rows if the total row count is not a multiple of 'row_count_in_group'.
     * Segmenting allows indexed values in the tag column to be quickly located within
     * their respective groups during a query, reducing the search space and improving
     * retrieval efficiency.
     * </pre>
     *
     * <code>uint64 row_count_in_group = 2;</code>
     * @return The rowCountInGroup.
     */
    @java.lang.Override
    public long getRowCountInGroup() {
      return rowCountInGroup_;
    }

    public static final int FST_OFFSET_FIELD_NUMBER = 3;
    private long fstOffset_;
    /**
     * <pre>
     * The byte offset of the Finite State Transducer (FST) within the SST file.
     * </pre>
     *
     * <code>uint64 fst_offset = 3;</code>
     * @return The fstOffset.
     */
    @java.lang.Override
    public long getFstOffset() {
      return fstOffset_;
    }

    public static final int FST_SIZE_FIELD_NUMBER = 4;
    private long fstSize_;
    /**
     * <pre>
     * The size in bytes of the FST data.
     * </pre>
     *
     * <code>uint64 fst_size = 4;</code>
     * @return The fstSize.
     */
    @java.lang.Override
    public long getFstSize() {
      return fstSize_;
    }

    public static final int NULL_BITMAP_OFFSET_FIELD_NUMBER = 5;
    private long nullBitmapOffset_;
    /**
     * <pre>
     * The byte offset where the null bitmap for this tag starts.
     * </pre>
     *
     * <code>uint64 null_bitmap_offset = 5;</code>
     * @return The nullBitmapOffset.
     */
    @java.lang.Override
    public long getNullBitmapOffset() {
      return nullBitmapOffset_;
    }

    public static final int NULL_BITMAP_SIZE_FIELD_NUMBER = 6;
    private long nullBitmapSize_;
    /**
     * <pre>
     * The size in bytes of the null bitmap.
     * </pre>
     *
     * <code>uint64 null_bitmap_size = 6;</code>
     * @return The nullBitmapSize.
     */
    @java.lang.Override
    public long getNullBitmapSize() {
      return nullBitmapSize_;
    }

    public static final int STATS_FIELD_NUMBER = 7;
    private io.greptime.v1.index.InvertedIndex.InvertedIndexStats stats_;
    /**
     * <pre>
     * Statistical information about the tag's inverted index.
     * </pre>
     *
     * <code>.greptime.v1.index.InvertedIndexStats stats = 7;</code>
     * @return Whether the stats field is set.
     */
    @java.lang.Override
    public boolean hasStats() {
      return stats_ != null;
    }
    /**
     * <pre>
     * Statistical information about the tag's inverted index.
     * </pre>
     *
     * <code>.greptime.v1.index.InvertedIndexStats stats = 7;</code>
     * @return The stats.
     */
    @java.lang.Override
    public io.greptime.v1.index.InvertedIndex.InvertedIndexStats getStats() {
      return stats_ == null ? io.greptime.v1.index.InvertedIndex.InvertedIndexStats.getDefaultInstance() : stats_;
    }
    /**
     * <pre>
     * Statistical information about the tag's inverted index.
     * </pre>
     *
     * <code>.greptime.v1.index.InvertedIndexStats stats = 7;</code>
     */
    @java.lang.Override
    public io.greptime.v1.index.InvertedIndex.InvertedIndexStatsOrBuilder getStatsOrBuilder() {
      return getStats();
    }

    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 (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (rowCountInGroup_ != 0L) {
        output.writeUInt64(2, rowCountInGroup_);
      }
      if (fstOffset_ != 0L) {
        output.writeUInt64(3, fstOffset_);
      }
      if (fstSize_ != 0L) {
        output.writeUInt64(4, fstSize_);
      }
      if (nullBitmapOffset_ != 0L) {
        output.writeUInt64(5, nullBitmapOffset_);
      }
      if (nullBitmapSize_ != 0L) {
        output.writeUInt64(6, nullBitmapSize_);
      }
      if (stats_ != null) {
        output.writeMessage(7, getStats());
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (rowCountInGroup_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(2, rowCountInGroup_);
      }
      if (fstOffset_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(3, fstOffset_);
      }
      if (fstSize_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(4, fstSize_);
      }
      if (nullBitmapOffset_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(5, nullBitmapOffset_);
      }
      if (nullBitmapSize_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(6, nullBitmapSize_);
      }
      if (stats_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, getStats());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.greptime.v1.index.InvertedIndex.InvertedIndexMeta)) {
        return super.equals(obj);
      }
      io.greptime.v1.index.InvertedIndex.InvertedIndexMeta other = (io.greptime.v1.index.InvertedIndex.InvertedIndexMeta) obj;

      if (!getName()
          .equals(other.getName())) return false;
      if (getRowCountInGroup()
          != other.getRowCountInGroup()) return false;
      if (getFstOffset()
          != other.getFstOffset()) return false;
      if (getFstSize()
          != other.getFstSize()) return false;
      if (getNullBitmapOffset()
          != other.getNullBitmapOffset()) return false;
      if (getNullBitmapSize()
          != other.getNullBitmapSize()) return false;
      if (hasStats() != other.hasStats()) return false;
      if (hasStats()) {
        if (!getStats()
            .equals(other.getStats())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (37 * hash) + ROW_COUNT_IN_GROUP_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getRowCountInGroup());
      hash = (37 * hash) + FST_OFFSET_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getFstOffset());
      hash = (37 * hash) + FST_SIZE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getFstSize());
      hash = (37 * hash) + NULL_BITMAP_OFFSET_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getNullBitmapOffset());
      hash = (37 * hash) + NULL_BITMAP_SIZE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getNullBitmapSize());
      if (hasStats()) {
        hash = (37 * hash) + STATS_FIELD_NUMBER;
        hash = (53 * hash) + getStats().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.greptime.v1.index.InvertedIndex.InvertedIndexMeta parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.greptime.v1.index.InvertedIndex.InvertedIndexMeta parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.greptime.v1.index.InvertedIndex.InvertedIndexMeta parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.greptime.v1.index.InvertedIndex.InvertedIndexMeta parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.greptime.v1.index.InvertedIndex.InvertedIndexMeta parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.greptime.v1.index.InvertedIndex.InvertedIndexMeta parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.greptime.v1.index.InvertedIndex.InvertedIndexMeta parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.greptime.v1.index.InvertedIndex.InvertedIndexMeta 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 io.greptime.v1.index.InvertedIndex.InvertedIndexMeta parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.greptime.v1.index.InvertedIndex.InvertedIndexMeta 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 io.greptime.v1.index.InvertedIndex.InvertedIndexMeta parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.greptime.v1.index.InvertedIndex.InvertedIndexMeta 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(io.greptime.v1.index.InvertedIndex.InvertedIndexMeta 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>
     * InvertedIndexMeta contains the metadata for a specific tag's inverted index.
     * </pre>
     *
     * Protobuf type {@code greptime.v1.index.InvertedIndexMeta}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:greptime.v1.index.InvertedIndexMeta)
        io.greptime.v1.index.InvertedIndex.InvertedIndexMetaOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.greptime.v1.index.InvertedIndex.internal_static_greptime_v1_index_InvertedIndexMeta_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.greptime.v1.index.InvertedIndex.internal_static_greptime_v1_index_InvertedIndexMeta_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.greptime.v1.index.InvertedIndex.InvertedIndexMeta.class, io.greptime.v1.index.InvertedIndex.InvertedIndexMeta.Builder.class);
      }

      // Construct using io.greptime.v1.index.InvertedIndex.InvertedIndexMeta.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        name_ = "";

        rowCountInGroup_ = 0L;

        fstOffset_ = 0L;

        fstSize_ = 0L;

        nullBitmapOffset_ = 0L;

        nullBitmapSize_ = 0L;

        if (statsBuilder_ == null) {
          stats_ = null;
        } else {
          stats_ = null;
          statsBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.greptime.v1.index.InvertedIndex.internal_static_greptime_v1_index_InvertedIndexMeta_descriptor;
      }

      @java.lang.Override
      public io.greptime.v1.index.InvertedIndex.InvertedIndexMeta getDefaultInstanceForType() {
        return io.greptime.v1.index.InvertedIndex.InvertedIndexMeta.getDefaultInstance();
      }

      @java.lang.Override
      public io.greptime.v1.index.InvertedIndex.InvertedIndexMeta build() {
        io.greptime.v1.index.InvertedIndex.InvertedIndexMeta result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.greptime.v1.index.InvertedIndex.InvertedIndexMeta buildPartial() {
        io.greptime.v1.index.InvertedIndex.InvertedIndexMeta result = new io.greptime.v1.index.InvertedIndex.InvertedIndexMeta(this);
        result.name_ = name_;
        result.rowCountInGroup_ = rowCountInGroup_;
        result.fstOffset_ = fstOffset_;
        result.fstSize_ = fstSize_;
        result.nullBitmapOffset_ = nullBitmapOffset_;
        result.nullBitmapSize_ = nullBitmapSize_;
        if (statsBuilder_ == null) {
          result.stats_ = stats_;
        } else {
          result.stats_ = statsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @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 io.greptime.v1.index.InvertedIndex.InvertedIndexMeta) {
          return mergeFrom((io.greptime.v1.index.InvertedIndex.InvertedIndexMeta)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.greptime.v1.index.InvertedIndex.InvertedIndexMeta other) {
        if (other == io.greptime.v1.index.InvertedIndex.InvertedIndexMeta.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (other.getRowCountInGroup() != 0L) {
          setRowCountInGroup(other.getRowCountInGroup());
        }
        if (other.getFstOffset() != 0L) {
          setFstOffset(other.getFstOffset());
        }
        if (other.getFstSize() != 0L) {
          setFstSize(other.getFstSize());
        }
        if (other.getNullBitmapOffset() != 0L) {
          setNullBitmapOffset(other.getNullBitmapOffset());
        }
        if (other.getNullBitmapSize() != 0L) {
          setNullBitmapSize(other.getNullBitmapSize());
        }
        if (other.hasStats()) {
          mergeStats(other.getStats());
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        io.greptime.v1.index.InvertedIndex.InvertedIndexMeta parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.greptime.v1.index.InvertedIndex.InvertedIndexMeta) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object name_ = "";
      /**
       * <pre>
       * Name of the tag associated with the inverted index.
       * </pre>
       *
       * <code>string name = 1;</code>
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Name of the tag associated with the inverted index.
       * </pre>
       *
       * <code>string name = 1;</code>
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Name of the tag associated with the inverted index.
       * </pre>
       *
       * <code>string name = 1;</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Name of the tag associated with the inverted index.
       * </pre>
       *
       * <code>string name = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Name of the tag associated with the inverted index.
       * </pre>
       *
       * <code>string name = 1;</code>
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }

      private long rowCountInGroup_ ;
      /**
       * <pre>
       * Defines the number of rows per group for bitmap indexing. It determines how rows
       * are batched for indexing, with each batch corresponding to a segment in the bitmap.
       * The groups are usually of uniform size, with the exception of the final group which
       * may contain fewer rows if the total row count is not a multiple of 'row_count_in_group'.
       * Segmenting allows indexed values in the tag column to be quickly located within
       * their respective groups during a query, reducing the search space and improving
       * retrieval efficiency.
       * </pre>
       *
       * <code>uint64 row_count_in_group = 2;</code>
       * @return The rowCountInGroup.
       */
      @java.lang.Override
      public long getRowCountInGroup() {
        return rowCountInGroup_;
      }
      /**
       * <pre>
       * Defines the number of rows per group for bitmap indexing. It determines how rows
       * are batched for indexing, with each batch corresponding to a segment in the bitmap.
       * The groups are usually of uniform size, with the exception of the final group which
       * may contain fewer rows if the total row count is not a multiple of 'row_count_in_group'.
       * Segmenting allows indexed values in the tag column to be quickly located within
       * their respective groups during a query, reducing the search space and improving
       * retrieval efficiency.
       * </pre>
       *
       * <code>uint64 row_count_in_group = 2;</code>
       * @param value The rowCountInGroup to set.
       * @return This builder for chaining.
       */
      public Builder setRowCountInGroup(long value) {
        
        rowCountInGroup_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Defines the number of rows per group for bitmap indexing. It determines how rows
       * are batched for indexing, with each batch corresponding to a segment in the bitmap.
       * The groups are usually of uniform size, with the exception of the final group which
       * may contain fewer rows if the total row count is not a multiple of 'row_count_in_group'.
       * Segmenting allows indexed values in the tag column to be quickly located within
       * their respective groups during a query, reducing the search space and improving
       * retrieval efficiency.
       * </pre>
       *
       * <code>uint64 row_count_in_group = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearRowCountInGroup() {
        
        rowCountInGroup_ = 0L;
        onChanged();
        return this;
      }

      private long fstOffset_ ;
      /**
       * <pre>
       * The byte offset of the Finite State Transducer (FST) within the SST file.
       * </pre>
       *
       * <code>uint64 fst_offset = 3;</code>
       * @return The fstOffset.
       */
      @java.lang.Override
      public long getFstOffset() {
        return fstOffset_;
      }
      /**
       * <pre>
       * The byte offset of the Finite State Transducer (FST) within the SST file.
       * </pre>
       *
       * <code>uint64 fst_offset = 3;</code>
       * @param value The fstOffset to set.
       * @return This builder for chaining.
       */
      public Builder setFstOffset(long value) {
        
        fstOffset_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The byte offset of the Finite State Transducer (FST) within the SST file.
       * </pre>
       *
       * <code>uint64 fst_offset = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearFstOffset() {
        
        fstOffset_ = 0L;
        onChanged();
        return this;
      }

      private long fstSize_ ;
      /**
       * <pre>
       * The size in bytes of the FST data.
       * </pre>
       *
       * <code>uint64 fst_size = 4;</code>
       * @return The fstSize.
       */
      @java.lang.Override
      public long getFstSize() {
        return fstSize_;
      }
      /**
       * <pre>
       * The size in bytes of the FST data.
       * </pre>
       *
       * <code>uint64 fst_size = 4;</code>
       * @param value The fstSize to set.
       * @return This builder for chaining.
       */
      public Builder setFstSize(long value) {
        
        fstSize_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The size in bytes of the FST data.
       * </pre>
       *
       * <code>uint64 fst_size = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearFstSize() {
        
        fstSize_ = 0L;
        onChanged();
        return this;
      }

      private long nullBitmapOffset_ ;
      /**
       * <pre>
       * The byte offset where the null bitmap for this tag starts.
       * </pre>
       *
       * <code>uint64 null_bitmap_offset = 5;</code>
       * @return The nullBitmapOffset.
       */
      @java.lang.Override
      public long getNullBitmapOffset() {
        return nullBitmapOffset_;
      }
      /**
       * <pre>
       * The byte offset where the null bitmap for this tag starts.
       * </pre>
       *
       * <code>uint64 null_bitmap_offset = 5;</code>
       * @param value The nullBitmapOffset to set.
       * @return This builder for chaining.
       */
      public Builder setNullBitmapOffset(long value) {
        
        nullBitmapOffset_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The byte offset where the null bitmap for this tag starts.
       * </pre>
       *
       * <code>uint64 null_bitmap_offset = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearNullBitmapOffset() {
        
        nullBitmapOffset_ = 0L;
        onChanged();
        return this;
      }

      private long nullBitmapSize_ ;
      /**
       * <pre>
       * The size in bytes of the null bitmap.
       * </pre>
       *
       * <code>uint64 null_bitmap_size = 6;</code>
       * @return The nullBitmapSize.
       */
      @java.lang.Override
      public long getNullBitmapSize() {
        return nullBitmapSize_;
      }
      /**
       * <pre>
       * The size in bytes of the null bitmap.
       * </pre>
       *
       * <code>uint64 null_bitmap_size = 6;</code>
       * @param value The nullBitmapSize to set.
       * @return This builder for chaining.
       */
      public Builder setNullBitmapSize(long value) {
        
        nullBitmapSize_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The size in bytes of the null bitmap.
       * </pre>
       *
       * <code>uint64 null_bitmap_size = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearNullBitmapSize() {
        
        nullBitmapSize_ = 0L;
        onChanged();
        return this;
      }

      private io.greptime.v1.index.InvertedIndex.InvertedIndexStats stats_;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.greptime.v1.index.InvertedIndex.InvertedIndexStats, io.greptime.v1.index.InvertedIndex.InvertedIndexStats.Builder, io.greptime.v1.index.InvertedIndex.InvertedIndexStatsOrBuilder> statsBuilder_;
      /**
       * <pre>
       * Statistical information about the tag's inverted index.
       * </pre>
       *
       * <code>.greptime.v1.index.InvertedIndexStats stats = 7;</code>
       * @return Whether the stats field is set.
       */
      public boolean hasStats() {
        return statsBuilder_ != null || stats_ != null;
      }
      /**
       * <pre>
       * Statistical information about the tag's inverted index.
       * </pre>
       *
       * <code>.greptime.v1.index.InvertedIndexStats stats = 7;</code>
       * @return The stats.
       */
      public io.greptime.v1.index.InvertedIndex.InvertedIndexStats getStats() {
        if (statsBuilder_ == null) {
          return stats_ == null ? io.greptime.v1.index.InvertedIndex.InvertedIndexStats.getDefaultInstance() : stats_;
        } else {
          return statsBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Statistical information about the tag's inverted index.
       * </pre>
       *
       * <code>.greptime.v1.index.InvertedIndexStats stats = 7;</code>
       */
      public Builder setStats(io.greptime.v1.index.InvertedIndex.InvertedIndexStats value) {
        if (statsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          stats_ = value;
          onChanged();
        } else {
          statsBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * Statistical information about the tag's inverted index.
       * </pre>
       *
       * <code>.greptime.v1.index.InvertedIndexStats stats = 7;</code>
       */
      public Builder setStats(
          io.greptime.v1.index.InvertedIndex.InvertedIndexStats.Builder builderForValue) {
        if (statsBuilder_ == null) {
          stats_ = builderForValue.build();
          onChanged();
        } else {
          statsBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * Statistical information about the tag's inverted index.
       * </pre>
       *
       * <code>.greptime.v1.index.InvertedIndexStats stats = 7;</code>
       */
      public Builder mergeStats(io.greptime.v1.index.InvertedIndex.InvertedIndexStats value) {
        if (statsBuilder_ == null) {
          if (stats_ != null) {
            stats_ =
              io.greptime.v1.index.InvertedIndex.InvertedIndexStats.newBuilder(stats_).mergeFrom(value).buildPartial();
          } else {
            stats_ = value;
          }
          onChanged();
        } else {
          statsBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * Statistical information about the tag's inverted index.
       * </pre>
       *
       * <code>.greptime.v1.index.InvertedIndexStats stats = 7;</code>
       */
      public Builder clearStats() {
        if (statsBuilder_ == null) {
          stats_ = null;
          onChanged();
        } else {
          stats_ = null;
          statsBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * Statistical information about the tag's inverted index.
       * </pre>
       *
       * <code>.greptime.v1.index.InvertedIndexStats stats = 7;</code>
       */
      public io.greptime.v1.index.InvertedIndex.InvertedIndexStats.Builder getStatsBuilder() {
        
        onChanged();
        return getStatsFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Statistical information about the tag's inverted index.
       * </pre>
       *
       * <code>.greptime.v1.index.InvertedIndexStats stats = 7;</code>
       */
      public io.greptime.v1.index.InvertedIndex.InvertedIndexStatsOrBuilder getStatsOrBuilder() {
        if (statsBuilder_ != null) {
          return statsBuilder_.getMessageOrBuilder();
        } else {
          return stats_ == null ?
              io.greptime.v1.index.InvertedIndex.InvertedIndexStats.getDefaultInstance() : stats_;
        }
      }
      /**
       * <pre>
       * Statistical information about the tag's inverted index.
       * </pre>
       *
       * <code>.greptime.v1.index.InvertedIndexStats stats = 7;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.greptime.v1.index.InvertedIndex.InvertedIndexStats, io.greptime.v1.index.InvertedIndex.InvertedIndexStats.Builder, io.greptime.v1.index.InvertedIndex.InvertedIndexStatsOrBuilder> 
          getStatsFieldBuilder() {
        if (statsBuilder_ == null) {
          statsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.greptime.v1.index.InvertedIndex.InvertedIndexStats, io.greptime.v1.index.InvertedIndex.InvertedIndexStats.Builder, io.greptime.v1.index.InvertedIndex.InvertedIndexStatsOrBuilder>(
                  getStats(),
                  getParentForChildren(),
                  isClean());
          stats_ = null;
        }
        return statsBuilder_;
      }
      @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:greptime.v1.index.InvertedIndexMeta)
    }

    // @@protoc_insertion_point(class_scope:greptime.v1.index.InvertedIndexMeta)
    private static final io.greptime.v1.index.InvertedIndex.InvertedIndexMeta DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.greptime.v1.index.InvertedIndex.InvertedIndexMeta();
    }

    public static io.greptime.v1.index.InvertedIndex.InvertedIndexMeta getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<InvertedIndexMeta>
        PARSER = new com.google.protobuf.AbstractParser<InvertedIndexMeta>() {
      @java.lang.Override
      public InvertedIndexMeta parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new InvertedIndexMeta(input, extensionRegistry);
      }
    };

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

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

    @java.lang.Override
    public io.greptime.v1.index.InvertedIndex.InvertedIndexMeta getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface InvertedIndexStatsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:greptime.v1.index.InvertedIndexStats)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The count of null entries within the tag's column.
     * </pre>
     *
     * <code>uint64 null_count = 1;</code>
     * @return The nullCount.
     */
    long getNullCount();

    /**
     * <pre>
     * The number of distinct values within the tag's column.
     * </pre>
     *
     * <code>uint64 distinct_count = 2;</code>
     * @return The distinctCount.
     */
    long getDistinctCount();

    /**
     * <pre>
     * The minimum value found within the tag's column, encoded as bytes.
     * </pre>
     *
     * <code>bytes min_value = 3;</code>
     * @return The minValue.
     */
    com.google.protobuf.ByteString getMinValue();

    /**
     * <pre>
     * The maximum value found within the tag's column, encoded as bytes.
     * </pre>
     *
     * <code>bytes max_value = 4;</code>
     * @return The maxValue.
     */
    com.google.protobuf.ByteString getMaxValue();
  }
  /**
   * <pre>
   * InvertedIndexStats provides statistical data on a tag's inverted index.
   * </pre>
   *
   * Protobuf type {@code greptime.v1.index.InvertedIndexStats}
   */
  public static final class InvertedIndexStats extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:greptime.v1.index.InvertedIndexStats)
      InvertedIndexStatsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use InvertedIndexStats.newBuilder() to construct.
    private InvertedIndexStats(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private InvertedIndexStats() {
      minValue_ = com.google.protobuf.ByteString.EMPTY;
      maxValue_ = com.google.protobuf.ByteString.EMPTY;
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private InvertedIndexStats(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {

              nullCount_ = input.readUInt64();
              break;
            }
            case 16: {

              distinctCount_ = input.readUInt64();
              break;
            }
            case 26: {

              minValue_ = input.readBytes();
              break;
            }
            case 34: {

              maxValue_ = input.readBytes();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (com.google.protobuf.UninitializedMessageException e) {
        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.greptime.v1.index.InvertedIndex.internal_static_greptime_v1_index_InvertedIndexStats_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.greptime.v1.index.InvertedIndex.internal_static_greptime_v1_index_InvertedIndexStats_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.greptime.v1.index.InvertedIndex.InvertedIndexStats.class, io.greptime.v1.index.InvertedIndex.InvertedIndexStats.Builder.class);
    }

    public static final int NULL_COUNT_FIELD_NUMBER = 1;
    private long nullCount_;
    /**
     * <pre>
     * The count of null entries within the tag's column.
     * </pre>
     *
     * <code>uint64 null_count = 1;</code>
     * @return The nullCount.
     */
    @java.lang.Override
    public long getNullCount() {
      return nullCount_;
    }

    public static final int DISTINCT_COUNT_FIELD_NUMBER = 2;
    private long distinctCount_;
    /**
     * <pre>
     * The number of distinct values within the tag's column.
     * </pre>
     *
     * <code>uint64 distinct_count = 2;</code>
     * @return The distinctCount.
     */
    @java.lang.Override
    public long getDistinctCount() {
      return distinctCount_;
    }

    public static final int MIN_VALUE_FIELD_NUMBER = 3;
    private com.google.protobuf.ByteString minValue_;
    /**
     * <pre>
     * The minimum value found within the tag's column, encoded as bytes.
     * </pre>
     *
     * <code>bytes min_value = 3;</code>
     * @return The minValue.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getMinValue() {
      return minValue_;
    }

    public static final int MAX_VALUE_FIELD_NUMBER = 4;
    private com.google.protobuf.ByteString maxValue_;
    /**
     * <pre>
     * The maximum value found within the tag's column, encoded as bytes.
     * </pre>
     *
     * <code>bytes max_value = 4;</code>
     * @return The maxValue.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getMaxValue() {
      return maxValue_;
    }

    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 (nullCount_ != 0L) {
        output.writeUInt64(1, nullCount_);
      }
      if (distinctCount_ != 0L) {
        output.writeUInt64(2, distinctCount_);
      }
      if (!minValue_.isEmpty()) {
        output.writeBytes(3, minValue_);
      }
      if (!maxValue_.isEmpty()) {
        output.writeBytes(4, maxValue_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (nullCount_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(1, nullCount_);
      }
      if (distinctCount_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(2, distinctCount_);
      }
      if (!minValue_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, minValue_);
      }
      if (!maxValue_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, maxValue_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.greptime.v1.index.InvertedIndex.InvertedIndexStats)) {
        return super.equals(obj);
      }
      io.greptime.v1.index.InvertedIndex.InvertedIndexStats other = (io.greptime.v1.index.InvertedIndex.InvertedIndexStats) obj;

      if (getNullCount()
          != other.getNullCount()) return false;
      if (getDistinctCount()
          != other.getDistinctCount()) return false;
      if (!getMinValue()
          .equals(other.getMinValue())) return false;
      if (!getMaxValue()
          .equals(other.getMaxValue())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + NULL_COUNT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getNullCount());
      hash = (37 * hash) + DISTINCT_COUNT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getDistinctCount());
      hash = (37 * hash) + MIN_VALUE_FIELD_NUMBER;
      hash = (53 * hash) + getMinValue().hashCode();
      hash = (37 * hash) + MAX_VALUE_FIELD_NUMBER;
      hash = (53 * hash) + getMaxValue().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.greptime.v1.index.InvertedIndex.InvertedIndexStats parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.greptime.v1.index.InvertedIndex.InvertedIndexStats parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.greptime.v1.index.InvertedIndex.InvertedIndexStats parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.greptime.v1.index.InvertedIndex.InvertedIndexStats parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.greptime.v1.index.InvertedIndex.InvertedIndexStats parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.greptime.v1.index.InvertedIndex.InvertedIndexStats parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.greptime.v1.index.InvertedIndex.InvertedIndexStats parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.greptime.v1.index.InvertedIndex.InvertedIndexStats 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 io.greptime.v1.index.InvertedIndex.InvertedIndexStats parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.greptime.v1.index.InvertedIndex.InvertedIndexStats 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 io.greptime.v1.index.InvertedIndex.InvertedIndexStats parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.greptime.v1.index.InvertedIndex.InvertedIndexStats 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(io.greptime.v1.index.InvertedIndex.InvertedIndexStats 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>
     * InvertedIndexStats provides statistical data on a tag's inverted index.
     * </pre>
     *
     * Protobuf type {@code greptime.v1.index.InvertedIndexStats}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:greptime.v1.index.InvertedIndexStats)
        io.greptime.v1.index.InvertedIndex.InvertedIndexStatsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.greptime.v1.index.InvertedIndex.internal_static_greptime_v1_index_InvertedIndexStats_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.greptime.v1.index.InvertedIndex.internal_static_greptime_v1_index_InvertedIndexStats_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.greptime.v1.index.InvertedIndex.InvertedIndexStats.class, io.greptime.v1.index.InvertedIndex.InvertedIndexStats.Builder.class);
      }

      // Construct using io.greptime.v1.index.InvertedIndex.InvertedIndexStats.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        nullCount_ = 0L;

        distinctCount_ = 0L;

        minValue_ = com.google.protobuf.ByteString.EMPTY;

        maxValue_ = com.google.protobuf.ByteString.EMPTY;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.greptime.v1.index.InvertedIndex.internal_static_greptime_v1_index_InvertedIndexStats_descriptor;
      }

      @java.lang.Override
      public io.greptime.v1.index.InvertedIndex.InvertedIndexStats getDefaultInstanceForType() {
        return io.greptime.v1.index.InvertedIndex.InvertedIndexStats.getDefaultInstance();
      }

      @java.lang.Override
      public io.greptime.v1.index.InvertedIndex.InvertedIndexStats build() {
        io.greptime.v1.index.InvertedIndex.InvertedIndexStats result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.greptime.v1.index.InvertedIndex.InvertedIndexStats buildPartial() {
        io.greptime.v1.index.InvertedIndex.InvertedIndexStats result = new io.greptime.v1.index.InvertedIndex.InvertedIndexStats(this);
        result.nullCount_ = nullCount_;
        result.distinctCount_ = distinctCount_;
        result.minValue_ = minValue_;
        result.maxValue_ = maxValue_;
        onBuilt();
        return result;
      }

      @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 io.greptime.v1.index.InvertedIndex.InvertedIndexStats) {
          return mergeFrom((io.greptime.v1.index.InvertedIndex.InvertedIndexStats)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.greptime.v1.index.InvertedIndex.InvertedIndexStats other) {
        if (other == io.greptime.v1.index.InvertedIndex.InvertedIndexStats.getDefaultInstance()) return this;
        if (other.getNullCount() != 0L) {
          setNullCount(other.getNullCount());
        }
        if (other.getDistinctCount() != 0L) {
          setDistinctCount(other.getDistinctCount());
        }
        if (other.getMinValue() != com.google.protobuf.ByteString.EMPTY) {
          setMinValue(other.getMinValue());
        }
        if (other.getMaxValue() != com.google.protobuf.ByteString.EMPTY) {
          setMaxValue(other.getMaxValue());
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        io.greptime.v1.index.InvertedIndex.InvertedIndexStats parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.greptime.v1.index.InvertedIndex.InvertedIndexStats) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private long nullCount_ ;
      /**
       * <pre>
       * The count of null entries within the tag's column.
       * </pre>
       *
       * <code>uint64 null_count = 1;</code>
       * @return The nullCount.
       */
      @java.lang.Override
      public long getNullCount() {
        return nullCount_;
      }
      /**
       * <pre>
       * The count of null entries within the tag's column.
       * </pre>
       *
       * <code>uint64 null_count = 1;</code>
       * @param value The nullCount to set.
       * @return This builder for chaining.
       */
      public Builder setNullCount(long value) {
        
        nullCount_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The count of null entries within the tag's column.
       * </pre>
       *
       * <code>uint64 null_count = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearNullCount() {
        
        nullCount_ = 0L;
        onChanged();
        return this;
      }

      private long distinctCount_ ;
      /**
       * <pre>
       * The number of distinct values within the tag's column.
       * </pre>
       *
       * <code>uint64 distinct_count = 2;</code>
       * @return The distinctCount.
       */
      @java.lang.Override
      public long getDistinctCount() {
        return distinctCount_;
      }
      /**
       * <pre>
       * The number of distinct values within the tag's column.
       * </pre>
       *
       * <code>uint64 distinct_count = 2;</code>
       * @param value The distinctCount to set.
       * @return This builder for chaining.
       */
      public Builder setDistinctCount(long value) {
        
        distinctCount_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The number of distinct values within the tag's column.
       * </pre>
       *
       * <code>uint64 distinct_count = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearDistinctCount() {
        
        distinctCount_ = 0L;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString minValue_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       * The minimum value found within the tag's column, encoded as bytes.
       * </pre>
       *
       * <code>bytes min_value = 3;</code>
       * @return The minValue.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getMinValue() {
        return minValue_;
      }
      /**
       * <pre>
       * The minimum value found within the tag's column, encoded as bytes.
       * </pre>
       *
       * <code>bytes min_value = 3;</code>
       * @param value The minValue to set.
       * @return This builder for chaining.
       */
      public Builder setMinValue(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        minValue_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The minimum value found within the tag's column, encoded as bytes.
       * </pre>
       *
       * <code>bytes min_value = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearMinValue() {
        
        minValue_ = getDefaultInstance().getMinValue();
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString maxValue_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       * The maximum value found within the tag's column, encoded as bytes.
       * </pre>
       *
       * <code>bytes max_value = 4;</code>
       * @return The maxValue.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getMaxValue() {
        return maxValue_;
      }
      /**
       * <pre>
       * The maximum value found within the tag's column, encoded as bytes.
       * </pre>
       *
       * <code>bytes max_value = 4;</code>
       * @param value The maxValue to set.
       * @return This builder for chaining.
       */
      public Builder setMaxValue(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        maxValue_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The maximum value found within the tag's column, encoded as bytes.
       * </pre>
       *
       * <code>bytes max_value = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearMaxValue() {
        
        maxValue_ = getDefaultInstance().getMaxValue();
        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:greptime.v1.index.InvertedIndexStats)
    }

    // @@protoc_insertion_point(class_scope:greptime.v1.index.InvertedIndexStats)
    private static final io.greptime.v1.index.InvertedIndex.InvertedIndexStats DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.greptime.v1.index.InvertedIndex.InvertedIndexStats();
    }

    public static io.greptime.v1.index.InvertedIndex.InvertedIndexStats getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<InvertedIndexStats>
        PARSER = new com.google.protobuf.AbstractParser<InvertedIndexStats>() {
      @java.lang.Override
      public InvertedIndexStats parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new InvertedIndexStats(input, extensionRegistry);
      }
    };

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

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

    @java.lang.Override
    public io.greptime.v1.index.InvertedIndex.InvertedIndexStats getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_greptime_v1_index_InvertedIndexFooter_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_greptime_v1_index_InvertedIndexFooter_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_greptime_v1_index_InvertedIndexFooter_MetasEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_greptime_v1_index_InvertedIndexFooter_MetasEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_greptime_v1_index_InvertedIndexMeta_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_greptime_v1_index_InvertedIndexMeta_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_greptime_v1_index_InvertedIndexStats_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_greptime_v1_index_InvertedIndexStats_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&greptime/v1/index/inverted_index.proto" +
      "\022\021greptime.v1.index\"\253\001\n\023InvertedIndexFoo" +
      "ter\022@\n\005metas\030\001 \003(\01321.greptime.v1.index.I" +
      "nvertedIndexFooter.MetasEntry\032R\n\nMetasEn" +
      "try\022\013\n\003key\030\001 \001(\t\0223\n\005value\030\002 \001(\0132$.grepti" +
      "me.v1.index.InvertedIndexMeta:\0028\001\"\317\001\n\021In" +
      "vertedIndexMeta\022\014\n\004name\030\001 \001(\t\022\032\n\022row_cou" +
      "nt_in_group\030\002 \001(\004\022\022\n\nfst_offset\030\003 \001(\004\022\020\n" +
      "\010fst_size\030\004 \001(\004\022\032\n\022null_bitmap_offset\030\005 " +
      "\001(\004\022\030\n\020null_bitmap_size\030\006 \001(\004\0224\n\005stats\030\007" +
      " \001(\0132%.greptime.v1.index.InvertedIndexSt" +
      "ats\"f\n\022InvertedIndexStats\022\022\n\nnull_count\030" +
      "\001 \001(\004\022\026\n\016distinct_count\030\002 \001(\004\022\021\n\tmin_val" +
      "ue\030\003 \001(\014\022\021\n\tmax_value\030\004 \001(\014BS\n\024io.grepti" +
      "me.v1.indexZ;github.com/GreptimeTeam/gre" +
      "ptime-proto/go/greptime/v1/indexb\006proto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        });
    internal_static_greptime_v1_index_InvertedIndexFooter_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_greptime_v1_index_InvertedIndexFooter_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_greptime_v1_index_InvertedIndexFooter_descriptor,
        new java.lang.String[] { "Metas", });
    internal_static_greptime_v1_index_InvertedIndexFooter_MetasEntry_descriptor =
      internal_static_greptime_v1_index_InvertedIndexFooter_descriptor.getNestedTypes().get(0);
    internal_static_greptime_v1_index_InvertedIndexFooter_MetasEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_greptime_v1_index_InvertedIndexFooter_MetasEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_greptime_v1_index_InvertedIndexMeta_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_greptime_v1_index_InvertedIndexMeta_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_greptime_v1_index_InvertedIndexMeta_descriptor,
        new java.lang.String[] { "Name", "RowCountInGroup", "FstOffset", "FstSize", "NullBitmapOffset", "NullBitmapSize", "Stats", });
    internal_static_greptime_v1_index_InvertedIndexStats_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_greptime_v1_index_InvertedIndexStats_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_greptime_v1_index_InvertedIndexStats_descriptor,
        new java.lang.String[] { "NullCount", "DistinctCount", "MinValue", "MaxValue", });
  }

  // @@protoc_insertion_point(outer_class_scope)
}
