#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RowSeqScanNode {
#[prost(message, optional, tag = "1")]
pub table_desc: ::core::option::Option<super::plan_common::StorageTableDesc>,
#[prost(int32, repeated, tag = "2")]
pub column_ids: ::prost::alloc::vec::Vec<i32>,
#[prost(message, repeated, tag = "3")]
pub scan_ranges: ::prost::alloc::vec::Vec<ScanRange>,
#[prost(message, optional, tag = "4")]
pub vnode_bitmap: ::core::option::Option<super::common::Buffer>,
#[prost(bool, tag = "5")]
pub ordered: bool,
#[prost(uint64, optional, tag = "6")]
pub limit: ::core::option::Option<u64>,
#[prost(message, optional, tag = "7")]
pub as_of: ::core::option::Option<super::plan_common::AsOf>,
}
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SysRowSeqScanNode {
#[prost(uint32, tag = "1")]
pub table_id: u32,
#[prost(message, repeated, tag = "2")]
pub column_descs: ::prost::alloc::vec::Vec<super::plan_common::ColumnDesc>,
}
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ScanRange {
#[prost(bytes = "vec", repeated, tag = "1")]
pub eq_conds: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
#[prost(message, optional, tag = "2")]
pub lower_bound: ::core::option::Option<scan_range::Bound>,
#[prost(message, optional, tag = "3")]
pub upper_bound: ::core::option::Option<scan_range::Bound>,
}
pub mod scan_range {
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Bound {
#[prost(bytes = "vec", tag = "1")]
pub value: ::prost::alloc::vec::Vec<u8>,
#[prost(bool, tag = "2")]
pub inclusive: bool,
}
}
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SourceNode {
#[prost(uint32, tag = "1")]
pub source_id: u32,
#[prost(message, repeated, tag = "2")]
pub columns: ::prost::alloc::vec::Vec<super::plan_common::ColumnCatalog>,
#[prost(btree_map = "string, string", tag = "3")]
pub with_properties: ::prost::alloc::collections::BTreeMap<
::prost::alloc::string::String,
::prost::alloc::string::String,
>,
#[prost(bytes = "vec", repeated, tag = "4")]
pub split: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
#[prost(message, optional, tag = "5")]
pub info: ::core::option::Option<super::catalog::StreamSourceInfo>,
#[prost(btree_map = "string, message", tag = "6")]
pub secret_refs: ::prost::alloc::collections::BTreeMap<
::prost::alloc::string::String,
super::secret::SecretRef,
>,
}
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct IcebergScanNode {
#[prost(message, repeated, tag = "1")]
pub columns: ::prost::alloc::vec::Vec<super::plan_common::ColumnCatalog>,
#[prost(btree_map = "string, string", tag = "2")]
pub with_properties: ::prost::alloc::collections::BTreeMap<
::prost::alloc::string::String,
::prost::alloc::string::String,
>,
#[prost(bytes = "vec", repeated, tag = "3")]
pub split: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
#[prost(btree_map = "string, message", tag = "4")]
pub secret_refs: ::prost::alloc::collections::BTreeMap<
::prost::alloc::string::String,
super::secret::SecretRef,
>,
}
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FileScanNode {
#[prost(message, repeated, tag = "1")]
pub columns: ::prost::alloc::vec::Vec<super::plan_common::ColumnDesc>,
#[prost(enumeration = "file_scan_node::FileFormat", tag = "2")]
pub file_format: i32,
#[prost(enumeration = "file_scan_node::StorageType", tag = "3")]
pub storage_type: i32,
#[prost(string, tag = "4")]
pub s3_region: ::prost::alloc::string::String,
#[prost(string, tag = "5")]
pub s3_access_key: ::prost::alloc::string::String,
#[prost(string, tag = "6")]
pub s3_secret_key: ::prost::alloc::string::String,
#[prost(string, repeated, tag = "7")]
pub file_location: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
pub mod file_scan_node {
#[derive(prost_helpers::AnyPB)]
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum FileFormat {
Unspecified = 0,
Parquet = 1,
}
impl FileFormat {
pub fn as_str_name(&self) -> &'static str {
match self {
FileFormat::Unspecified => "FILE_FORMAT_UNSPECIFIED",
FileFormat::Parquet => "PARQUET",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"FILE_FORMAT_UNSPECIFIED" => Some(Self::Unspecified),
"PARQUET" => Some(Self::Parquet),
_ => None,
}
}
}
#[derive(prost_helpers::AnyPB)]
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum StorageType {
Unspecified = 0,
S3 = 1,
}
impl StorageType {
pub fn as_str_name(&self) -> &'static str {
match self {
StorageType::Unspecified => "STORAGE_TYPE_UNSPECIFIED",
StorageType::S3 => "S3",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"STORAGE_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
"S3" => Some(Self::S3),
_ => None,
}
}
}
}
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PostgresQueryNode {
#[prost(message, repeated, tag = "1")]
pub columns: ::prost::alloc::vec::Vec<super::plan_common::ColumnDesc>,
#[prost(string, tag = "2")]
pub hostname: ::prost::alloc::string::String,
#[prost(string, tag = "3")]
pub port: ::prost::alloc::string::String,
#[prost(string, tag = "4")]
pub username: ::prost::alloc::string::String,
#[prost(string, tag = "5")]
pub password: ::prost::alloc::string::String,
#[prost(string, tag = "6")]
pub database: ::prost::alloc::string::String,
#[prost(string, tag = "7")]
pub query: ::prost::alloc::string::String,
}
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MySqlQueryNode {
#[prost(message, repeated, tag = "1")]
pub columns: ::prost::alloc::vec::Vec<super::plan_common::ColumnDesc>,
#[prost(string, tag = "2")]
pub hostname: ::prost::alloc::string::String,
#[prost(string, tag = "3")]
pub port: ::prost::alloc::string::String,
#[prost(string, tag = "4")]
pub username: ::prost::alloc::string::String,
#[prost(string, tag = "5")]
pub password: ::prost::alloc::string::String,
#[prost(string, tag = "6")]
pub database: ::prost::alloc::string::String,
#[prost(string, tag = "7")]
pub query: ::prost::alloc::string::String,
}
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ProjectNode {
#[prost(message, repeated, tag = "1")]
pub select_list: ::prost::alloc::vec::Vec<super::expr::ExprNode>,
}
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FilterNode {
#[prost(message, optional, tag = "1")]
pub search_condition: ::core::option::Option<super::expr::ExprNode>,
}
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LogRowSeqScanNode {
#[prost(message, optional, tag = "1")]
pub table_desc: ::core::option::Option<super::plan_common::StorageTableDesc>,
#[prost(int32, repeated, tag = "2")]
pub column_ids: ::prost::alloc::vec::Vec<i32>,
#[prost(message, optional, tag = "3")]
pub vnode_bitmap: ::core::option::Option<super::common::Buffer>,
#[prost(message, optional, tag = "4")]
pub old_epoch: ::core::option::Option<super::common::BatchQueryEpoch>,
#[prost(message, optional, tag = "5")]
pub new_epoch: ::core::option::Option<super::common::BatchQueryEpoch>,
#[prost(bool, tag = "6")]
pub ordered: bool,
}
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct InsertNode {
#[prost(uint32, tag = "1")]
pub table_id: u32,
#[prost(uint64, tag = "5")]
pub table_version_id: u64,
#[prost(uint32, repeated, tag = "2")]
pub column_indices: ::prost::alloc::vec::Vec<u32>,
#[prost(message, optional, tag = "6")]
pub default_columns: ::core::option::Option<super::plan_common::DefaultColumns>,
#[prost(uint32, optional, tag = "3")]
pub row_id_index: ::core::option::Option<u32>,
#[prost(bool, tag = "4")]
pub returning: bool,
#[prost(uint32, tag = "7")]
pub session_id: u32,
}
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct DeleteNode {
#[prost(uint32, tag = "1")]
pub table_id: u32,
#[prost(uint64, tag = "3")]
pub table_version_id: u64,
#[prost(bool, tag = "2")]
pub returning: bool,
#[prost(uint32, tag = "4")]
pub session_id: u32,
}
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UpdateNode {
#[prost(uint32, tag = "1")]
pub table_id: u32,
#[prost(uint64, tag = "2")]
pub table_version_id: u64,
#[prost(message, repeated, tag = "3")]
pub old_exprs: ::prost::alloc::vec::Vec<super::expr::ExprNode>,
#[prost(message, repeated, tag = "4")]
pub new_exprs: ::prost::alloc::vec::Vec<super::expr::ExprNode>,
#[prost(bool, tag = "5")]
pub returning: bool,
#[prost(uint32, tag = "6")]
pub session_id: u32,
}
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ValuesNode {
#[prost(message, repeated, tag = "1")]
pub tuples: ::prost::alloc::vec::Vec<values_node::ExprTuple>,
#[prost(message, repeated, tag = "2")]
pub fields: ::prost::alloc::vec::Vec<super::plan_common::Field>,
}
pub mod values_node {
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ExprTuple {
#[prost(message, repeated, tag = "1")]
pub cells: ::prost::alloc::vec::Vec<super::super::expr::ExprNode>,
}
}
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SortNode {
#[prost(message, repeated, tag = "1")]
pub column_orders: ::prost::alloc::vec::Vec<super::common::ColumnOrder>,
}
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TopNNode {
#[prost(message, repeated, tag = "1")]
pub column_orders: ::prost::alloc::vec::Vec<super::common::ColumnOrder>,
#[prost(uint64, tag = "2")]
pub limit: u64,
#[prost(uint64, tag = "3")]
pub offset: u64,
#[prost(bool, tag = "4")]
pub with_ties: bool,
}
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GroupTopNNode {
#[prost(message, repeated, tag = "1")]
pub column_orders: ::prost::alloc::vec::Vec<super::common::ColumnOrder>,
#[prost(uint64, tag = "2")]
pub limit: u64,
#[prost(uint64, tag = "3")]
pub offset: u64,
#[prost(uint32, repeated, tag = "4")]
pub group_key: ::prost::alloc::vec::Vec<u32>,
#[prost(bool, tag = "5")]
pub with_ties: bool,
}
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct LimitNode {
#[prost(uint64, tag = "1")]
pub limit: u64,
#[prost(uint64, tag = "2")]
pub offset: u64,
}
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct NestedLoopJoinNode {
#[prost(enumeration = "super::plan_common::JoinType", tag = "1")]
pub join_type: i32,
#[prost(message, optional, tag = "2")]
pub join_cond: ::core::option::Option<super::expr::ExprNode>,
#[prost(uint32, repeated, tag = "3")]
pub output_indices: ::prost::alloc::vec::Vec<u32>,
}
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct HashAggNode {
#[prost(uint32, repeated, tag = "1")]
pub group_key: ::prost::alloc::vec::Vec<u32>,
#[prost(message, repeated, tag = "2")]
pub agg_calls: ::prost::alloc::vec::Vec<super::expr::AggCall>,
}
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ExpandNode {
#[prost(message, repeated, tag = "1")]
pub column_subsets: ::prost::alloc::vec::Vec<expand_node::Subset>,
}
pub mod expand_node {
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Subset {
#[prost(uint32, repeated, tag = "1")]
pub column_indices: ::prost::alloc::vec::Vec<u32>,
}
}
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ProjectSetNode {
#[prost(message, repeated, tag = "1")]
pub select_list: ::prost::alloc::vec::Vec<super::expr::ProjectSetSelectItem>,
}
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SortAggNode {
#[prost(message, repeated, tag = "1")]
pub group_key: ::prost::alloc::vec::Vec<super::expr::ExprNode>,
#[prost(message, repeated, tag = "2")]
pub agg_calls: ::prost::alloc::vec::Vec<super::expr::AggCall>,
}
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct HashJoinNode {
#[prost(enumeration = "super::plan_common::JoinType", tag = "1")]
pub join_type: i32,
#[prost(int32, repeated, tag = "2")]
pub left_key: ::prost::alloc::vec::Vec<i32>,
#[prost(int32, repeated, tag = "3")]
pub right_key: ::prost::alloc::vec::Vec<i32>,
#[prost(message, optional, tag = "4")]
pub condition: ::core::option::Option<super::expr::ExprNode>,
#[prost(uint32, repeated, tag = "5")]
pub output_indices: ::prost::alloc::vec::Vec<u32>,
#[prost(bool, repeated, tag = "6")]
pub null_safe: ::prost::alloc::vec::Vec<bool>,
}
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SortMergeJoinNode {
#[prost(enumeration = "super::plan_common::JoinType", tag = "1")]
pub join_type: i32,
#[prost(int32, repeated, tag = "2")]
pub left_key: ::prost::alloc::vec::Vec<i32>,
#[prost(int32, repeated, tag = "3")]
pub right_key: ::prost::alloc::vec::Vec<i32>,
#[prost(enumeration = "super::common::Direction", tag = "4")]
pub direction: i32,
#[prost(uint32, repeated, tag = "5")]
pub output_indices: ::prost::alloc::vec::Vec<u32>,
}
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct HopWindowNode {
#[prost(uint32, tag = "1")]
pub time_col: u32,
#[prost(message, optional, tag = "2")]
pub window_slide: ::core::option::Option<super::data::Interval>,
#[prost(message, optional, tag = "3")]
pub window_size: ::core::option::Option<super::data::Interval>,
#[prost(uint32, repeated, tag = "4")]
pub output_indices: ::prost::alloc::vec::Vec<u32>,
#[prost(message, repeated, tag = "5")]
pub window_start_exprs: ::prost::alloc::vec::Vec<super::expr::ExprNode>,
#[prost(message, repeated, tag = "6")]
pub window_end_exprs: ::prost::alloc::vec::Vec<super::expr::ExprNode>,
}
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TableFunctionNode {
#[prost(message, optional, tag = "1")]
pub table_function: ::core::option::Option<super::expr::TableFunction>,
}
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TaskId {
#[prost(string, tag = "1")]
pub query_id: ::prost::alloc::string::String,
#[prost(uint32, tag = "2")]
pub stage_id: u32,
#[prost(uint64, tag = "3")]
pub task_id: u64,
}
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TaskOutputId {
#[prost(message, optional, tag = "1")]
pub task_id: ::core::option::Option<TaskId>,
#[prost(uint64, tag = "2")]
pub output_id: u64,
}
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LocalExecutePlan {
#[prost(message, optional, tag = "1")]
pub plan: ::core::option::Option<PlanFragment>,
#[prost(message, optional, tag = "2")]
pub epoch: ::core::option::Option<super::common::BatchQueryEpoch>,
#[prost(map = "string, string", tag = "3")]
pub tracing_context: ::std::collections::HashMap<
::prost::alloc::string::String,
::prost::alloc::string::String,
>,
}
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ExchangeSource {
#[prost(message, optional, tag = "1")]
pub task_output_id: ::core::option::Option<TaskOutputId>,
#[prost(message, optional, tag = "2")]
pub host: ::core::option::Option<super::common::HostAddress>,
#[prost(oneof = "exchange_source::LocalExecutePlan", tags = "3")]
pub local_execute_plan: ::core::option::Option<exchange_source::LocalExecutePlan>,
}
pub mod exchange_source {
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum LocalExecutePlan {
#[prost(message, tag = "3")]
Plan(super::LocalExecutePlan),
}
}
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ExchangeNode {
#[prost(message, repeated, tag = "1")]
pub sources: ::prost::alloc::vec::Vec<ExchangeSource>,
#[prost(bool, tag = "2")]
pub sequential: bool,
#[prost(message, repeated, tag = "3")]
pub input_schema: ::prost::alloc::vec::Vec<super::plan_common::Field>,
}
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MergeSortExchangeNode {
#[prost(message, optional, tag = "1")]
pub exchange: ::core::option::Option<ExchangeNode>,
#[prost(message, repeated, tag = "2")]
pub column_orders: ::prost::alloc::vec::Vec<super::common::ColumnOrder>,
}
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LocalLookupJoinNode {
#[prost(enumeration = "super::plan_common::JoinType", tag = "1")]
pub join_type: i32,
#[prost(message, optional, tag = "2")]
pub condition: ::core::option::Option<super::expr::ExprNode>,
#[prost(uint32, repeated, tag = "3")]
pub outer_side_key: ::prost::alloc::vec::Vec<u32>,
#[prost(uint32, repeated, tag = "4")]
pub inner_side_key: ::prost::alloc::vec::Vec<u32>,
#[prost(uint32, tag = "5")]
pub lookup_prefix_len: u32,
#[prost(message, optional, tag = "6")]
pub inner_side_table_desc: ::core::option::Option<
super::plan_common::StorageTableDesc,
>,
#[prost(uint64, repeated, tag = "7")]
pub inner_side_vnode_mapping: ::prost::alloc::vec::Vec<u64>,
#[prost(int32, repeated, tag = "8")]
pub inner_side_column_ids: ::prost::alloc::vec::Vec<i32>,
#[prost(uint32, repeated, tag = "9")]
pub output_indices: ::prost::alloc::vec::Vec<u32>,
#[prost(message, repeated, tag = "10")]
pub worker_nodes: ::prost::alloc::vec::Vec<super::common::WorkerNode>,
#[prost(bool, repeated, tag = "11")]
pub null_safe: ::prost::alloc::vec::Vec<bool>,
#[prost(message, optional, tag = "12")]
pub as_of: ::core::option::Option<super::plan_common::AsOf>,
}
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DistributedLookupJoinNode {
#[prost(enumeration = "super::plan_common::JoinType", tag = "1")]
pub join_type: i32,
#[prost(message, optional, tag = "2")]
pub condition: ::core::option::Option<super::expr::ExprNode>,
#[prost(uint32, repeated, tag = "3")]
pub outer_side_key: ::prost::alloc::vec::Vec<u32>,
#[prost(uint32, repeated, tag = "4")]
pub inner_side_key: ::prost::alloc::vec::Vec<u32>,
#[prost(uint32, tag = "5")]
pub lookup_prefix_len: u32,
#[prost(message, optional, tag = "6")]
pub inner_side_table_desc: ::core::option::Option<
super::plan_common::StorageTableDesc,
>,
#[prost(int32, repeated, tag = "7")]
pub inner_side_column_ids: ::prost::alloc::vec::Vec<i32>,
#[prost(uint32, repeated, tag = "8")]
pub output_indices: ::prost::alloc::vec::Vec<u32>,
#[prost(bool, repeated, tag = "9")]
pub null_safe: ::prost::alloc::vec::Vec<bool>,
#[prost(message, optional, tag = "10")]
pub as_of: ::core::option::Option<super::plan_common::AsOf>,
}
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct UnionNode {}
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SortOverWindowNode {
#[prost(message, repeated, tag = "1")]
pub calls: ::prost::alloc::vec::Vec<super::expr::WindowFunction>,
#[prost(uint32, repeated, tag = "2")]
pub partition_by: ::prost::alloc::vec::Vec<u32>,
#[prost(message, repeated, tag = "3")]
pub order_by: ::prost::alloc::vec::Vec<super::common::ColumnOrder>,
}
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MaxOneRowNode {}
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PlanNode {
#[prost(message, repeated, tag = "1")]
pub children: ::prost::alloc::vec::Vec<PlanNode>,
#[prost(string, tag = "24")]
pub identity: ::prost::alloc::string::String,
#[prost(
oneof = "plan_node::NodeBody",
tags = "2, 3, 4, 5, 7, 8, 9, 10, 11, 14, 15, 16, 17, 18, 19, 21, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 100, 101"
)]
pub node_body: ::core::option::Option<plan_node::NodeBody>,
}
pub mod plan_node {
#[derive(prost_helpers::AnyPB)]
#[derive(::enum_as_inner::EnumAsInner, ::strum::Display)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum NodeBody {
#[prost(message, tag = "2")]
Insert(super::InsertNode),
#[prost(message, tag = "3")]
Delete(super::DeleteNode),
#[prost(message, tag = "4")]
Update(super::UpdateNode),
#[prost(message, tag = "5")]
Project(super::ProjectNode),
#[prost(message, tag = "7")]
HashAgg(super::HashAggNode),
#[prost(message, tag = "8")]
Filter(super::FilterNode),
#[prost(message, tag = "9")]
Exchange(super::ExchangeNode),
#[prost(message, tag = "10")]
Sort(super::SortNode),
#[prost(message, tag = "11")]
NestedLoopJoin(super::NestedLoopJoinNode),
#[prost(message, tag = "14")]
TopN(super::TopNNode),
#[prost(message, tag = "15")]
SortAgg(super::SortAggNode),
#[prost(message, tag = "16")]
RowSeqScan(super::RowSeqScanNode),
#[prost(message, tag = "17")]
Limit(super::LimitNode),
#[prost(message, tag = "18")]
Values(super::ValuesNode),
#[prost(message, tag = "19")]
HashJoin(super::HashJoinNode),
#[prost(message, tag = "21")]
MergeSortExchange(super::MergeSortExchangeNode),
#[prost(message, tag = "25")]
HopWindow(super::HopWindowNode),
#[prost(message, tag = "26")]
TableFunction(super::TableFunctionNode),
#[prost(message, tag = "27")]
SysRowSeqScan(super::SysRowSeqScanNode),
#[prost(message, tag = "28")]
Expand(super::ExpandNode),
#[prost(message, tag = "29")]
LocalLookupJoin(super::LocalLookupJoinNode),
#[prost(message, tag = "30")]
ProjectSet(super::ProjectSetNode),
#[prost(message, tag = "31")]
Union(super::UnionNode),
#[prost(message, tag = "32")]
GroupTopN(super::GroupTopNNode),
#[prost(message, tag = "33")]
DistributedLookupJoin(super::DistributedLookupJoinNode),
#[prost(message, tag = "34")]
Source(super::SourceNode),
#[prost(message, tag = "35")]
SortOverWindow(super::SortOverWindowNode),
#[prost(message, tag = "36")]
MaxOneRow(super::MaxOneRowNode),
#[prost(message, tag = "37")]
LogRowSeqScan(super::LogRowSeqScanNode),
#[prost(message, tag = "38")]
FileScan(super::FileScanNode),
#[prost(message, tag = "39")]
IcebergScan(super::IcebergScanNode),
#[prost(message, tag = "40")]
PostgresQuery(super::PostgresQueryNode),
#[prost(message, tag = "41")]
MysqlQuery(super::MySqlQueryNode),
#[prost(bool, tag = "100")]
BlockExecutor(bool),
#[prost(bool, tag = "101")]
BusyLoopExecutor(bool),
}
}
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ExchangeInfo {
#[prost(enumeration = "exchange_info::DistributionMode", tag = "1")]
pub mode: i32,
#[prost(oneof = "exchange_info::Distribution", tags = "2, 3, 4")]
pub distribution: ::core::option::Option<exchange_info::Distribution>,
}
pub mod exchange_info {
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct BroadcastInfo {
#[prost(uint32, tag = "1")]
pub count: u32,
}
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct HashInfo {
#[prost(uint32, tag = "1")]
pub output_count: u32,
#[prost(uint32, repeated, tag = "3")]
pub key: ::prost::alloc::vec::Vec<u32>,
}
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ConsistentHashInfo {
#[prost(uint32, repeated, tag = "1")]
pub vmap: ::prost::alloc::vec::Vec<u32>,
#[prost(uint32, repeated, tag = "2")]
pub key: ::prost::alloc::vec::Vec<u32>,
}
#[derive(prost_helpers::AnyPB)]
#[derive(
Clone,
Copy,
Debug,
PartialEq,
Eq,
Hash,
PartialOrd,
Ord,
::prost::Enumeration
)]
#[repr(i32)]
pub enum DistributionMode {
Unspecified = 0,
Single = 1,
Broadcast = 2,
Hash = 3,
ConsistentHash = 4,
}
impl DistributionMode {
pub fn as_str_name(&self) -> &'static str {
match self {
DistributionMode::Unspecified => "UNSPECIFIED",
DistributionMode::Single => "SINGLE",
DistributionMode::Broadcast => "BROADCAST",
DistributionMode::Hash => "HASH",
DistributionMode::ConsistentHash => "CONSISTENT_HASH",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"UNSPECIFIED" => Some(Self::Unspecified),
"SINGLE" => Some(Self::Single),
"BROADCAST" => Some(Self::Broadcast),
"HASH" => Some(Self::Hash),
"CONSISTENT_HASH" => Some(Self::ConsistentHash),
_ => None,
}
}
}
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Oneof)]
pub enum Distribution {
#[prost(message, tag = "2")]
BroadcastInfo(BroadcastInfo),
#[prost(message, tag = "3")]
HashInfo(HashInfo),
#[prost(message, tag = "4")]
ConsistentHashInfo(ConsistentHashInfo),
}
}
#[derive(prost_helpers::AnyPB)]
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PlanFragment {
#[prost(message, optional, tag = "1")]
pub root: ::core::option::Option<PlanNode>,
#[prost(message, optional, tag = "2")]
pub exchange_info: ::core::option::Option<ExchangeInfo>,
}