// Copyright 2023 Greptime Team
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// This file is @generated by prost-build.
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct EmptyMetric {
    /// Start timestamp in millisecond
    #[prost(int64, tag = "1")]
    pub start: i64,
    /// End timestamp in millisecond
    #[prost(int64, tag = "2")]
    pub end: i64,
    /// Interval in millisecond
    #[prost(int64, tag = "3")]
    pub interval: i64,
}
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct InstantManipulate {
    /// Start timestamp in millisecond
    #[prost(int64, tag = "1")]
    pub start: i64,
    /// End timestamp in millisecond
    #[prost(int64, tag = "2")]
    pub end: i64,
    /// Interval in millisecond
    #[prost(int64, tag = "3")]
    pub interval: i64,
    /// Look-back delta in millisecond
    #[prost(int64, tag = "4")]
    pub lookback_delta: i64,
    /// \[DEPRECATED\] Column name of time index column.
    /// Use `time_index_idx` instead.
    #[deprecated]
    #[prost(string, tag = "5")]
    pub time_index: ::prost::alloc::string::String,
    /// \[DEPRECATED\] Optional field column name for validating staleness.
    /// Use `field_index_idx` instead.
    #[deprecated]
    #[prost(string, tag = "6")]
    pub field_index: ::prost::alloc::string::String,
    /// Column index of time index column
    #[prost(uint64, tag = "7")]
    pub time_index_idx: u64,
    /// Optional field column index for validating staleness
    #[prost(uint64, tag = "8")]
    pub field_index_idx: u64,
}
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct SeriesNormalize {
    /// Offset in millisecond
    #[prost(int64, tag = "1")]
    pub offset: i64,
    /// \[DEPRECATED\] Column name of time index column.
    /// Use `time_index_idx` instead.
    #[deprecated]
    #[prost(string, tag = "2")]
    pub time_index: ::prost::alloc::string::String,
    /// Whether to filter out NaN value
    #[prost(bool, tag = "3")]
    pub filter_nan: bool,
    /// \[DEPRECATED\] Names of tag columns.
    /// Use `tag_column_indices` instead.
    #[deprecated]
    #[prost(string, repeated, tag = "4")]
    pub tag_columns: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
    /// Column index of time index column
    #[prost(uint64, tag = "5")]
    pub time_index_idx: u64,
    /// Indices of tag columns
    #[prost(uint64, repeated, tag = "6")]
    pub tag_column_indices: ::prost::alloc::vec::Vec<u64>,
}
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct SeriesDivide {
    /// \[DEPRECATED\] Names of tag columns.
    /// Use `tag_column_indices` instead.
    #[deprecated]
    #[prost(string, repeated, tag = "1")]
    pub tag_columns: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
    /// \[DEPRECATED\] Name of time index column.
    /// Use `time_index_column_idx` instead.
    #[deprecated]
    #[prost(string, tag = "2")]
    pub time_index_column: ::prost::alloc::string::String,
    /// Indices of tag columns
    #[prost(uint64, repeated, tag = "3")]
    pub tag_column_indices: ::prost::alloc::vec::Vec<u64>,
    /// Index of time index column
    #[prost(uint64, tag = "4")]
    pub time_index_column_idx: u64,
}
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct RangeManipulate {
    /// Start timestamp in millisecond
    #[prost(int64, tag = "1")]
    pub start: i64,
    /// End timestamp in millisecond
    #[prost(int64, tag = "2")]
    pub end: i64,
    /// Interval in millisecond
    #[prost(int64, tag = "3")]
    pub interval: i64,
    /// Range in millisecond
    #[prost(int64, tag = "4")]
    pub range: i64,
    /// \[DEPRECATED\] Column name of time index column.
    /// Use `time_index_idx` instead.
    #[deprecated]
    #[prost(string, tag = "5")]
    pub time_index: ::prost::alloc::string::String,
    /// \[DEPRECATED\] Names of tag columns.
    /// Use `tag_column_indices` instead.
    #[deprecated]
    #[prost(string, repeated, tag = "6")]
    pub tag_columns: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
    /// Column index of time index column
    #[prost(uint64, tag = "7")]
    pub time_index_idx: u64,
    /// Indices of tag columns
    #[prost(uint64, repeated, tag = "8")]
    pub tag_column_indices: ::prost::alloc::vec::Vec<u64>,
}
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ScalarCalculate {
    /// Start timestamp in millisecond
    #[prost(int64, tag = "1")]
    pub start: i64,
    /// End timestamp in millisecond
    #[prost(int64, tag = "2")]
    pub end: i64,
    /// Interval in millisecond
    #[prost(int64, tag = "3")]
    pub interval: i64,
    /// \[DEPRECATED\] Column name of time index column.
    /// Use `time_index_idx` instead.
    #[deprecated]
    #[prost(string, tag = "5")]
    pub time_index: ::prost::alloc::string::String,
    /// \[DEPRECATED\] Names of tag columns.
    /// Use `tag_column_indices` instead.
    #[deprecated]
    #[prost(string, repeated, tag = "6")]
    pub tag_columns: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
    /// \[DEPRECATED\] Column name of field column.
    /// Use `field_column_idx` instead.
    #[deprecated]
    #[prost(string, tag = "7")]
    pub field_column: ::prost::alloc::string::String,
    /// Column index of time index column
    #[prost(uint64, tag = "8")]
    pub time_index_idx: u64,
    /// Indices of tag columns
    #[prost(uint64, repeated, tag = "9")]
    pub tag_column_indices: ::prost::alloc::vec::Vec<u64>,
    /// Column index of field column
    #[prost(uint64, tag = "10")]
    pub field_column_idx: u64,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Absent {
    /// Start timestamp in millisecond
    #[prost(int64, tag = "1")]
    pub start: i64,
    /// End timestamp in millisecond
    #[prost(int64, tag = "2")]
    pub end: i64,
    /// Step in millisecond
    #[prost(int64, tag = "3")]
    pub step: i64,
    /// \[DEPRECATED\] Column name of time index column.
    /// Use `time_index_column_idx` instead.
    #[deprecated]
    #[prost(string, tag = "4")]
    pub time_index_column: ::prost::alloc::string::String,
    /// \[DEPRECATED\] Column name of value column.
    /// Use `value_column_idx` instead.
    #[deprecated]
    #[prost(string, tag = "5")]
    pub value_column: ::prost::alloc::string::String,
    /// Fake labels as key-value pairs
    #[prost(message, repeated, tag = "6")]
    pub fake_labels: ::prost::alloc::vec::Vec<LabelPair>,
    /// Column index of time index column
    #[prost(uint64, tag = "7")]
    pub time_index_column_idx: u64,
    /// Column index of value column
    #[prost(uint64, tag = "8")]
    pub value_column_idx: u64,
}
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct LabelPair {
    #[prost(string, tag = "1")]
    pub key: ::prost::alloc::string::String,
    #[prost(string, tag = "2")]
    pub value: ::prost::alloc::string::String,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct HistogramFold {
    /// Column index of the `le` column (histogram bucket bounds)
    #[prost(uint64, tag = "1")]
    pub le_column_idx: u64,
    /// Column index of the timestamp column
    #[prost(uint64, tag = "2")]
    pub ts_column_idx: u64,
    /// Column index of the field column (histogram values)
    #[prost(uint64, tag = "3")]
    pub field_column_idx: u64,
    /// Quantile value
    #[prost(double, tag = "4")]
    pub quantile: f64,
}
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct UnionDistinctOn {
    /// Indices of columns to compare for equality
    #[prost(uint64, repeated, tag = "1")]
    pub compare_key_indices: ::prost::alloc::vec::Vec<u64>,
    /// Column index of the timestamp column
    #[prost(uint64, tag = "2")]
    pub ts_col_idx: u64,
}
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct MergeScan {
    /// the input logical plan
    #[prost(bytes = "vec", tag = "1")]
    pub input: ::prost::alloc::vec::Vec<u8>,
    /// whether this plan is a placeholder
    #[prost(bool, tag = "2")]
    pub is_placeholder: bool,
}
