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

package substrait_extension;

public final class PromqlPlan {
  private PromqlPlan() {}
  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 EmptyMetricOrBuilder extends
      // @@protoc_insertion_point(interface_extends:substrait_extension.EmptyMetric)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Start timestamp in millisecond
     * </pre>
     *
     * <code>int64 start = 1;</code>
     * @return The start.
     */
    long getStart();

    /**
     * <pre>
     * End timestamp in millisecond
     * </pre>
     *
     * <code>int64 end = 2;</code>
     * @return The end.
     */
    long getEnd();

    /**
     * <pre>
     * Interval in millisecond
     * </pre>
     *
     * <code>int64 interval = 3;</code>
     * @return The interval.
     */
    long getInterval();
  }
  /**
   * Protobuf type {@code substrait_extension.EmptyMetric}
   */
  public static final class EmptyMetric extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:substrait_extension.EmptyMetric)
      EmptyMetricOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use EmptyMetric.newBuilder() to construct.
    private EmptyMetric(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private EmptyMetric() {
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private EmptyMetric(
        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: {

              start_ = input.readInt64();
              break;
            }
            case 16: {

              end_ = input.readInt64();
              break;
            }
            case 24: {

              interval_ = input.readInt64();
              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 substrait_extension.PromqlPlan.internal_static_substrait_extension_EmptyMetric_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return substrait_extension.PromqlPlan.internal_static_substrait_extension_EmptyMetric_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              substrait_extension.PromqlPlan.EmptyMetric.class, substrait_extension.PromqlPlan.EmptyMetric.Builder.class);
    }

    public static final int START_FIELD_NUMBER = 1;
    private long start_;
    /**
     * <pre>
     * Start timestamp in millisecond
     * </pre>
     *
     * <code>int64 start = 1;</code>
     * @return The start.
     */
    @java.lang.Override
    public long getStart() {
      return start_;
    }

    public static final int END_FIELD_NUMBER = 2;
    private long end_;
    /**
     * <pre>
     * End timestamp in millisecond
     * </pre>
     *
     * <code>int64 end = 2;</code>
     * @return The end.
     */
    @java.lang.Override
    public long getEnd() {
      return end_;
    }

    public static final int INTERVAL_FIELD_NUMBER = 3;
    private long interval_;
    /**
     * <pre>
     * Interval in millisecond
     * </pre>
     *
     * <code>int64 interval = 3;</code>
     * @return The interval.
     */
    @java.lang.Override
    public long getInterval() {
      return interval_;
    }

    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 (start_ != 0L) {
        output.writeInt64(1, start_);
      }
      if (end_ != 0L) {
        output.writeInt64(2, end_);
      }
      if (interval_ != 0L) {
        output.writeInt64(3, interval_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (start_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(1, start_);
      }
      if (end_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, end_);
      }
      if (interval_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, interval_);
      }
      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 substrait_extension.PromqlPlan.EmptyMetric)) {
        return super.equals(obj);
      }
      substrait_extension.PromqlPlan.EmptyMetric other = (substrait_extension.PromqlPlan.EmptyMetric) obj;

      if (getStart()
          != other.getStart()) return false;
      if (getEnd()
          != other.getEnd()) return false;
      if (getInterval()
          != other.getInterval()) 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) + START_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getStart());
      hash = (37 * hash) + END_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getEnd());
      hash = (37 * hash) + INTERVAL_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getInterval());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static substrait_extension.PromqlPlan.EmptyMetric parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static substrait_extension.PromqlPlan.EmptyMetric parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static substrait_extension.PromqlPlan.EmptyMetric parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static substrait_extension.PromqlPlan.EmptyMetric parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static substrait_extension.PromqlPlan.EmptyMetric parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static substrait_extension.PromqlPlan.EmptyMetric parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static substrait_extension.PromqlPlan.EmptyMetric parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static substrait_extension.PromqlPlan.EmptyMetric 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 substrait_extension.PromqlPlan.EmptyMetric parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static substrait_extension.PromqlPlan.EmptyMetric 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 substrait_extension.PromqlPlan.EmptyMetric parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static substrait_extension.PromqlPlan.EmptyMetric 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(substrait_extension.PromqlPlan.EmptyMetric prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code substrait_extension.EmptyMetric}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:substrait_extension.EmptyMetric)
        substrait_extension.PromqlPlan.EmptyMetricOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return substrait_extension.PromqlPlan.internal_static_substrait_extension_EmptyMetric_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return substrait_extension.PromqlPlan.internal_static_substrait_extension_EmptyMetric_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                substrait_extension.PromqlPlan.EmptyMetric.class, substrait_extension.PromqlPlan.EmptyMetric.Builder.class);
      }

      // Construct using substrait_extension.PromqlPlan.EmptyMetric.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();
        start_ = 0L;

        end_ = 0L;

        interval_ = 0L;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return substrait_extension.PromqlPlan.internal_static_substrait_extension_EmptyMetric_descriptor;
      }

      @java.lang.Override
      public substrait_extension.PromqlPlan.EmptyMetric getDefaultInstanceForType() {
        return substrait_extension.PromqlPlan.EmptyMetric.getDefaultInstance();
      }

      @java.lang.Override
      public substrait_extension.PromqlPlan.EmptyMetric build() {
        substrait_extension.PromqlPlan.EmptyMetric result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public substrait_extension.PromqlPlan.EmptyMetric buildPartial() {
        substrait_extension.PromqlPlan.EmptyMetric result = new substrait_extension.PromqlPlan.EmptyMetric(this);
        result.start_ = start_;
        result.end_ = end_;
        result.interval_ = interval_;
        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 substrait_extension.PromqlPlan.EmptyMetric) {
          return mergeFrom((substrait_extension.PromqlPlan.EmptyMetric)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(substrait_extension.PromqlPlan.EmptyMetric other) {
        if (other == substrait_extension.PromqlPlan.EmptyMetric.getDefaultInstance()) return this;
        if (other.getStart() != 0L) {
          setStart(other.getStart());
        }
        if (other.getEnd() != 0L) {
          setEnd(other.getEnd());
        }
        if (other.getInterval() != 0L) {
          setInterval(other.getInterval());
        }
        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 {
        substrait_extension.PromqlPlan.EmptyMetric parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (substrait_extension.PromqlPlan.EmptyMetric) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private long start_ ;
      /**
       * <pre>
       * Start timestamp in millisecond
       * </pre>
       *
       * <code>int64 start = 1;</code>
       * @return The start.
       */
      @java.lang.Override
      public long getStart() {
        return start_;
      }
      /**
       * <pre>
       * Start timestamp in millisecond
       * </pre>
       *
       * <code>int64 start = 1;</code>
       * @param value The start to set.
       * @return This builder for chaining.
       */
      public Builder setStart(long value) {
        
        start_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Start timestamp in millisecond
       * </pre>
       *
       * <code>int64 start = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearStart() {
        
        start_ = 0L;
        onChanged();
        return this;
      }

      private long end_ ;
      /**
       * <pre>
       * End timestamp in millisecond
       * </pre>
       *
       * <code>int64 end = 2;</code>
       * @return The end.
       */
      @java.lang.Override
      public long getEnd() {
        return end_;
      }
      /**
       * <pre>
       * End timestamp in millisecond
       * </pre>
       *
       * <code>int64 end = 2;</code>
       * @param value The end to set.
       * @return This builder for chaining.
       */
      public Builder setEnd(long value) {
        
        end_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * End timestamp in millisecond
       * </pre>
       *
       * <code>int64 end = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearEnd() {
        
        end_ = 0L;
        onChanged();
        return this;
      }

      private long interval_ ;
      /**
       * <pre>
       * Interval in millisecond
       * </pre>
       *
       * <code>int64 interval = 3;</code>
       * @return The interval.
       */
      @java.lang.Override
      public long getInterval() {
        return interval_;
      }
      /**
       * <pre>
       * Interval in millisecond
       * </pre>
       *
       * <code>int64 interval = 3;</code>
       * @param value The interval to set.
       * @return This builder for chaining.
       */
      public Builder setInterval(long value) {
        
        interval_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Interval in millisecond
       * </pre>
       *
       * <code>int64 interval = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearInterval() {
        
        interval_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:substrait_extension.EmptyMetric)
    }

    // @@protoc_insertion_point(class_scope:substrait_extension.EmptyMetric)
    private static final substrait_extension.PromqlPlan.EmptyMetric DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new substrait_extension.PromqlPlan.EmptyMetric();
    }

    public static substrait_extension.PromqlPlan.EmptyMetric getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public substrait_extension.PromqlPlan.EmptyMetric getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface InstantManipulateOrBuilder extends
      // @@protoc_insertion_point(interface_extends:substrait_extension.InstantManipulate)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Start timestamp in millisecond
     * </pre>
     *
     * <code>int64 start = 1;</code>
     * @return The start.
     */
    long getStart();

    /**
     * <pre>
     * End timestamp in millisecond
     * </pre>
     *
     * <code>int64 end = 2;</code>
     * @return The end.
     */
    long getEnd();

    /**
     * <pre>
     * Interval in millisecond
     * </pre>
     *
     * <code>int64 interval = 3;</code>
     * @return The interval.
     */
    long getInterval();

    /**
     * <pre>
     * Look-back delta in millisecond
     * </pre>
     *
     * <code>int64 lookback_delta = 4;</code>
     * @return The lookbackDelta.
     */
    long getLookbackDelta();

    /**
     * <pre>
     * Column name of time index column
     * </pre>
     *
     * <code>string time_index = 5;</code>
     * @return The timeIndex.
     */
    java.lang.String getTimeIndex();
    /**
     * <pre>
     * Column name of time index column
     * </pre>
     *
     * <code>string time_index = 5;</code>
     * @return The bytes for timeIndex.
     */
    com.google.protobuf.ByteString
        getTimeIndexBytes();

    /**
     * <pre>
     * Optional field column name for validating staleness
     * </pre>
     *
     * <code>string field_index = 6;</code>
     * @return The fieldIndex.
     */
    java.lang.String getFieldIndex();
    /**
     * <pre>
     * Optional field column name for validating staleness
     * </pre>
     *
     * <code>string field_index = 6;</code>
     * @return The bytes for fieldIndex.
     */
    com.google.protobuf.ByteString
        getFieldIndexBytes();
  }
  /**
   * Protobuf type {@code substrait_extension.InstantManipulate}
   */
  public static final class InstantManipulate extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:substrait_extension.InstantManipulate)
      InstantManipulateOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use InstantManipulate.newBuilder() to construct.
    private InstantManipulate(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private InstantManipulate() {
      timeIndex_ = "";
      fieldIndex_ = "";
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private InstantManipulate(
        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: {

              start_ = input.readInt64();
              break;
            }
            case 16: {

              end_ = input.readInt64();
              break;
            }
            case 24: {

              interval_ = input.readInt64();
              break;
            }
            case 32: {

              lookbackDelta_ = input.readInt64();
              break;
            }
            case 42: {
              java.lang.String s = input.readStringRequireUtf8();

              timeIndex_ = s;
              break;
            }
            case 50: {
              java.lang.String s = input.readStringRequireUtf8();

              fieldIndex_ = s;
              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 substrait_extension.PromqlPlan.internal_static_substrait_extension_InstantManipulate_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return substrait_extension.PromqlPlan.internal_static_substrait_extension_InstantManipulate_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              substrait_extension.PromqlPlan.InstantManipulate.class, substrait_extension.PromqlPlan.InstantManipulate.Builder.class);
    }

    public static final int START_FIELD_NUMBER = 1;
    private long start_;
    /**
     * <pre>
     * Start timestamp in millisecond
     * </pre>
     *
     * <code>int64 start = 1;</code>
     * @return The start.
     */
    @java.lang.Override
    public long getStart() {
      return start_;
    }

    public static final int END_FIELD_NUMBER = 2;
    private long end_;
    /**
     * <pre>
     * End timestamp in millisecond
     * </pre>
     *
     * <code>int64 end = 2;</code>
     * @return The end.
     */
    @java.lang.Override
    public long getEnd() {
      return end_;
    }

    public static final int INTERVAL_FIELD_NUMBER = 3;
    private long interval_;
    /**
     * <pre>
     * Interval in millisecond
     * </pre>
     *
     * <code>int64 interval = 3;</code>
     * @return The interval.
     */
    @java.lang.Override
    public long getInterval() {
      return interval_;
    }

    public static final int LOOKBACK_DELTA_FIELD_NUMBER = 4;
    private long lookbackDelta_;
    /**
     * <pre>
     * Look-back delta in millisecond
     * </pre>
     *
     * <code>int64 lookback_delta = 4;</code>
     * @return The lookbackDelta.
     */
    @java.lang.Override
    public long getLookbackDelta() {
      return lookbackDelta_;
    }

    public static final int TIME_INDEX_FIELD_NUMBER = 5;
    private volatile java.lang.Object timeIndex_;
    /**
     * <pre>
     * Column name of time index column
     * </pre>
     *
     * <code>string time_index = 5;</code>
     * @return The timeIndex.
     */
    @java.lang.Override
    public java.lang.String getTimeIndex() {
      java.lang.Object ref = timeIndex_;
      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();
        timeIndex_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Column name of time index column
     * </pre>
     *
     * <code>string time_index = 5;</code>
     * @return The bytes for timeIndex.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTimeIndexBytes() {
      java.lang.Object ref = timeIndex_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        timeIndex_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELD_INDEX_FIELD_NUMBER = 6;
    private volatile java.lang.Object fieldIndex_;
    /**
     * <pre>
     * Optional field column name for validating staleness
     * </pre>
     *
     * <code>string field_index = 6;</code>
     * @return The fieldIndex.
     */
    @java.lang.Override
    public java.lang.String getFieldIndex() {
      java.lang.Object ref = fieldIndex_;
      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();
        fieldIndex_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Optional field column name for validating staleness
     * </pre>
     *
     * <code>string field_index = 6;</code>
     * @return The bytes for fieldIndex.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFieldIndexBytes() {
      java.lang.Object ref = fieldIndex_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fieldIndex_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    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 (start_ != 0L) {
        output.writeInt64(1, start_);
      }
      if (end_ != 0L) {
        output.writeInt64(2, end_);
      }
      if (interval_ != 0L) {
        output.writeInt64(3, interval_);
      }
      if (lookbackDelta_ != 0L) {
        output.writeInt64(4, lookbackDelta_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(timeIndex_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, timeIndex_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(fieldIndex_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, fieldIndex_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (start_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(1, start_);
      }
      if (end_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, end_);
      }
      if (interval_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, interval_);
      }
      if (lookbackDelta_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(4, lookbackDelta_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(timeIndex_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, timeIndex_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(fieldIndex_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, fieldIndex_);
      }
      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 substrait_extension.PromqlPlan.InstantManipulate)) {
        return super.equals(obj);
      }
      substrait_extension.PromqlPlan.InstantManipulate other = (substrait_extension.PromqlPlan.InstantManipulate) obj;

      if (getStart()
          != other.getStart()) return false;
      if (getEnd()
          != other.getEnd()) return false;
      if (getInterval()
          != other.getInterval()) return false;
      if (getLookbackDelta()
          != other.getLookbackDelta()) return false;
      if (!getTimeIndex()
          .equals(other.getTimeIndex())) return false;
      if (!getFieldIndex()
          .equals(other.getFieldIndex())) 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) + START_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getStart());
      hash = (37 * hash) + END_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getEnd());
      hash = (37 * hash) + INTERVAL_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getInterval());
      hash = (37 * hash) + LOOKBACK_DELTA_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getLookbackDelta());
      hash = (37 * hash) + TIME_INDEX_FIELD_NUMBER;
      hash = (53 * hash) + getTimeIndex().hashCode();
      hash = (37 * hash) + FIELD_INDEX_FIELD_NUMBER;
      hash = (53 * hash) + getFieldIndex().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static substrait_extension.PromqlPlan.InstantManipulate parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static substrait_extension.PromqlPlan.InstantManipulate parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static substrait_extension.PromqlPlan.InstantManipulate parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static substrait_extension.PromqlPlan.InstantManipulate parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static substrait_extension.PromqlPlan.InstantManipulate parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static substrait_extension.PromqlPlan.InstantManipulate parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static substrait_extension.PromqlPlan.InstantManipulate parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static substrait_extension.PromqlPlan.InstantManipulate 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 substrait_extension.PromqlPlan.InstantManipulate parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static substrait_extension.PromqlPlan.InstantManipulate 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 substrait_extension.PromqlPlan.InstantManipulate parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static substrait_extension.PromqlPlan.InstantManipulate 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(substrait_extension.PromqlPlan.InstantManipulate prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code substrait_extension.InstantManipulate}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:substrait_extension.InstantManipulate)
        substrait_extension.PromqlPlan.InstantManipulateOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return substrait_extension.PromqlPlan.internal_static_substrait_extension_InstantManipulate_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return substrait_extension.PromqlPlan.internal_static_substrait_extension_InstantManipulate_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                substrait_extension.PromqlPlan.InstantManipulate.class, substrait_extension.PromqlPlan.InstantManipulate.Builder.class);
      }

      // Construct using substrait_extension.PromqlPlan.InstantManipulate.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();
        start_ = 0L;

        end_ = 0L;

        interval_ = 0L;

        lookbackDelta_ = 0L;

        timeIndex_ = "";

        fieldIndex_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return substrait_extension.PromqlPlan.internal_static_substrait_extension_InstantManipulate_descriptor;
      }

      @java.lang.Override
      public substrait_extension.PromqlPlan.InstantManipulate getDefaultInstanceForType() {
        return substrait_extension.PromqlPlan.InstantManipulate.getDefaultInstance();
      }

      @java.lang.Override
      public substrait_extension.PromqlPlan.InstantManipulate build() {
        substrait_extension.PromqlPlan.InstantManipulate result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public substrait_extension.PromqlPlan.InstantManipulate buildPartial() {
        substrait_extension.PromqlPlan.InstantManipulate result = new substrait_extension.PromqlPlan.InstantManipulate(this);
        result.start_ = start_;
        result.end_ = end_;
        result.interval_ = interval_;
        result.lookbackDelta_ = lookbackDelta_;
        result.timeIndex_ = timeIndex_;
        result.fieldIndex_ = fieldIndex_;
        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 substrait_extension.PromqlPlan.InstantManipulate) {
          return mergeFrom((substrait_extension.PromqlPlan.InstantManipulate)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(substrait_extension.PromqlPlan.InstantManipulate other) {
        if (other == substrait_extension.PromqlPlan.InstantManipulate.getDefaultInstance()) return this;
        if (other.getStart() != 0L) {
          setStart(other.getStart());
        }
        if (other.getEnd() != 0L) {
          setEnd(other.getEnd());
        }
        if (other.getInterval() != 0L) {
          setInterval(other.getInterval());
        }
        if (other.getLookbackDelta() != 0L) {
          setLookbackDelta(other.getLookbackDelta());
        }
        if (!other.getTimeIndex().isEmpty()) {
          timeIndex_ = other.timeIndex_;
          onChanged();
        }
        if (!other.getFieldIndex().isEmpty()) {
          fieldIndex_ = other.fieldIndex_;
          onChanged();
        }
        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 {
        substrait_extension.PromqlPlan.InstantManipulate parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (substrait_extension.PromqlPlan.InstantManipulate) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private long start_ ;
      /**
       * <pre>
       * Start timestamp in millisecond
       * </pre>
       *
       * <code>int64 start = 1;</code>
       * @return The start.
       */
      @java.lang.Override
      public long getStart() {
        return start_;
      }
      /**
       * <pre>
       * Start timestamp in millisecond
       * </pre>
       *
       * <code>int64 start = 1;</code>
       * @param value The start to set.
       * @return This builder for chaining.
       */
      public Builder setStart(long value) {
        
        start_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Start timestamp in millisecond
       * </pre>
       *
       * <code>int64 start = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearStart() {
        
        start_ = 0L;
        onChanged();
        return this;
      }

      private long end_ ;
      /**
       * <pre>
       * End timestamp in millisecond
       * </pre>
       *
       * <code>int64 end = 2;</code>
       * @return The end.
       */
      @java.lang.Override
      public long getEnd() {
        return end_;
      }
      /**
       * <pre>
       * End timestamp in millisecond
       * </pre>
       *
       * <code>int64 end = 2;</code>
       * @param value The end to set.
       * @return This builder for chaining.
       */
      public Builder setEnd(long value) {
        
        end_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * End timestamp in millisecond
       * </pre>
       *
       * <code>int64 end = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearEnd() {
        
        end_ = 0L;
        onChanged();
        return this;
      }

      private long interval_ ;
      /**
       * <pre>
       * Interval in millisecond
       * </pre>
       *
       * <code>int64 interval = 3;</code>
       * @return The interval.
       */
      @java.lang.Override
      public long getInterval() {
        return interval_;
      }
      /**
       * <pre>
       * Interval in millisecond
       * </pre>
       *
       * <code>int64 interval = 3;</code>
       * @param value The interval to set.
       * @return This builder for chaining.
       */
      public Builder setInterval(long value) {
        
        interval_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Interval in millisecond
       * </pre>
       *
       * <code>int64 interval = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearInterval() {
        
        interval_ = 0L;
        onChanged();
        return this;
      }

      private long lookbackDelta_ ;
      /**
       * <pre>
       * Look-back delta in millisecond
       * </pre>
       *
       * <code>int64 lookback_delta = 4;</code>
       * @return The lookbackDelta.
       */
      @java.lang.Override
      public long getLookbackDelta() {
        return lookbackDelta_;
      }
      /**
       * <pre>
       * Look-back delta in millisecond
       * </pre>
       *
       * <code>int64 lookback_delta = 4;</code>
       * @param value The lookbackDelta to set.
       * @return This builder for chaining.
       */
      public Builder setLookbackDelta(long value) {
        
        lookbackDelta_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Look-back delta in millisecond
       * </pre>
       *
       * <code>int64 lookback_delta = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearLookbackDelta() {
        
        lookbackDelta_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object timeIndex_ = "";
      /**
       * <pre>
       * Column name of time index column
       * </pre>
       *
       * <code>string time_index = 5;</code>
       * @return The timeIndex.
       */
      public java.lang.String getTimeIndex() {
        java.lang.Object ref = timeIndex_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          timeIndex_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Column name of time index column
       * </pre>
       *
       * <code>string time_index = 5;</code>
       * @return The bytes for timeIndex.
       */
      public com.google.protobuf.ByteString
          getTimeIndexBytes() {
        java.lang.Object ref = timeIndex_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          timeIndex_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Column name of time index column
       * </pre>
       *
       * <code>string time_index = 5;</code>
       * @param value The timeIndex to set.
       * @return This builder for chaining.
       */
      public Builder setTimeIndex(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        timeIndex_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Column name of time index column
       * </pre>
       *
       * <code>string time_index = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearTimeIndex() {
        
        timeIndex_ = getDefaultInstance().getTimeIndex();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Column name of time index column
       * </pre>
       *
       * <code>string time_index = 5;</code>
       * @param value The bytes for timeIndex to set.
       * @return This builder for chaining.
       */
      public Builder setTimeIndexBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        timeIndex_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object fieldIndex_ = "";
      /**
       * <pre>
       * Optional field column name for validating staleness
       * </pre>
       *
       * <code>string field_index = 6;</code>
       * @return The fieldIndex.
       */
      public java.lang.String getFieldIndex() {
        java.lang.Object ref = fieldIndex_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          fieldIndex_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Optional field column name for validating staleness
       * </pre>
       *
       * <code>string field_index = 6;</code>
       * @return The bytes for fieldIndex.
       */
      public com.google.protobuf.ByteString
          getFieldIndexBytes() {
        java.lang.Object ref = fieldIndex_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fieldIndex_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Optional field column name for validating staleness
       * </pre>
       *
       * <code>string field_index = 6;</code>
       * @param value The fieldIndex to set.
       * @return This builder for chaining.
       */
      public Builder setFieldIndex(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        fieldIndex_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Optional field column name for validating staleness
       * </pre>
       *
       * <code>string field_index = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearFieldIndex() {
        
        fieldIndex_ = getDefaultInstance().getFieldIndex();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Optional field column name for validating staleness
       * </pre>
       *
       * <code>string field_index = 6;</code>
       * @param value The bytes for fieldIndex to set.
       * @return This builder for chaining.
       */
      public Builder setFieldIndexBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        fieldIndex_ = value;
        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:substrait_extension.InstantManipulate)
    }

    // @@protoc_insertion_point(class_scope:substrait_extension.InstantManipulate)
    private static final substrait_extension.PromqlPlan.InstantManipulate DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new substrait_extension.PromqlPlan.InstantManipulate();
    }

    public static substrait_extension.PromqlPlan.InstantManipulate getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public substrait_extension.PromqlPlan.InstantManipulate getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SeriesNormalizeOrBuilder extends
      // @@protoc_insertion_point(interface_extends:substrait_extension.SeriesNormalize)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Offset in millisecond
     * </pre>
     *
     * <code>int64 offset = 1;</code>
     * @return The offset.
     */
    long getOffset();

    /**
     * <pre>
     * Column name of time index column
     * </pre>
     *
     * <code>string time_index = 2;</code>
     * @return The timeIndex.
     */
    java.lang.String getTimeIndex();
    /**
     * <pre>
     * Column name of time index column
     * </pre>
     *
     * <code>string time_index = 2;</code>
     * @return The bytes for timeIndex.
     */
    com.google.protobuf.ByteString
        getTimeIndexBytes();

    /**
     * <pre>
     * Whether to filter out NaN value
     * </pre>
     *
     * <code>bool filter_nan = 3;</code>
     * @return The filterNan.
     */
    boolean getFilterNan();

    /**
     * <pre>
     * Names of tag columns
     * </pre>
     *
     * <code>repeated string tag_columns = 4;</code>
     * @return A list containing the tagColumns.
     */
    java.util.List<java.lang.String>
        getTagColumnsList();
    /**
     * <pre>
     * Names of tag columns
     * </pre>
     *
     * <code>repeated string tag_columns = 4;</code>
     * @return The count of tagColumns.
     */
    int getTagColumnsCount();
    /**
     * <pre>
     * Names of tag columns
     * </pre>
     *
     * <code>repeated string tag_columns = 4;</code>
     * @param index The index of the element to return.
     * @return The tagColumns at the given index.
     */
    java.lang.String getTagColumns(int index);
    /**
     * <pre>
     * Names of tag columns
     * </pre>
     *
     * <code>repeated string tag_columns = 4;</code>
     * @param index The index of the value to return.
     * @return The bytes of the tagColumns at the given index.
     */
    com.google.protobuf.ByteString
        getTagColumnsBytes(int index);
  }
  /**
   * Protobuf type {@code substrait_extension.SeriesNormalize}
   */
  public static final class SeriesNormalize extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:substrait_extension.SeriesNormalize)
      SeriesNormalizeOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SeriesNormalize.newBuilder() to construct.
    private SeriesNormalize(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SeriesNormalize() {
      timeIndex_ = "";
      tagColumns_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private SeriesNormalize(
        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 8: {

              offset_ = input.readInt64();
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              timeIndex_ = s;
              break;
            }
            case 24: {

              filterNan_ = input.readBool();
              break;
            }
            case 34: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                tagColumns_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              tagColumns_.add(s);
              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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          tagColumns_ = tagColumns_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return substrait_extension.PromqlPlan.internal_static_substrait_extension_SeriesNormalize_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return substrait_extension.PromqlPlan.internal_static_substrait_extension_SeriesNormalize_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              substrait_extension.PromqlPlan.SeriesNormalize.class, substrait_extension.PromqlPlan.SeriesNormalize.Builder.class);
    }

    public static final int OFFSET_FIELD_NUMBER = 1;
    private long offset_;
    /**
     * <pre>
     * Offset in millisecond
     * </pre>
     *
     * <code>int64 offset = 1;</code>
     * @return The offset.
     */
    @java.lang.Override
    public long getOffset() {
      return offset_;
    }

    public static final int TIME_INDEX_FIELD_NUMBER = 2;
    private volatile java.lang.Object timeIndex_;
    /**
     * <pre>
     * Column name of time index column
     * </pre>
     *
     * <code>string time_index = 2;</code>
     * @return The timeIndex.
     */
    @java.lang.Override
    public java.lang.String getTimeIndex() {
      java.lang.Object ref = timeIndex_;
      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();
        timeIndex_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Column name of time index column
     * </pre>
     *
     * <code>string time_index = 2;</code>
     * @return The bytes for timeIndex.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTimeIndexBytes() {
      java.lang.Object ref = timeIndex_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        timeIndex_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FILTER_NAN_FIELD_NUMBER = 3;
    private boolean filterNan_;
    /**
     * <pre>
     * Whether to filter out NaN value
     * </pre>
     *
     * <code>bool filter_nan = 3;</code>
     * @return The filterNan.
     */
    @java.lang.Override
    public boolean getFilterNan() {
      return filterNan_;
    }

    public static final int TAG_COLUMNS_FIELD_NUMBER = 4;
    private com.google.protobuf.LazyStringList tagColumns_;
    /**
     * <pre>
     * Names of tag columns
     * </pre>
     *
     * <code>repeated string tag_columns = 4;</code>
     * @return A list containing the tagColumns.
     */
    public com.google.protobuf.ProtocolStringList
        getTagColumnsList() {
      return tagColumns_;
    }
    /**
     * <pre>
     * Names of tag columns
     * </pre>
     *
     * <code>repeated string tag_columns = 4;</code>
     * @return The count of tagColumns.
     */
    public int getTagColumnsCount() {
      return tagColumns_.size();
    }
    /**
     * <pre>
     * Names of tag columns
     * </pre>
     *
     * <code>repeated string tag_columns = 4;</code>
     * @param index The index of the element to return.
     * @return The tagColumns at the given index.
     */
    public java.lang.String getTagColumns(int index) {
      return tagColumns_.get(index);
    }
    /**
     * <pre>
     * Names of tag columns
     * </pre>
     *
     * <code>repeated string tag_columns = 4;</code>
     * @param index The index of the value to return.
     * @return The bytes of the tagColumns at the given index.
     */
    public com.google.protobuf.ByteString
        getTagColumnsBytes(int index) {
      return tagColumns_.getByteString(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (offset_ != 0L) {
        output.writeInt64(1, offset_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(timeIndex_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, timeIndex_);
      }
      if (filterNan_ != false) {
        output.writeBool(3, filterNan_);
      }
      for (int i = 0; i < tagColumns_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, tagColumns_.getRaw(i));
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (offset_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(1, offset_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(timeIndex_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, timeIndex_);
      }
      if (filterNan_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, filterNan_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < tagColumns_.size(); i++) {
          dataSize += computeStringSizeNoTag(tagColumns_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getTagColumnsList().size();
      }
      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 substrait_extension.PromqlPlan.SeriesNormalize)) {
        return super.equals(obj);
      }
      substrait_extension.PromqlPlan.SeriesNormalize other = (substrait_extension.PromqlPlan.SeriesNormalize) obj;

      if (getOffset()
          != other.getOffset()) return false;
      if (!getTimeIndex()
          .equals(other.getTimeIndex())) return false;
      if (getFilterNan()
          != other.getFilterNan()) return false;
      if (!getTagColumnsList()
          .equals(other.getTagColumnsList())) 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) + OFFSET_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getOffset());
      hash = (37 * hash) + TIME_INDEX_FIELD_NUMBER;
      hash = (53 * hash) + getTimeIndex().hashCode();
      hash = (37 * hash) + FILTER_NAN_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getFilterNan());
      if (getTagColumnsCount() > 0) {
        hash = (37 * hash) + TAG_COLUMNS_FIELD_NUMBER;
        hash = (53 * hash) + getTagColumnsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static substrait_extension.PromqlPlan.SeriesNormalize parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static substrait_extension.PromqlPlan.SeriesNormalize parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static substrait_extension.PromqlPlan.SeriesNormalize parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static substrait_extension.PromqlPlan.SeriesNormalize parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static substrait_extension.PromqlPlan.SeriesNormalize parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static substrait_extension.PromqlPlan.SeriesNormalize parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static substrait_extension.PromqlPlan.SeriesNormalize parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static substrait_extension.PromqlPlan.SeriesNormalize 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 substrait_extension.PromqlPlan.SeriesNormalize parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static substrait_extension.PromqlPlan.SeriesNormalize 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 substrait_extension.PromqlPlan.SeriesNormalize parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static substrait_extension.PromqlPlan.SeriesNormalize 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(substrait_extension.PromqlPlan.SeriesNormalize prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code substrait_extension.SeriesNormalize}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:substrait_extension.SeriesNormalize)
        substrait_extension.PromqlPlan.SeriesNormalizeOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return substrait_extension.PromqlPlan.internal_static_substrait_extension_SeriesNormalize_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return substrait_extension.PromqlPlan.internal_static_substrait_extension_SeriesNormalize_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                substrait_extension.PromqlPlan.SeriesNormalize.class, substrait_extension.PromqlPlan.SeriesNormalize.Builder.class);
      }

      // Construct using substrait_extension.PromqlPlan.SeriesNormalize.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();
        offset_ = 0L;

        timeIndex_ = "";

        filterNan_ = false;

        tagColumns_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return substrait_extension.PromqlPlan.internal_static_substrait_extension_SeriesNormalize_descriptor;
      }

      @java.lang.Override
      public substrait_extension.PromqlPlan.SeriesNormalize getDefaultInstanceForType() {
        return substrait_extension.PromqlPlan.SeriesNormalize.getDefaultInstance();
      }

      @java.lang.Override
      public substrait_extension.PromqlPlan.SeriesNormalize build() {
        substrait_extension.PromqlPlan.SeriesNormalize result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public substrait_extension.PromqlPlan.SeriesNormalize buildPartial() {
        substrait_extension.PromqlPlan.SeriesNormalize result = new substrait_extension.PromqlPlan.SeriesNormalize(this);
        int from_bitField0_ = bitField0_;
        result.offset_ = offset_;
        result.timeIndex_ = timeIndex_;
        result.filterNan_ = filterNan_;
        if (((bitField0_ & 0x00000001) != 0)) {
          tagColumns_ = tagColumns_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.tagColumns_ = tagColumns_;
        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 substrait_extension.PromqlPlan.SeriesNormalize) {
          return mergeFrom((substrait_extension.PromqlPlan.SeriesNormalize)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(substrait_extension.PromqlPlan.SeriesNormalize other) {
        if (other == substrait_extension.PromqlPlan.SeriesNormalize.getDefaultInstance()) return this;
        if (other.getOffset() != 0L) {
          setOffset(other.getOffset());
        }
        if (!other.getTimeIndex().isEmpty()) {
          timeIndex_ = other.timeIndex_;
          onChanged();
        }
        if (other.getFilterNan() != false) {
          setFilterNan(other.getFilterNan());
        }
        if (!other.tagColumns_.isEmpty()) {
          if (tagColumns_.isEmpty()) {
            tagColumns_ = other.tagColumns_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureTagColumnsIsMutable();
            tagColumns_.addAll(other.tagColumns_);
          }
          onChanged();
        }
        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 {
        substrait_extension.PromqlPlan.SeriesNormalize parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (substrait_extension.PromqlPlan.SeriesNormalize) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private long offset_ ;
      /**
       * <pre>
       * Offset in millisecond
       * </pre>
       *
       * <code>int64 offset = 1;</code>
       * @return The offset.
       */
      @java.lang.Override
      public long getOffset() {
        return offset_;
      }
      /**
       * <pre>
       * Offset in millisecond
       * </pre>
       *
       * <code>int64 offset = 1;</code>
       * @param value The offset to set.
       * @return This builder for chaining.
       */
      public Builder setOffset(long value) {
        
        offset_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Offset in millisecond
       * </pre>
       *
       * <code>int64 offset = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearOffset() {
        
        offset_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object timeIndex_ = "";
      /**
       * <pre>
       * Column name of time index column
       * </pre>
       *
       * <code>string time_index = 2;</code>
       * @return The timeIndex.
       */
      public java.lang.String getTimeIndex() {
        java.lang.Object ref = timeIndex_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          timeIndex_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Column name of time index column
       * </pre>
       *
       * <code>string time_index = 2;</code>
       * @return The bytes for timeIndex.
       */
      public com.google.protobuf.ByteString
          getTimeIndexBytes() {
        java.lang.Object ref = timeIndex_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          timeIndex_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Column name of time index column
       * </pre>
       *
       * <code>string time_index = 2;</code>
       * @param value The timeIndex to set.
       * @return This builder for chaining.
       */
      public Builder setTimeIndex(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        timeIndex_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Column name of time index column
       * </pre>
       *
       * <code>string time_index = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearTimeIndex() {
        
        timeIndex_ = getDefaultInstance().getTimeIndex();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Column name of time index column
       * </pre>
       *
       * <code>string time_index = 2;</code>
       * @param value The bytes for timeIndex to set.
       * @return This builder for chaining.
       */
      public Builder setTimeIndexBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        timeIndex_ = value;
        onChanged();
        return this;
      }

      private boolean filterNan_ ;
      /**
       * <pre>
       * Whether to filter out NaN value
       * </pre>
       *
       * <code>bool filter_nan = 3;</code>
       * @return The filterNan.
       */
      @java.lang.Override
      public boolean getFilterNan() {
        return filterNan_;
      }
      /**
       * <pre>
       * Whether to filter out NaN value
       * </pre>
       *
       * <code>bool filter_nan = 3;</code>
       * @param value The filterNan to set.
       * @return This builder for chaining.
       */
      public Builder setFilterNan(boolean value) {
        
        filterNan_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Whether to filter out NaN value
       * </pre>
       *
       * <code>bool filter_nan = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearFilterNan() {
        
        filterNan_ = false;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList tagColumns_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureTagColumnsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          tagColumns_ = new com.google.protobuf.LazyStringArrayList(tagColumns_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <pre>
       * Names of tag columns
       * </pre>
       *
       * <code>repeated string tag_columns = 4;</code>
       * @return A list containing the tagColumns.
       */
      public com.google.protobuf.ProtocolStringList
          getTagColumnsList() {
        return tagColumns_.getUnmodifiableView();
      }
      /**
       * <pre>
       * Names of tag columns
       * </pre>
       *
       * <code>repeated string tag_columns = 4;</code>
       * @return The count of tagColumns.
       */
      public int getTagColumnsCount() {
        return tagColumns_.size();
      }
      /**
       * <pre>
       * Names of tag columns
       * </pre>
       *
       * <code>repeated string tag_columns = 4;</code>
       * @param index The index of the element to return.
       * @return The tagColumns at the given index.
       */
      public java.lang.String getTagColumns(int index) {
        return tagColumns_.get(index);
      }
      /**
       * <pre>
       * Names of tag columns
       * </pre>
       *
       * <code>repeated string tag_columns = 4;</code>
       * @param index The index of the value to return.
       * @return The bytes of the tagColumns at the given index.
       */
      public com.google.protobuf.ByteString
          getTagColumnsBytes(int index) {
        return tagColumns_.getByteString(index);
      }
      /**
       * <pre>
       * Names of tag columns
       * </pre>
       *
       * <code>repeated string tag_columns = 4;</code>
       * @param index The index to set the value at.
       * @param value The tagColumns to set.
       * @return This builder for chaining.
       */
      public Builder setTagColumns(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureTagColumnsIsMutable();
        tagColumns_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Names of tag columns
       * </pre>
       *
       * <code>repeated string tag_columns = 4;</code>
       * @param value The tagColumns to add.
       * @return This builder for chaining.
       */
      public Builder addTagColumns(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureTagColumnsIsMutable();
        tagColumns_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Names of tag columns
       * </pre>
       *
       * <code>repeated string tag_columns = 4;</code>
       * @param values The tagColumns to add.
       * @return This builder for chaining.
       */
      public Builder addAllTagColumns(
          java.lang.Iterable<java.lang.String> values) {
        ensureTagColumnsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, tagColumns_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Names of tag columns
       * </pre>
       *
       * <code>repeated string tag_columns = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearTagColumns() {
        tagColumns_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Names of tag columns
       * </pre>
       *
       * <code>repeated string tag_columns = 4;</code>
       * @param value The bytes of the tagColumns to add.
       * @return This builder for chaining.
       */
      public Builder addTagColumnsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureTagColumnsIsMutable();
        tagColumns_.add(value);
        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:substrait_extension.SeriesNormalize)
    }

    // @@protoc_insertion_point(class_scope:substrait_extension.SeriesNormalize)
    private static final substrait_extension.PromqlPlan.SeriesNormalize DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new substrait_extension.PromqlPlan.SeriesNormalize();
    }

    public static substrait_extension.PromqlPlan.SeriesNormalize getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public substrait_extension.PromqlPlan.SeriesNormalize getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SeriesDivideOrBuilder extends
      // @@protoc_insertion_point(interface_extends:substrait_extension.SeriesDivide)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Names of tag columns
     * </pre>
     *
     * <code>repeated string tag_columns = 1;</code>
     * @return A list containing the tagColumns.
     */
    java.util.List<java.lang.String>
        getTagColumnsList();
    /**
     * <pre>
     * Names of tag columns
     * </pre>
     *
     * <code>repeated string tag_columns = 1;</code>
     * @return The count of tagColumns.
     */
    int getTagColumnsCount();
    /**
     * <pre>
     * Names of tag columns
     * </pre>
     *
     * <code>repeated string tag_columns = 1;</code>
     * @param index The index of the element to return.
     * @return The tagColumns at the given index.
     */
    java.lang.String getTagColumns(int index);
    /**
     * <pre>
     * Names of tag columns
     * </pre>
     *
     * <code>repeated string tag_columns = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the tagColumns at the given index.
     */
    com.google.protobuf.ByteString
        getTagColumnsBytes(int index);

    /**
     * <pre>
     * Name of time index column
     * </pre>
     *
     * <code>string time_index_column = 2;</code>
     * @return The timeIndexColumn.
     */
    java.lang.String getTimeIndexColumn();
    /**
     * <pre>
     * Name of time index column
     * </pre>
     *
     * <code>string time_index_column = 2;</code>
     * @return The bytes for timeIndexColumn.
     */
    com.google.protobuf.ByteString
        getTimeIndexColumnBytes();
  }
  /**
   * Protobuf type {@code substrait_extension.SeriesDivide}
   */
  public static final class SeriesDivide extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:substrait_extension.SeriesDivide)
      SeriesDivideOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SeriesDivide.newBuilder() to construct.
    private SeriesDivide(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SeriesDivide() {
      tagColumns_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      timeIndexColumn_ = "";
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private SeriesDivide(
        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: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                tagColumns_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              tagColumns_.add(s);
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              timeIndexColumn_ = s;
              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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          tagColumns_ = tagColumns_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return substrait_extension.PromqlPlan.internal_static_substrait_extension_SeriesDivide_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return substrait_extension.PromqlPlan.internal_static_substrait_extension_SeriesDivide_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              substrait_extension.PromqlPlan.SeriesDivide.class, substrait_extension.PromqlPlan.SeriesDivide.Builder.class);
    }

    public static final int TAG_COLUMNS_FIELD_NUMBER = 1;
    private com.google.protobuf.LazyStringList tagColumns_;
    /**
     * <pre>
     * Names of tag columns
     * </pre>
     *
     * <code>repeated string tag_columns = 1;</code>
     * @return A list containing the tagColumns.
     */
    public com.google.protobuf.ProtocolStringList
        getTagColumnsList() {
      return tagColumns_;
    }
    /**
     * <pre>
     * Names of tag columns
     * </pre>
     *
     * <code>repeated string tag_columns = 1;</code>
     * @return The count of tagColumns.
     */
    public int getTagColumnsCount() {
      return tagColumns_.size();
    }
    /**
     * <pre>
     * Names of tag columns
     * </pre>
     *
     * <code>repeated string tag_columns = 1;</code>
     * @param index The index of the element to return.
     * @return The tagColumns at the given index.
     */
    public java.lang.String getTagColumns(int index) {
      return tagColumns_.get(index);
    }
    /**
     * <pre>
     * Names of tag columns
     * </pre>
     *
     * <code>repeated string tag_columns = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the tagColumns at the given index.
     */
    public com.google.protobuf.ByteString
        getTagColumnsBytes(int index) {
      return tagColumns_.getByteString(index);
    }

    public static final int TIME_INDEX_COLUMN_FIELD_NUMBER = 2;
    private volatile java.lang.Object timeIndexColumn_;
    /**
     * <pre>
     * Name of time index column
     * </pre>
     *
     * <code>string time_index_column = 2;</code>
     * @return The timeIndexColumn.
     */
    @java.lang.Override
    public java.lang.String getTimeIndexColumn() {
      java.lang.Object ref = timeIndexColumn_;
      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();
        timeIndexColumn_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Name of time index column
     * </pre>
     *
     * <code>string time_index_column = 2;</code>
     * @return The bytes for timeIndexColumn.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTimeIndexColumnBytes() {
      java.lang.Object ref = timeIndexColumn_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        timeIndexColumn_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < tagColumns_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, tagColumns_.getRaw(i));
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(timeIndexColumn_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, timeIndexColumn_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < tagColumns_.size(); i++) {
          dataSize += computeStringSizeNoTag(tagColumns_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getTagColumnsList().size();
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(timeIndexColumn_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, timeIndexColumn_);
      }
      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 substrait_extension.PromqlPlan.SeriesDivide)) {
        return super.equals(obj);
      }
      substrait_extension.PromqlPlan.SeriesDivide other = (substrait_extension.PromqlPlan.SeriesDivide) obj;

      if (!getTagColumnsList()
          .equals(other.getTagColumnsList())) return false;
      if (!getTimeIndexColumn()
          .equals(other.getTimeIndexColumn())) 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 (getTagColumnsCount() > 0) {
        hash = (37 * hash) + TAG_COLUMNS_FIELD_NUMBER;
        hash = (53 * hash) + getTagColumnsList().hashCode();
      }
      hash = (37 * hash) + TIME_INDEX_COLUMN_FIELD_NUMBER;
      hash = (53 * hash) + getTimeIndexColumn().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static substrait_extension.PromqlPlan.SeriesDivide parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static substrait_extension.PromqlPlan.SeriesDivide parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static substrait_extension.PromqlPlan.SeriesDivide parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static substrait_extension.PromqlPlan.SeriesDivide parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static substrait_extension.PromqlPlan.SeriesDivide parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static substrait_extension.PromqlPlan.SeriesDivide parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static substrait_extension.PromqlPlan.SeriesDivide parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static substrait_extension.PromqlPlan.SeriesDivide 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 substrait_extension.PromqlPlan.SeriesDivide parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static substrait_extension.PromqlPlan.SeriesDivide 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 substrait_extension.PromqlPlan.SeriesDivide parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static substrait_extension.PromqlPlan.SeriesDivide 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(substrait_extension.PromqlPlan.SeriesDivide prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code substrait_extension.SeriesDivide}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:substrait_extension.SeriesDivide)
        substrait_extension.PromqlPlan.SeriesDivideOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return substrait_extension.PromqlPlan.internal_static_substrait_extension_SeriesDivide_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return substrait_extension.PromqlPlan.internal_static_substrait_extension_SeriesDivide_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                substrait_extension.PromqlPlan.SeriesDivide.class, substrait_extension.PromqlPlan.SeriesDivide.Builder.class);
      }

      // Construct using substrait_extension.PromqlPlan.SeriesDivide.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();
        tagColumns_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        timeIndexColumn_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return substrait_extension.PromqlPlan.internal_static_substrait_extension_SeriesDivide_descriptor;
      }

      @java.lang.Override
      public substrait_extension.PromqlPlan.SeriesDivide getDefaultInstanceForType() {
        return substrait_extension.PromqlPlan.SeriesDivide.getDefaultInstance();
      }

      @java.lang.Override
      public substrait_extension.PromqlPlan.SeriesDivide build() {
        substrait_extension.PromqlPlan.SeriesDivide result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public substrait_extension.PromqlPlan.SeriesDivide buildPartial() {
        substrait_extension.PromqlPlan.SeriesDivide result = new substrait_extension.PromqlPlan.SeriesDivide(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) != 0)) {
          tagColumns_ = tagColumns_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.tagColumns_ = tagColumns_;
        result.timeIndexColumn_ = timeIndexColumn_;
        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 substrait_extension.PromqlPlan.SeriesDivide) {
          return mergeFrom((substrait_extension.PromqlPlan.SeriesDivide)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(substrait_extension.PromqlPlan.SeriesDivide other) {
        if (other == substrait_extension.PromqlPlan.SeriesDivide.getDefaultInstance()) return this;
        if (!other.tagColumns_.isEmpty()) {
          if (tagColumns_.isEmpty()) {
            tagColumns_ = other.tagColumns_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureTagColumnsIsMutable();
            tagColumns_.addAll(other.tagColumns_);
          }
          onChanged();
        }
        if (!other.getTimeIndexColumn().isEmpty()) {
          timeIndexColumn_ = other.timeIndexColumn_;
          onChanged();
        }
        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 {
        substrait_extension.PromqlPlan.SeriesDivide parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (substrait_extension.PromqlPlan.SeriesDivide) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.LazyStringList tagColumns_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureTagColumnsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          tagColumns_ = new com.google.protobuf.LazyStringArrayList(tagColumns_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <pre>
       * Names of tag columns
       * </pre>
       *
       * <code>repeated string tag_columns = 1;</code>
       * @return A list containing the tagColumns.
       */
      public com.google.protobuf.ProtocolStringList
          getTagColumnsList() {
        return tagColumns_.getUnmodifiableView();
      }
      /**
       * <pre>
       * Names of tag columns
       * </pre>
       *
       * <code>repeated string tag_columns = 1;</code>
       * @return The count of tagColumns.
       */
      public int getTagColumnsCount() {
        return tagColumns_.size();
      }
      /**
       * <pre>
       * Names of tag columns
       * </pre>
       *
       * <code>repeated string tag_columns = 1;</code>
       * @param index The index of the element to return.
       * @return The tagColumns at the given index.
       */
      public java.lang.String getTagColumns(int index) {
        return tagColumns_.get(index);
      }
      /**
       * <pre>
       * Names of tag columns
       * </pre>
       *
       * <code>repeated string tag_columns = 1;</code>
       * @param index The index of the value to return.
       * @return The bytes of the tagColumns at the given index.
       */
      public com.google.protobuf.ByteString
          getTagColumnsBytes(int index) {
        return tagColumns_.getByteString(index);
      }
      /**
       * <pre>
       * Names of tag columns
       * </pre>
       *
       * <code>repeated string tag_columns = 1;</code>
       * @param index The index to set the value at.
       * @param value The tagColumns to set.
       * @return This builder for chaining.
       */
      public Builder setTagColumns(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureTagColumnsIsMutable();
        tagColumns_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Names of tag columns
       * </pre>
       *
       * <code>repeated string tag_columns = 1;</code>
       * @param value The tagColumns to add.
       * @return This builder for chaining.
       */
      public Builder addTagColumns(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureTagColumnsIsMutable();
        tagColumns_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Names of tag columns
       * </pre>
       *
       * <code>repeated string tag_columns = 1;</code>
       * @param values The tagColumns to add.
       * @return This builder for chaining.
       */
      public Builder addAllTagColumns(
          java.lang.Iterable<java.lang.String> values) {
        ensureTagColumnsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, tagColumns_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Names of tag columns
       * </pre>
       *
       * <code>repeated string tag_columns = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTagColumns() {
        tagColumns_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Names of tag columns
       * </pre>
       *
       * <code>repeated string tag_columns = 1;</code>
       * @param value The bytes of the tagColumns to add.
       * @return This builder for chaining.
       */
      public Builder addTagColumnsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureTagColumnsIsMutable();
        tagColumns_.add(value);
        onChanged();
        return this;
      }

      private java.lang.Object timeIndexColumn_ = "";
      /**
       * <pre>
       * Name of time index column
       * </pre>
       *
       * <code>string time_index_column = 2;</code>
       * @return The timeIndexColumn.
       */
      public java.lang.String getTimeIndexColumn() {
        java.lang.Object ref = timeIndexColumn_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          timeIndexColumn_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Name of time index column
       * </pre>
       *
       * <code>string time_index_column = 2;</code>
       * @return The bytes for timeIndexColumn.
       */
      public com.google.protobuf.ByteString
          getTimeIndexColumnBytes() {
        java.lang.Object ref = timeIndexColumn_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          timeIndexColumn_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Name of time index column
       * </pre>
       *
       * <code>string time_index_column = 2;</code>
       * @param value The timeIndexColumn to set.
       * @return This builder for chaining.
       */
      public Builder setTimeIndexColumn(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        timeIndexColumn_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Name of time index column
       * </pre>
       *
       * <code>string time_index_column = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearTimeIndexColumn() {
        
        timeIndexColumn_ = getDefaultInstance().getTimeIndexColumn();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Name of time index column
       * </pre>
       *
       * <code>string time_index_column = 2;</code>
       * @param value The bytes for timeIndexColumn to set.
       * @return This builder for chaining.
       */
      public Builder setTimeIndexColumnBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        timeIndexColumn_ = value;
        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:substrait_extension.SeriesDivide)
    }

    // @@protoc_insertion_point(class_scope:substrait_extension.SeriesDivide)
    private static final substrait_extension.PromqlPlan.SeriesDivide DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new substrait_extension.PromqlPlan.SeriesDivide();
    }

    public static substrait_extension.PromqlPlan.SeriesDivide getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public substrait_extension.PromqlPlan.SeriesDivide getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface RangeManipulateOrBuilder extends
      // @@protoc_insertion_point(interface_extends:substrait_extension.RangeManipulate)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Start timestamp in millisecond
     * </pre>
     *
     * <code>int64 start = 1;</code>
     * @return The start.
     */
    long getStart();

    /**
     * <pre>
     * End timestamp in millisecond
     * </pre>
     *
     * <code>int64 end = 2;</code>
     * @return The end.
     */
    long getEnd();

    /**
     * <pre>
     * Interval in millisecond
     * </pre>
     *
     * <code>int64 interval = 3;</code>
     * @return The interval.
     */
    long getInterval();

    /**
     * <pre>
     * Range in millisecond
     * </pre>
     *
     * <code>int64 range = 4;</code>
     * @return The range.
     */
    long getRange();

    /**
     * <pre>
     * Column name of time index column
     * </pre>
     *
     * <code>string time_index = 5;</code>
     * @return The timeIndex.
     */
    java.lang.String getTimeIndex();
    /**
     * <pre>
     * Column name of time index column
     * </pre>
     *
     * <code>string time_index = 5;</code>
     * @return The bytes for timeIndex.
     */
    com.google.protobuf.ByteString
        getTimeIndexBytes();

    /**
     * <pre>
     * Names of tag columns
     * </pre>
     *
     * <code>repeated string tag_columns = 6;</code>
     * @return A list containing the tagColumns.
     */
    java.util.List<java.lang.String>
        getTagColumnsList();
    /**
     * <pre>
     * Names of tag columns
     * </pre>
     *
     * <code>repeated string tag_columns = 6;</code>
     * @return The count of tagColumns.
     */
    int getTagColumnsCount();
    /**
     * <pre>
     * Names of tag columns
     * </pre>
     *
     * <code>repeated string tag_columns = 6;</code>
     * @param index The index of the element to return.
     * @return The tagColumns at the given index.
     */
    java.lang.String getTagColumns(int index);
    /**
     * <pre>
     * Names of tag columns
     * </pre>
     *
     * <code>repeated string tag_columns = 6;</code>
     * @param index The index of the value to return.
     * @return The bytes of the tagColumns at the given index.
     */
    com.google.protobuf.ByteString
        getTagColumnsBytes(int index);
  }
  /**
   * Protobuf type {@code substrait_extension.RangeManipulate}
   */
  public static final class RangeManipulate extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:substrait_extension.RangeManipulate)
      RangeManipulateOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use RangeManipulate.newBuilder() to construct.
    private RangeManipulate(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private RangeManipulate() {
      timeIndex_ = "";
      tagColumns_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private RangeManipulate(
        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 8: {

              start_ = input.readInt64();
              break;
            }
            case 16: {

              end_ = input.readInt64();
              break;
            }
            case 24: {

              interval_ = input.readInt64();
              break;
            }
            case 32: {

              range_ = input.readInt64();
              break;
            }
            case 42: {
              java.lang.String s = input.readStringRequireUtf8();

              timeIndex_ = s;
              break;
            }
            case 50: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                tagColumns_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              tagColumns_.add(s);
              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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          tagColumns_ = tagColumns_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return substrait_extension.PromqlPlan.internal_static_substrait_extension_RangeManipulate_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return substrait_extension.PromqlPlan.internal_static_substrait_extension_RangeManipulate_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              substrait_extension.PromqlPlan.RangeManipulate.class, substrait_extension.PromqlPlan.RangeManipulate.Builder.class);
    }

    public static final int START_FIELD_NUMBER = 1;
    private long start_;
    /**
     * <pre>
     * Start timestamp in millisecond
     * </pre>
     *
     * <code>int64 start = 1;</code>
     * @return The start.
     */
    @java.lang.Override
    public long getStart() {
      return start_;
    }

    public static final int END_FIELD_NUMBER = 2;
    private long end_;
    /**
     * <pre>
     * End timestamp in millisecond
     * </pre>
     *
     * <code>int64 end = 2;</code>
     * @return The end.
     */
    @java.lang.Override
    public long getEnd() {
      return end_;
    }

    public static final int INTERVAL_FIELD_NUMBER = 3;
    private long interval_;
    /**
     * <pre>
     * Interval in millisecond
     * </pre>
     *
     * <code>int64 interval = 3;</code>
     * @return The interval.
     */
    @java.lang.Override
    public long getInterval() {
      return interval_;
    }

    public static final int RANGE_FIELD_NUMBER = 4;
    private long range_;
    /**
     * <pre>
     * Range in millisecond
     * </pre>
     *
     * <code>int64 range = 4;</code>
     * @return The range.
     */
    @java.lang.Override
    public long getRange() {
      return range_;
    }

    public static final int TIME_INDEX_FIELD_NUMBER = 5;
    private volatile java.lang.Object timeIndex_;
    /**
     * <pre>
     * Column name of time index column
     * </pre>
     *
     * <code>string time_index = 5;</code>
     * @return The timeIndex.
     */
    @java.lang.Override
    public java.lang.String getTimeIndex() {
      java.lang.Object ref = timeIndex_;
      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();
        timeIndex_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Column name of time index column
     * </pre>
     *
     * <code>string time_index = 5;</code>
     * @return The bytes for timeIndex.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTimeIndexBytes() {
      java.lang.Object ref = timeIndex_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        timeIndex_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TAG_COLUMNS_FIELD_NUMBER = 6;
    private com.google.protobuf.LazyStringList tagColumns_;
    /**
     * <pre>
     * Names of tag columns
     * </pre>
     *
     * <code>repeated string tag_columns = 6;</code>
     * @return A list containing the tagColumns.
     */
    public com.google.protobuf.ProtocolStringList
        getTagColumnsList() {
      return tagColumns_;
    }
    /**
     * <pre>
     * Names of tag columns
     * </pre>
     *
     * <code>repeated string tag_columns = 6;</code>
     * @return The count of tagColumns.
     */
    public int getTagColumnsCount() {
      return tagColumns_.size();
    }
    /**
     * <pre>
     * Names of tag columns
     * </pre>
     *
     * <code>repeated string tag_columns = 6;</code>
     * @param index The index of the element to return.
     * @return The tagColumns at the given index.
     */
    public java.lang.String getTagColumns(int index) {
      return tagColumns_.get(index);
    }
    /**
     * <pre>
     * Names of tag columns
     * </pre>
     *
     * <code>repeated string tag_columns = 6;</code>
     * @param index The index of the value to return.
     * @return The bytes of the tagColumns at the given index.
     */
    public com.google.protobuf.ByteString
        getTagColumnsBytes(int index) {
      return tagColumns_.getByteString(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (start_ != 0L) {
        output.writeInt64(1, start_);
      }
      if (end_ != 0L) {
        output.writeInt64(2, end_);
      }
      if (interval_ != 0L) {
        output.writeInt64(3, interval_);
      }
      if (range_ != 0L) {
        output.writeInt64(4, range_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(timeIndex_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, timeIndex_);
      }
      for (int i = 0; i < tagColumns_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, tagColumns_.getRaw(i));
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (start_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(1, start_);
      }
      if (end_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, end_);
      }
      if (interval_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, interval_);
      }
      if (range_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(4, range_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(timeIndex_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, timeIndex_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < tagColumns_.size(); i++) {
          dataSize += computeStringSizeNoTag(tagColumns_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getTagColumnsList().size();
      }
      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 substrait_extension.PromqlPlan.RangeManipulate)) {
        return super.equals(obj);
      }
      substrait_extension.PromqlPlan.RangeManipulate other = (substrait_extension.PromqlPlan.RangeManipulate) obj;

      if (getStart()
          != other.getStart()) return false;
      if (getEnd()
          != other.getEnd()) return false;
      if (getInterval()
          != other.getInterval()) return false;
      if (getRange()
          != other.getRange()) return false;
      if (!getTimeIndex()
          .equals(other.getTimeIndex())) return false;
      if (!getTagColumnsList()
          .equals(other.getTagColumnsList())) 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) + START_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getStart());
      hash = (37 * hash) + END_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getEnd());
      hash = (37 * hash) + INTERVAL_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getInterval());
      hash = (37 * hash) + RANGE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getRange());
      hash = (37 * hash) + TIME_INDEX_FIELD_NUMBER;
      hash = (53 * hash) + getTimeIndex().hashCode();
      if (getTagColumnsCount() > 0) {
        hash = (37 * hash) + TAG_COLUMNS_FIELD_NUMBER;
        hash = (53 * hash) + getTagColumnsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static substrait_extension.PromqlPlan.RangeManipulate parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static substrait_extension.PromqlPlan.RangeManipulate parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static substrait_extension.PromqlPlan.RangeManipulate parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static substrait_extension.PromqlPlan.RangeManipulate parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static substrait_extension.PromqlPlan.RangeManipulate parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static substrait_extension.PromqlPlan.RangeManipulate parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static substrait_extension.PromqlPlan.RangeManipulate parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static substrait_extension.PromqlPlan.RangeManipulate 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 substrait_extension.PromqlPlan.RangeManipulate parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static substrait_extension.PromqlPlan.RangeManipulate 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 substrait_extension.PromqlPlan.RangeManipulate parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static substrait_extension.PromqlPlan.RangeManipulate 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(substrait_extension.PromqlPlan.RangeManipulate prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code substrait_extension.RangeManipulate}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:substrait_extension.RangeManipulate)
        substrait_extension.PromqlPlan.RangeManipulateOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return substrait_extension.PromqlPlan.internal_static_substrait_extension_RangeManipulate_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return substrait_extension.PromqlPlan.internal_static_substrait_extension_RangeManipulate_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                substrait_extension.PromqlPlan.RangeManipulate.class, substrait_extension.PromqlPlan.RangeManipulate.Builder.class);
      }

      // Construct using substrait_extension.PromqlPlan.RangeManipulate.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();
        start_ = 0L;

        end_ = 0L;

        interval_ = 0L;

        range_ = 0L;

        timeIndex_ = "";

        tagColumns_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return substrait_extension.PromqlPlan.internal_static_substrait_extension_RangeManipulate_descriptor;
      }

      @java.lang.Override
      public substrait_extension.PromqlPlan.RangeManipulate getDefaultInstanceForType() {
        return substrait_extension.PromqlPlan.RangeManipulate.getDefaultInstance();
      }

      @java.lang.Override
      public substrait_extension.PromqlPlan.RangeManipulate build() {
        substrait_extension.PromqlPlan.RangeManipulate result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public substrait_extension.PromqlPlan.RangeManipulate buildPartial() {
        substrait_extension.PromqlPlan.RangeManipulate result = new substrait_extension.PromqlPlan.RangeManipulate(this);
        int from_bitField0_ = bitField0_;
        result.start_ = start_;
        result.end_ = end_;
        result.interval_ = interval_;
        result.range_ = range_;
        result.timeIndex_ = timeIndex_;
        if (((bitField0_ & 0x00000001) != 0)) {
          tagColumns_ = tagColumns_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.tagColumns_ = tagColumns_;
        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 substrait_extension.PromqlPlan.RangeManipulate) {
          return mergeFrom((substrait_extension.PromqlPlan.RangeManipulate)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(substrait_extension.PromqlPlan.RangeManipulate other) {
        if (other == substrait_extension.PromqlPlan.RangeManipulate.getDefaultInstance()) return this;
        if (other.getStart() != 0L) {
          setStart(other.getStart());
        }
        if (other.getEnd() != 0L) {
          setEnd(other.getEnd());
        }
        if (other.getInterval() != 0L) {
          setInterval(other.getInterval());
        }
        if (other.getRange() != 0L) {
          setRange(other.getRange());
        }
        if (!other.getTimeIndex().isEmpty()) {
          timeIndex_ = other.timeIndex_;
          onChanged();
        }
        if (!other.tagColumns_.isEmpty()) {
          if (tagColumns_.isEmpty()) {
            tagColumns_ = other.tagColumns_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureTagColumnsIsMutable();
            tagColumns_.addAll(other.tagColumns_);
          }
          onChanged();
        }
        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 {
        substrait_extension.PromqlPlan.RangeManipulate parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (substrait_extension.PromqlPlan.RangeManipulate) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private long start_ ;
      /**
       * <pre>
       * Start timestamp in millisecond
       * </pre>
       *
       * <code>int64 start = 1;</code>
       * @return The start.
       */
      @java.lang.Override
      public long getStart() {
        return start_;
      }
      /**
       * <pre>
       * Start timestamp in millisecond
       * </pre>
       *
       * <code>int64 start = 1;</code>
       * @param value The start to set.
       * @return This builder for chaining.
       */
      public Builder setStart(long value) {
        
        start_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Start timestamp in millisecond
       * </pre>
       *
       * <code>int64 start = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearStart() {
        
        start_ = 0L;
        onChanged();
        return this;
      }

      private long end_ ;
      /**
       * <pre>
       * End timestamp in millisecond
       * </pre>
       *
       * <code>int64 end = 2;</code>
       * @return The end.
       */
      @java.lang.Override
      public long getEnd() {
        return end_;
      }
      /**
       * <pre>
       * End timestamp in millisecond
       * </pre>
       *
       * <code>int64 end = 2;</code>
       * @param value The end to set.
       * @return This builder for chaining.
       */
      public Builder setEnd(long value) {
        
        end_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * End timestamp in millisecond
       * </pre>
       *
       * <code>int64 end = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearEnd() {
        
        end_ = 0L;
        onChanged();
        return this;
      }

      private long interval_ ;
      /**
       * <pre>
       * Interval in millisecond
       * </pre>
       *
       * <code>int64 interval = 3;</code>
       * @return The interval.
       */
      @java.lang.Override
      public long getInterval() {
        return interval_;
      }
      /**
       * <pre>
       * Interval in millisecond
       * </pre>
       *
       * <code>int64 interval = 3;</code>
       * @param value The interval to set.
       * @return This builder for chaining.
       */
      public Builder setInterval(long value) {
        
        interval_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Interval in millisecond
       * </pre>
       *
       * <code>int64 interval = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearInterval() {
        
        interval_ = 0L;
        onChanged();
        return this;
      }

      private long range_ ;
      /**
       * <pre>
       * Range in millisecond
       * </pre>
       *
       * <code>int64 range = 4;</code>
       * @return The range.
       */
      @java.lang.Override
      public long getRange() {
        return range_;
      }
      /**
       * <pre>
       * Range in millisecond
       * </pre>
       *
       * <code>int64 range = 4;</code>
       * @param value The range to set.
       * @return This builder for chaining.
       */
      public Builder setRange(long value) {
        
        range_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Range in millisecond
       * </pre>
       *
       * <code>int64 range = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearRange() {
        
        range_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object timeIndex_ = "";
      /**
       * <pre>
       * Column name of time index column
       * </pre>
       *
       * <code>string time_index = 5;</code>
       * @return The timeIndex.
       */
      public java.lang.String getTimeIndex() {
        java.lang.Object ref = timeIndex_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          timeIndex_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Column name of time index column
       * </pre>
       *
       * <code>string time_index = 5;</code>
       * @return The bytes for timeIndex.
       */
      public com.google.protobuf.ByteString
          getTimeIndexBytes() {
        java.lang.Object ref = timeIndex_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          timeIndex_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Column name of time index column
       * </pre>
       *
       * <code>string time_index = 5;</code>
       * @param value The timeIndex to set.
       * @return This builder for chaining.
       */
      public Builder setTimeIndex(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        timeIndex_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Column name of time index column
       * </pre>
       *
       * <code>string time_index = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearTimeIndex() {
        
        timeIndex_ = getDefaultInstance().getTimeIndex();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Column name of time index column
       * </pre>
       *
       * <code>string time_index = 5;</code>
       * @param value The bytes for timeIndex to set.
       * @return This builder for chaining.
       */
      public Builder setTimeIndexBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        timeIndex_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList tagColumns_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureTagColumnsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          tagColumns_ = new com.google.protobuf.LazyStringArrayList(tagColumns_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <pre>
       * Names of tag columns
       * </pre>
       *
       * <code>repeated string tag_columns = 6;</code>
       * @return A list containing the tagColumns.
       */
      public com.google.protobuf.ProtocolStringList
          getTagColumnsList() {
        return tagColumns_.getUnmodifiableView();
      }
      /**
       * <pre>
       * Names of tag columns
       * </pre>
       *
       * <code>repeated string tag_columns = 6;</code>
       * @return The count of tagColumns.
       */
      public int getTagColumnsCount() {
        return tagColumns_.size();
      }
      /**
       * <pre>
       * Names of tag columns
       * </pre>
       *
       * <code>repeated string tag_columns = 6;</code>
       * @param index The index of the element to return.
       * @return The tagColumns at the given index.
       */
      public java.lang.String getTagColumns(int index) {
        return tagColumns_.get(index);
      }
      /**
       * <pre>
       * Names of tag columns
       * </pre>
       *
       * <code>repeated string tag_columns = 6;</code>
       * @param index The index of the value to return.
       * @return The bytes of the tagColumns at the given index.
       */
      public com.google.protobuf.ByteString
          getTagColumnsBytes(int index) {
        return tagColumns_.getByteString(index);
      }
      /**
       * <pre>
       * Names of tag columns
       * </pre>
       *
       * <code>repeated string tag_columns = 6;</code>
       * @param index The index to set the value at.
       * @param value The tagColumns to set.
       * @return This builder for chaining.
       */
      public Builder setTagColumns(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureTagColumnsIsMutable();
        tagColumns_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Names of tag columns
       * </pre>
       *
       * <code>repeated string tag_columns = 6;</code>
       * @param value The tagColumns to add.
       * @return This builder for chaining.
       */
      public Builder addTagColumns(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureTagColumnsIsMutable();
        tagColumns_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Names of tag columns
       * </pre>
       *
       * <code>repeated string tag_columns = 6;</code>
       * @param values The tagColumns to add.
       * @return This builder for chaining.
       */
      public Builder addAllTagColumns(
          java.lang.Iterable<java.lang.String> values) {
        ensureTagColumnsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, tagColumns_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Names of tag columns
       * </pre>
       *
       * <code>repeated string tag_columns = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearTagColumns() {
        tagColumns_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Names of tag columns
       * </pre>
       *
       * <code>repeated string tag_columns = 6;</code>
       * @param value The bytes of the tagColumns to add.
       * @return This builder for chaining.
       */
      public Builder addTagColumnsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureTagColumnsIsMutable();
        tagColumns_.add(value);
        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:substrait_extension.RangeManipulate)
    }

    // @@protoc_insertion_point(class_scope:substrait_extension.RangeManipulate)
    private static final substrait_extension.PromqlPlan.RangeManipulate DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new substrait_extension.PromqlPlan.RangeManipulate();
    }

    public static substrait_extension.PromqlPlan.RangeManipulate getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public substrait_extension.PromqlPlan.RangeManipulate getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ScalarCalculateOrBuilder extends
      // @@protoc_insertion_point(interface_extends:substrait_extension.ScalarCalculate)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Start timestamp in millisecond
     * </pre>
     *
     * <code>int64 start = 1;</code>
     * @return The start.
     */
    long getStart();

    /**
     * <pre>
     * End timestamp in millisecond
     * </pre>
     *
     * <code>int64 end = 2;</code>
     * @return The end.
     */
    long getEnd();

    /**
     * <pre>
     * Interval in millisecond
     * </pre>
     *
     * <code>int64 interval = 3;</code>
     * @return The interval.
     */
    long getInterval();

    /**
     * <pre>
     * Column name of time index column
     * </pre>
     *
     * <code>string time_index = 5;</code>
     * @return The timeIndex.
     */
    java.lang.String getTimeIndex();
    /**
     * <pre>
     * Column name of time index column
     * </pre>
     *
     * <code>string time_index = 5;</code>
     * @return The bytes for timeIndex.
     */
    com.google.protobuf.ByteString
        getTimeIndexBytes();

    /**
     * <pre>
     * Names of tag columns
     * </pre>
     *
     * <code>repeated string tag_columns = 6;</code>
     * @return A list containing the tagColumns.
     */
    java.util.List<java.lang.String>
        getTagColumnsList();
    /**
     * <pre>
     * Names of tag columns
     * </pre>
     *
     * <code>repeated string tag_columns = 6;</code>
     * @return The count of tagColumns.
     */
    int getTagColumnsCount();
    /**
     * <pre>
     * Names of tag columns
     * </pre>
     *
     * <code>repeated string tag_columns = 6;</code>
     * @param index The index of the element to return.
     * @return The tagColumns at the given index.
     */
    java.lang.String getTagColumns(int index);
    /**
     * <pre>
     * Names of tag columns
     * </pre>
     *
     * <code>repeated string tag_columns = 6;</code>
     * @param index The index of the value to return.
     * @return The bytes of the tagColumns at the given index.
     */
    com.google.protobuf.ByteString
        getTagColumnsBytes(int index);

    /**
     * <pre>
     * Column name of field column
     * </pre>
     *
     * <code>string field_column = 7;</code>
     * @return The fieldColumn.
     */
    java.lang.String getFieldColumn();
    /**
     * <pre>
     * Column name of field column
     * </pre>
     *
     * <code>string field_column = 7;</code>
     * @return The bytes for fieldColumn.
     */
    com.google.protobuf.ByteString
        getFieldColumnBytes();
  }
  /**
   * Protobuf type {@code substrait_extension.ScalarCalculate}
   */
  public static final class ScalarCalculate extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:substrait_extension.ScalarCalculate)
      ScalarCalculateOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ScalarCalculate.newBuilder() to construct.
    private ScalarCalculate(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ScalarCalculate() {
      timeIndex_ = "";
      tagColumns_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      fieldColumn_ = "";
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ScalarCalculate(
        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 8: {

              start_ = input.readInt64();
              break;
            }
            case 16: {

              end_ = input.readInt64();
              break;
            }
            case 24: {

              interval_ = input.readInt64();
              break;
            }
            case 42: {
              java.lang.String s = input.readStringRequireUtf8();

              timeIndex_ = s;
              break;
            }
            case 50: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                tagColumns_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              tagColumns_.add(s);
              break;
            }
            case 58: {
              java.lang.String s = input.readStringRequireUtf8();

              fieldColumn_ = s;
              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 {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          tagColumns_ = tagColumns_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return substrait_extension.PromqlPlan.internal_static_substrait_extension_ScalarCalculate_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return substrait_extension.PromqlPlan.internal_static_substrait_extension_ScalarCalculate_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              substrait_extension.PromqlPlan.ScalarCalculate.class, substrait_extension.PromqlPlan.ScalarCalculate.Builder.class);
    }

    public static final int START_FIELD_NUMBER = 1;
    private long start_;
    /**
     * <pre>
     * Start timestamp in millisecond
     * </pre>
     *
     * <code>int64 start = 1;</code>
     * @return The start.
     */
    @java.lang.Override
    public long getStart() {
      return start_;
    }

    public static final int END_FIELD_NUMBER = 2;
    private long end_;
    /**
     * <pre>
     * End timestamp in millisecond
     * </pre>
     *
     * <code>int64 end = 2;</code>
     * @return The end.
     */
    @java.lang.Override
    public long getEnd() {
      return end_;
    }

    public static final int INTERVAL_FIELD_NUMBER = 3;
    private long interval_;
    /**
     * <pre>
     * Interval in millisecond
     * </pre>
     *
     * <code>int64 interval = 3;</code>
     * @return The interval.
     */
    @java.lang.Override
    public long getInterval() {
      return interval_;
    }

    public static final int TIME_INDEX_FIELD_NUMBER = 5;
    private volatile java.lang.Object timeIndex_;
    /**
     * <pre>
     * Column name of time index column
     * </pre>
     *
     * <code>string time_index = 5;</code>
     * @return The timeIndex.
     */
    @java.lang.Override
    public java.lang.String getTimeIndex() {
      java.lang.Object ref = timeIndex_;
      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();
        timeIndex_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Column name of time index column
     * </pre>
     *
     * <code>string time_index = 5;</code>
     * @return The bytes for timeIndex.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTimeIndexBytes() {
      java.lang.Object ref = timeIndex_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        timeIndex_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TAG_COLUMNS_FIELD_NUMBER = 6;
    private com.google.protobuf.LazyStringList tagColumns_;
    /**
     * <pre>
     * Names of tag columns
     * </pre>
     *
     * <code>repeated string tag_columns = 6;</code>
     * @return A list containing the tagColumns.
     */
    public com.google.protobuf.ProtocolStringList
        getTagColumnsList() {
      return tagColumns_;
    }
    /**
     * <pre>
     * Names of tag columns
     * </pre>
     *
     * <code>repeated string tag_columns = 6;</code>
     * @return The count of tagColumns.
     */
    public int getTagColumnsCount() {
      return tagColumns_.size();
    }
    /**
     * <pre>
     * Names of tag columns
     * </pre>
     *
     * <code>repeated string tag_columns = 6;</code>
     * @param index The index of the element to return.
     * @return The tagColumns at the given index.
     */
    public java.lang.String getTagColumns(int index) {
      return tagColumns_.get(index);
    }
    /**
     * <pre>
     * Names of tag columns
     * </pre>
     *
     * <code>repeated string tag_columns = 6;</code>
     * @param index The index of the value to return.
     * @return The bytes of the tagColumns at the given index.
     */
    public com.google.protobuf.ByteString
        getTagColumnsBytes(int index) {
      return tagColumns_.getByteString(index);
    }

    public static final int FIELD_COLUMN_FIELD_NUMBER = 7;
    private volatile java.lang.Object fieldColumn_;
    /**
     * <pre>
     * Column name of field column
     * </pre>
     *
     * <code>string field_column = 7;</code>
     * @return The fieldColumn.
     */
    @java.lang.Override
    public java.lang.String getFieldColumn() {
      java.lang.Object ref = fieldColumn_;
      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();
        fieldColumn_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Column name of field column
     * </pre>
     *
     * <code>string field_column = 7;</code>
     * @return The bytes for fieldColumn.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFieldColumnBytes() {
      java.lang.Object ref = fieldColumn_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fieldColumn_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    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 (start_ != 0L) {
        output.writeInt64(1, start_);
      }
      if (end_ != 0L) {
        output.writeInt64(2, end_);
      }
      if (interval_ != 0L) {
        output.writeInt64(3, interval_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(timeIndex_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, timeIndex_);
      }
      for (int i = 0; i < tagColumns_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, tagColumns_.getRaw(i));
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(fieldColumn_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 7, fieldColumn_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (start_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(1, start_);
      }
      if (end_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, end_);
      }
      if (interval_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, interval_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(timeIndex_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, timeIndex_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < tagColumns_.size(); i++) {
          dataSize += computeStringSizeNoTag(tagColumns_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getTagColumnsList().size();
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(fieldColumn_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, fieldColumn_);
      }
      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 substrait_extension.PromqlPlan.ScalarCalculate)) {
        return super.equals(obj);
      }
      substrait_extension.PromqlPlan.ScalarCalculate other = (substrait_extension.PromqlPlan.ScalarCalculate) obj;

      if (getStart()
          != other.getStart()) return false;
      if (getEnd()
          != other.getEnd()) return false;
      if (getInterval()
          != other.getInterval()) return false;
      if (!getTimeIndex()
          .equals(other.getTimeIndex())) return false;
      if (!getTagColumnsList()
          .equals(other.getTagColumnsList())) return false;
      if (!getFieldColumn()
          .equals(other.getFieldColumn())) 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) + START_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getStart());
      hash = (37 * hash) + END_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getEnd());
      hash = (37 * hash) + INTERVAL_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getInterval());
      hash = (37 * hash) + TIME_INDEX_FIELD_NUMBER;
      hash = (53 * hash) + getTimeIndex().hashCode();
      if (getTagColumnsCount() > 0) {
        hash = (37 * hash) + TAG_COLUMNS_FIELD_NUMBER;
        hash = (53 * hash) + getTagColumnsList().hashCode();
      }
      hash = (37 * hash) + FIELD_COLUMN_FIELD_NUMBER;
      hash = (53 * hash) + getFieldColumn().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static substrait_extension.PromqlPlan.ScalarCalculate parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static substrait_extension.PromqlPlan.ScalarCalculate parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static substrait_extension.PromqlPlan.ScalarCalculate parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static substrait_extension.PromqlPlan.ScalarCalculate parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static substrait_extension.PromqlPlan.ScalarCalculate parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static substrait_extension.PromqlPlan.ScalarCalculate parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static substrait_extension.PromqlPlan.ScalarCalculate parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static substrait_extension.PromqlPlan.ScalarCalculate 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 substrait_extension.PromqlPlan.ScalarCalculate parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static substrait_extension.PromqlPlan.ScalarCalculate 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 substrait_extension.PromqlPlan.ScalarCalculate parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static substrait_extension.PromqlPlan.ScalarCalculate 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(substrait_extension.PromqlPlan.ScalarCalculate prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code substrait_extension.ScalarCalculate}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:substrait_extension.ScalarCalculate)
        substrait_extension.PromqlPlan.ScalarCalculateOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return substrait_extension.PromqlPlan.internal_static_substrait_extension_ScalarCalculate_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return substrait_extension.PromqlPlan.internal_static_substrait_extension_ScalarCalculate_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                substrait_extension.PromqlPlan.ScalarCalculate.class, substrait_extension.PromqlPlan.ScalarCalculate.Builder.class);
      }

      // Construct using substrait_extension.PromqlPlan.ScalarCalculate.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();
        start_ = 0L;

        end_ = 0L;

        interval_ = 0L;

        timeIndex_ = "";

        tagColumns_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        fieldColumn_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return substrait_extension.PromqlPlan.internal_static_substrait_extension_ScalarCalculate_descriptor;
      }

      @java.lang.Override
      public substrait_extension.PromqlPlan.ScalarCalculate getDefaultInstanceForType() {
        return substrait_extension.PromqlPlan.ScalarCalculate.getDefaultInstance();
      }

      @java.lang.Override
      public substrait_extension.PromqlPlan.ScalarCalculate build() {
        substrait_extension.PromqlPlan.ScalarCalculate result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public substrait_extension.PromqlPlan.ScalarCalculate buildPartial() {
        substrait_extension.PromqlPlan.ScalarCalculate result = new substrait_extension.PromqlPlan.ScalarCalculate(this);
        int from_bitField0_ = bitField0_;
        result.start_ = start_;
        result.end_ = end_;
        result.interval_ = interval_;
        result.timeIndex_ = timeIndex_;
        if (((bitField0_ & 0x00000001) != 0)) {
          tagColumns_ = tagColumns_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.tagColumns_ = tagColumns_;
        result.fieldColumn_ = fieldColumn_;
        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 substrait_extension.PromqlPlan.ScalarCalculate) {
          return mergeFrom((substrait_extension.PromqlPlan.ScalarCalculate)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(substrait_extension.PromqlPlan.ScalarCalculate other) {
        if (other == substrait_extension.PromqlPlan.ScalarCalculate.getDefaultInstance()) return this;
        if (other.getStart() != 0L) {
          setStart(other.getStart());
        }
        if (other.getEnd() != 0L) {
          setEnd(other.getEnd());
        }
        if (other.getInterval() != 0L) {
          setInterval(other.getInterval());
        }
        if (!other.getTimeIndex().isEmpty()) {
          timeIndex_ = other.timeIndex_;
          onChanged();
        }
        if (!other.tagColumns_.isEmpty()) {
          if (tagColumns_.isEmpty()) {
            tagColumns_ = other.tagColumns_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureTagColumnsIsMutable();
            tagColumns_.addAll(other.tagColumns_);
          }
          onChanged();
        }
        if (!other.getFieldColumn().isEmpty()) {
          fieldColumn_ = other.fieldColumn_;
          onChanged();
        }
        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 {
        substrait_extension.PromqlPlan.ScalarCalculate parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (substrait_extension.PromqlPlan.ScalarCalculate) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private long start_ ;
      /**
       * <pre>
       * Start timestamp in millisecond
       * </pre>
       *
       * <code>int64 start = 1;</code>
       * @return The start.
       */
      @java.lang.Override
      public long getStart() {
        return start_;
      }
      /**
       * <pre>
       * Start timestamp in millisecond
       * </pre>
       *
       * <code>int64 start = 1;</code>
       * @param value The start to set.
       * @return This builder for chaining.
       */
      public Builder setStart(long value) {
        
        start_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Start timestamp in millisecond
       * </pre>
       *
       * <code>int64 start = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearStart() {
        
        start_ = 0L;
        onChanged();
        return this;
      }

      private long end_ ;
      /**
       * <pre>
       * End timestamp in millisecond
       * </pre>
       *
       * <code>int64 end = 2;</code>
       * @return The end.
       */
      @java.lang.Override
      public long getEnd() {
        return end_;
      }
      /**
       * <pre>
       * End timestamp in millisecond
       * </pre>
       *
       * <code>int64 end = 2;</code>
       * @param value The end to set.
       * @return This builder for chaining.
       */
      public Builder setEnd(long value) {
        
        end_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * End timestamp in millisecond
       * </pre>
       *
       * <code>int64 end = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearEnd() {
        
        end_ = 0L;
        onChanged();
        return this;
      }

      private long interval_ ;
      /**
       * <pre>
       * Interval in millisecond
       * </pre>
       *
       * <code>int64 interval = 3;</code>
       * @return The interval.
       */
      @java.lang.Override
      public long getInterval() {
        return interval_;
      }
      /**
       * <pre>
       * Interval in millisecond
       * </pre>
       *
       * <code>int64 interval = 3;</code>
       * @param value The interval to set.
       * @return This builder for chaining.
       */
      public Builder setInterval(long value) {
        
        interval_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Interval in millisecond
       * </pre>
       *
       * <code>int64 interval = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearInterval() {
        
        interval_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object timeIndex_ = "";
      /**
       * <pre>
       * Column name of time index column
       * </pre>
       *
       * <code>string time_index = 5;</code>
       * @return The timeIndex.
       */
      public java.lang.String getTimeIndex() {
        java.lang.Object ref = timeIndex_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          timeIndex_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Column name of time index column
       * </pre>
       *
       * <code>string time_index = 5;</code>
       * @return The bytes for timeIndex.
       */
      public com.google.protobuf.ByteString
          getTimeIndexBytes() {
        java.lang.Object ref = timeIndex_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          timeIndex_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Column name of time index column
       * </pre>
       *
       * <code>string time_index = 5;</code>
       * @param value The timeIndex to set.
       * @return This builder for chaining.
       */
      public Builder setTimeIndex(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        timeIndex_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Column name of time index column
       * </pre>
       *
       * <code>string time_index = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearTimeIndex() {
        
        timeIndex_ = getDefaultInstance().getTimeIndex();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Column name of time index column
       * </pre>
       *
       * <code>string time_index = 5;</code>
       * @param value The bytes for timeIndex to set.
       * @return This builder for chaining.
       */
      public Builder setTimeIndexBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        timeIndex_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList tagColumns_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureTagColumnsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          tagColumns_ = new com.google.protobuf.LazyStringArrayList(tagColumns_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <pre>
       * Names of tag columns
       * </pre>
       *
       * <code>repeated string tag_columns = 6;</code>
       * @return A list containing the tagColumns.
       */
      public com.google.protobuf.ProtocolStringList
          getTagColumnsList() {
        return tagColumns_.getUnmodifiableView();
      }
      /**
       * <pre>
       * Names of tag columns
       * </pre>
       *
       * <code>repeated string tag_columns = 6;</code>
       * @return The count of tagColumns.
       */
      public int getTagColumnsCount() {
        return tagColumns_.size();
      }
      /**
       * <pre>
       * Names of tag columns
       * </pre>
       *
       * <code>repeated string tag_columns = 6;</code>
       * @param index The index of the element to return.
       * @return The tagColumns at the given index.
       */
      public java.lang.String getTagColumns(int index) {
        return tagColumns_.get(index);
      }
      /**
       * <pre>
       * Names of tag columns
       * </pre>
       *
       * <code>repeated string tag_columns = 6;</code>
       * @param index The index of the value to return.
       * @return The bytes of the tagColumns at the given index.
       */
      public com.google.protobuf.ByteString
          getTagColumnsBytes(int index) {
        return tagColumns_.getByteString(index);
      }
      /**
       * <pre>
       * Names of tag columns
       * </pre>
       *
       * <code>repeated string tag_columns = 6;</code>
       * @param index The index to set the value at.
       * @param value The tagColumns to set.
       * @return This builder for chaining.
       */
      public Builder setTagColumns(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureTagColumnsIsMutable();
        tagColumns_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Names of tag columns
       * </pre>
       *
       * <code>repeated string tag_columns = 6;</code>
       * @param value The tagColumns to add.
       * @return This builder for chaining.
       */
      public Builder addTagColumns(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureTagColumnsIsMutable();
        tagColumns_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Names of tag columns
       * </pre>
       *
       * <code>repeated string tag_columns = 6;</code>
       * @param values The tagColumns to add.
       * @return This builder for chaining.
       */
      public Builder addAllTagColumns(
          java.lang.Iterable<java.lang.String> values) {
        ensureTagColumnsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, tagColumns_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Names of tag columns
       * </pre>
       *
       * <code>repeated string tag_columns = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearTagColumns() {
        tagColumns_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Names of tag columns
       * </pre>
       *
       * <code>repeated string tag_columns = 6;</code>
       * @param value The bytes of the tagColumns to add.
       * @return This builder for chaining.
       */
      public Builder addTagColumnsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureTagColumnsIsMutable();
        tagColumns_.add(value);
        onChanged();
        return this;
      }

      private java.lang.Object fieldColumn_ = "";
      /**
       * <pre>
       * Column name of field column
       * </pre>
       *
       * <code>string field_column = 7;</code>
       * @return The fieldColumn.
       */
      public java.lang.String getFieldColumn() {
        java.lang.Object ref = fieldColumn_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          fieldColumn_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Column name of field column
       * </pre>
       *
       * <code>string field_column = 7;</code>
       * @return The bytes for fieldColumn.
       */
      public com.google.protobuf.ByteString
          getFieldColumnBytes() {
        java.lang.Object ref = fieldColumn_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fieldColumn_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Column name of field column
       * </pre>
       *
       * <code>string field_column = 7;</code>
       * @param value The fieldColumn to set.
       * @return This builder for chaining.
       */
      public Builder setFieldColumn(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        fieldColumn_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Column name of field column
       * </pre>
       *
       * <code>string field_column = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearFieldColumn() {
        
        fieldColumn_ = getDefaultInstance().getFieldColumn();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Column name of field column
       * </pre>
       *
       * <code>string field_column = 7;</code>
       * @param value The bytes for fieldColumn to set.
       * @return This builder for chaining.
       */
      public Builder setFieldColumnBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        fieldColumn_ = value;
        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:substrait_extension.ScalarCalculate)
    }

    // @@protoc_insertion_point(class_scope:substrait_extension.ScalarCalculate)
    private static final substrait_extension.PromqlPlan.ScalarCalculate DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new substrait_extension.PromqlPlan.ScalarCalculate();
    }

    public static substrait_extension.PromqlPlan.ScalarCalculate getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public substrait_extension.PromqlPlan.ScalarCalculate getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_substrait_extension_EmptyMetric_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_substrait_extension_EmptyMetric_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_substrait_extension_InstantManipulate_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_substrait_extension_InstantManipulate_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_substrait_extension_SeriesNormalize_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_substrait_extension_SeriesNormalize_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_substrait_extension_SeriesDivide_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_substrait_extension_SeriesDivide_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_substrait_extension_RangeManipulate_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_substrait_extension_RangeManipulate_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_substrait_extension_ScalarCalculate_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_substrait_extension_ScalarCalculate_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%substrait_extension/promql_plan.proto\022" +
      "\023substrait_extension\";\n\013EmptyMetric\022\r\n\005s" +
      "tart\030\001 \001(\003\022\013\n\003end\030\002 \001(\003\022\020\n\010interval\030\003 \001(" +
      "\003\"\202\001\n\021InstantManipulate\022\r\n\005start\030\001 \001(\003\022\013" +
      "\n\003end\030\002 \001(\003\022\020\n\010interval\030\003 \001(\003\022\026\n\016lookbac" +
      "k_delta\030\004 \001(\003\022\022\n\ntime_index\030\005 \001(\t\022\023\n\013fie" +
      "ld_index\030\006 \001(\t\"^\n\017SeriesNormalize\022\016\n\006off" +
      "set\030\001 \001(\003\022\022\n\ntime_index\030\002 \001(\t\022\022\n\nfilter_" +
      "nan\030\003 \001(\010\022\023\n\013tag_columns\030\004 \003(\t\">\n\014Series" +
      "Divide\022\023\n\013tag_columns\030\001 \003(\t\022\031\n\021time_inde" +
      "x_column\030\002 \001(\t\"w\n\017RangeManipulate\022\r\n\005sta" +
      "rt\030\001 \001(\003\022\013\n\003end\030\002 \001(\003\022\020\n\010interval\030\003 \001(\003\022" +
      "\r\n\005range\030\004 \001(\003\022\022\n\ntime_index\030\005 \001(\t\022\023\n\013ta" +
      "g_columns\030\006 \003(\t\"~\n\017ScalarCalculate\022\r\n\005st" +
      "art\030\001 \001(\003\022\013\n\003end\030\002 \001(\003\022\020\n\010interval\030\003 \001(\003" +
      "\022\022\n\ntime_index\030\005 \001(\t\022\023\n\013tag_columns\030\006 \003(" +
      "\t\022\024\n\014field_column\030\007 \001(\tB?Z=github.com/Gr" +
      "eptimeTeam/greptime-proto/go/substrait_e" +
      "xtensionb\006proto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        });
    internal_static_substrait_extension_EmptyMetric_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_substrait_extension_EmptyMetric_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_substrait_extension_EmptyMetric_descriptor,
        new java.lang.String[] { "Start", "End", "Interval", });
    internal_static_substrait_extension_InstantManipulate_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_substrait_extension_InstantManipulate_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_substrait_extension_InstantManipulate_descriptor,
        new java.lang.String[] { "Start", "End", "Interval", "LookbackDelta", "TimeIndex", "FieldIndex", });
    internal_static_substrait_extension_SeriesNormalize_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_substrait_extension_SeriesNormalize_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_substrait_extension_SeriesNormalize_descriptor,
        new java.lang.String[] { "Offset", "TimeIndex", "FilterNan", "TagColumns", });
    internal_static_substrait_extension_SeriesDivide_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_substrait_extension_SeriesDivide_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_substrait_extension_SeriesDivide_descriptor,
        new java.lang.String[] { "TagColumns", "TimeIndexColumn", });
    internal_static_substrait_extension_RangeManipulate_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_substrait_extension_RangeManipulate_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_substrait_extension_RangeManipulate_descriptor,
        new java.lang.String[] { "Start", "End", "Interval", "Range", "TimeIndex", "TagColumns", });
    internal_static_substrait_extension_ScalarCalculate_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_substrait_extension_ScalarCalculate_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_substrait_extension_ScalarCalculate_descriptor,
        new java.lang.String[] { "Start", "End", "Interval", "TimeIndex", "TagColumns", "FieldColumn", });
  }

  // @@protoc_insertion_point(outer_class_scope)
}
