1#[derive(prost_helpers::AnyPB)]
3#[derive(Clone, PartialEq, ::prost::Message)]
4pub struct RowSeqScanNode {
5 #[prost(message, optional, tag = "1")]
6 pub table_desc: ::core::option::Option<super::plan_common::StorageTableDesc>,
7 #[prost(int32, repeated, tag = "2")]
8 pub column_ids: ::prost::alloc::vec::Vec<i32>,
9 #[prost(message, repeated, tag = "3")]
13 pub scan_ranges: ::prost::alloc::vec::Vec<ScanRange>,
14 #[prost(message, optional, tag = "4")]
18 pub vnode_bitmap: ::core::option::Option<super::common::Buffer>,
19 #[prost(bool, tag = "5")]
21 pub ordered: bool,
22 #[prost(uint64, optional, tag = "6")]
24 pub limit: ::core::option::Option<u64>,
25 #[prost(message, optional, tag = "7")]
26 pub as_of: ::core::option::Option<super::plan_common::AsOf>,
27}
28#[derive(prost_helpers::AnyPB)]
29#[derive(Clone, PartialEq, ::prost::Message)]
30pub struct SysRowSeqScanNode {
31 #[prost(uint32, tag = "1")]
32 pub table_id: u32,
33 #[prost(message, repeated, tag = "2")]
34 pub column_descs: ::prost::alloc::vec::Vec<super::plan_common::ColumnDesc>,
35}
36#[derive(prost_helpers::AnyPB)]
43#[derive(Clone, PartialEq, ::prost::Message)]
44pub struct ScanRange {
45 #[prost(bytes = "vec", repeated, tag = "1")]
47 pub eq_conds: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
48 #[prost(message, optional, tag = "2")]
50 pub lower_bound: ::core::option::Option<scan_range::Bound>,
51 #[prost(message, optional, tag = "3")]
53 pub upper_bound: ::core::option::Option<scan_range::Bound>,
54}
55pub mod scan_range {
57 #[derive(prost_helpers::AnyPB)]
59 #[derive(Clone, PartialEq, ::prost::Message)]
60 pub struct Bound {
61 #[prost(bytes = "vec", repeated, tag = "1")]
62 pub value: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
63 #[prost(bool, tag = "2")]
64 pub inclusive: bool,
65 }
66}
67#[derive(prost_helpers::AnyPB)]
68#[derive(Clone, PartialEq, ::prost::Message)]
69pub struct SourceNode {
70 #[prost(uint32, tag = "1")]
71 pub source_id: u32,
72 #[prost(message, repeated, tag = "2")]
73 pub columns: ::prost::alloc::vec::Vec<super::plan_common::ColumnCatalog>,
74 #[prost(btree_map = "string, string", tag = "3")]
75 pub with_properties: ::prost::alloc::collections::BTreeMap<
76 ::prost::alloc::string::String,
77 ::prost::alloc::string::String,
78 >,
79 #[prost(bytes = "vec", repeated, tag = "4")]
80 pub split: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
81 #[prost(message, optional, tag = "5")]
82 pub info: ::core::option::Option<super::catalog::StreamSourceInfo>,
83 #[prost(btree_map = "string, message", tag = "6")]
84 pub secret_refs: ::prost::alloc::collections::BTreeMap<
85 ::prost::alloc::string::String,
86 super::secret::SecretRef,
87 >,
88}
89#[derive(prost_helpers::AnyPB)]
90#[derive(Clone, PartialEq, ::prost::Message)]
91pub struct IcebergScanNode {
92 #[prost(message, repeated, tag = "1")]
93 pub columns: ::prost::alloc::vec::Vec<super::plan_common::ColumnCatalog>,
94 #[prost(btree_map = "string, string", tag = "2")]
95 pub with_properties: ::prost::alloc::collections::BTreeMap<
96 ::prost::alloc::string::String,
97 ::prost::alloc::string::String,
98 >,
99 #[prost(bytes = "vec", repeated, tag = "3")]
100 pub split: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
101 #[prost(btree_map = "string, message", tag = "4")]
102 pub secret_refs: ::prost::alloc::collections::BTreeMap<
103 ::prost::alloc::string::String,
104 super::secret::SecretRef,
105 >,
106 #[prost(enumeration = "iceberg_scan_node::IcebergScanType", tag = "5")]
107 pub iceberg_scan_type: i32,
108}
109pub mod iceberg_scan_node {
111 #[derive(prost_helpers::AnyPB)]
112 #[derive(
113 Clone,
114 Copy,
115 Debug,
116 PartialEq,
117 Eq,
118 Hash,
119 PartialOrd,
120 Ord,
121 ::prost::Enumeration
122 )]
123 #[repr(i32)]
124 pub enum IcebergScanType {
125 Unspecified = 0,
126 DataScan = 1,
127 EqualityDeleteScan = 2,
128 PositionDeleteScan = 3,
129 CountStar = 4,
130 }
131 impl IcebergScanType {
132 pub fn as_str_name(&self) -> &'static str {
137 match self {
138 Self::Unspecified => "ICEBERG_SCAN_TYPE_UNSPECIFIED",
139 Self::DataScan => "ICEBERG_SCAN_TYPE_DATA_SCAN",
140 Self::EqualityDeleteScan => "ICEBERG_SCAN_TYPE_EQUALITY_DELETE_SCAN",
141 Self::PositionDeleteScan => "ICEBERG_SCAN_TYPE_POSITION_DELETE_SCAN",
142 Self::CountStar => "ICEBERG_SCAN_TYPE_COUNT_STAR",
143 }
144 }
145 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
147 match value {
148 "ICEBERG_SCAN_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
149 "ICEBERG_SCAN_TYPE_DATA_SCAN" => Some(Self::DataScan),
150 "ICEBERG_SCAN_TYPE_EQUALITY_DELETE_SCAN" => {
151 Some(Self::EqualityDeleteScan)
152 }
153 "ICEBERG_SCAN_TYPE_POSITION_DELETE_SCAN" => {
154 Some(Self::PositionDeleteScan)
155 }
156 "ICEBERG_SCAN_TYPE_COUNT_STAR" => Some(Self::CountStar),
157 _ => None,
158 }
159 }
160 }
161}
162#[derive(prost_helpers::AnyPB)]
163#[derive(Clone, PartialEq, ::prost::Message)]
164pub struct FileScanNode {
165 #[prost(message, repeated, tag = "1")]
166 pub columns: ::prost::alloc::vec::Vec<super::plan_common::ColumnDesc>,
167 #[prost(enumeration = "file_scan_node::FileFormat", tag = "2")]
168 pub file_format: i32,
169 #[prost(enumeration = "file_scan_node::StorageType", tag = "3")]
170 pub storage_type: i32,
171 #[prost(string, tag = "4")]
172 pub s3_region: ::prost::alloc::string::String,
173 #[prost(string, tag = "5")]
174 pub s3_access_key: ::prost::alloc::string::String,
175 #[prost(string, tag = "6")]
176 pub s3_secret_key: ::prost::alloc::string::String,
177 #[prost(string, repeated, tag = "7")]
178 pub file_location: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
179 #[prost(string, tag = "8")]
180 pub s3_endpoint: ::prost::alloc::string::String,
181}
182pub mod file_scan_node {
184 #[derive(prost_helpers::AnyPB)]
185 #[derive(
186 Clone,
187 Copy,
188 Debug,
189 PartialEq,
190 Eq,
191 Hash,
192 PartialOrd,
193 Ord,
194 ::prost::Enumeration
195 )]
196 #[repr(i32)]
197 pub enum FileFormat {
198 Unspecified = 0,
199 Parquet = 1,
200 }
201 impl FileFormat {
202 pub fn as_str_name(&self) -> &'static str {
207 match self {
208 Self::Unspecified => "FILE_FORMAT_UNSPECIFIED",
209 Self::Parquet => "PARQUET",
210 }
211 }
212 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
214 match value {
215 "FILE_FORMAT_UNSPECIFIED" => Some(Self::Unspecified),
216 "PARQUET" => Some(Self::Parquet),
217 _ => None,
218 }
219 }
220 }
221 #[derive(prost_helpers::AnyPB)]
222 #[derive(
223 Clone,
224 Copy,
225 Debug,
226 PartialEq,
227 Eq,
228 Hash,
229 PartialOrd,
230 Ord,
231 ::prost::Enumeration
232 )]
233 #[repr(i32)]
234 pub enum StorageType {
235 Unspecified = 0,
236 S3 = 1,
237 Gcs = 2,
238 Azblob = 3,
239 }
240 impl StorageType {
241 pub fn as_str_name(&self) -> &'static str {
246 match self {
247 Self::Unspecified => "STORAGE_TYPE_UNSPECIFIED",
248 Self::S3 => "S3",
249 Self::Gcs => "GCS",
250 Self::Azblob => "AZBLOB",
251 }
252 }
253 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
255 match value {
256 "STORAGE_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
257 "S3" => Some(Self::S3),
258 "GCS" => Some(Self::Gcs),
259 "AZBLOB" => Some(Self::Azblob),
260 _ => None,
261 }
262 }
263 }
264}
265#[derive(prost_helpers::AnyPB)]
266#[derive(Clone, PartialEq, ::prost::Message)]
267pub struct GcsFileScanNode {
268 #[prost(message, repeated, tag = "1")]
269 pub columns: ::prost::alloc::vec::Vec<super::plan_common::ColumnDesc>,
270 #[prost(enumeration = "gcs_file_scan_node::FileFormat", tag = "2")]
271 pub file_format: i32,
272 #[prost(string, tag = "3")]
273 pub credential: ::prost::alloc::string::String,
274 #[prost(string, repeated, tag = "4")]
275 pub file_location: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
276}
277pub mod gcs_file_scan_node {
279 #[derive(prost_helpers::AnyPB)]
280 #[derive(
281 Clone,
282 Copy,
283 Debug,
284 PartialEq,
285 Eq,
286 Hash,
287 PartialOrd,
288 Ord,
289 ::prost::Enumeration
290 )]
291 #[repr(i32)]
292 pub enum FileFormat {
293 Unspecified = 0,
294 Parquet = 1,
295 }
296 impl FileFormat {
297 pub fn as_str_name(&self) -> &'static str {
302 match self {
303 Self::Unspecified => "FILE_FORMAT_UNSPECIFIED",
304 Self::Parquet => "PARQUET",
305 }
306 }
307 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
309 match value {
310 "FILE_FORMAT_UNSPECIFIED" => Some(Self::Unspecified),
311 "PARQUET" => Some(Self::Parquet),
312 _ => None,
313 }
314 }
315 }
316}
317#[derive(prost_helpers::AnyPB)]
318#[derive(Clone, PartialEq, ::prost::Message)]
319pub struct AzblobFileScanNode {
320 #[prost(message, repeated, tag = "1")]
321 pub columns: ::prost::alloc::vec::Vec<super::plan_common::ColumnDesc>,
322 #[prost(enumeration = "azblob_file_scan_node::FileFormat", tag = "2")]
323 pub file_format: i32,
324 #[prost(string, tag = "3")]
325 pub account_name: ::prost::alloc::string::String,
326 #[prost(string, tag = "4")]
327 pub account_key: ::prost::alloc::string::String,
328 #[prost(string, tag = "5")]
329 pub endpoint: ::prost::alloc::string::String,
330 #[prost(string, repeated, tag = "6")]
331 pub file_location: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
332}
333pub mod azblob_file_scan_node {
335 #[derive(prost_helpers::AnyPB)]
336 #[derive(
337 Clone,
338 Copy,
339 Debug,
340 PartialEq,
341 Eq,
342 Hash,
343 PartialOrd,
344 Ord,
345 ::prost::Enumeration
346 )]
347 #[repr(i32)]
348 pub enum FileFormat {
349 Unspecified = 0,
350 Parquet = 1,
351 }
352 impl FileFormat {
353 pub fn as_str_name(&self) -> &'static str {
358 match self {
359 Self::Unspecified => "FILE_FORMAT_UNSPECIFIED",
360 Self::Parquet => "PARQUET",
361 }
362 }
363 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
365 match value {
366 "FILE_FORMAT_UNSPECIFIED" => Some(Self::Unspecified),
367 "PARQUET" => Some(Self::Parquet),
368 _ => None,
369 }
370 }
371 }
372}
373#[derive(prost_helpers::AnyPB)]
375#[derive(Clone, PartialEq, ::prost::Message)]
376pub struct PostgresQueryNode {
377 #[prost(message, repeated, tag = "1")]
378 pub columns: ::prost::alloc::vec::Vec<super::plan_common::ColumnDesc>,
379 #[prost(string, tag = "2")]
380 pub hostname: ::prost::alloc::string::String,
381 #[prost(string, tag = "3")]
382 pub port: ::prost::alloc::string::String,
383 #[prost(string, tag = "4")]
384 pub username: ::prost::alloc::string::String,
385 #[prost(string, tag = "5")]
386 pub password: ::prost::alloc::string::String,
387 #[prost(string, tag = "6")]
388 pub database: ::prost::alloc::string::String,
389 #[prost(string, tag = "7")]
390 pub query: ::prost::alloc::string::String,
391}
392#[derive(prost_helpers::AnyPB)]
394#[derive(Clone, PartialEq, ::prost::Message)]
395pub struct MySqlQueryNode {
396 #[prost(message, repeated, tag = "1")]
397 pub columns: ::prost::alloc::vec::Vec<super::plan_common::ColumnDesc>,
398 #[prost(string, tag = "2")]
399 pub hostname: ::prost::alloc::string::String,
400 #[prost(string, tag = "3")]
401 pub port: ::prost::alloc::string::String,
402 #[prost(string, tag = "4")]
403 pub username: ::prost::alloc::string::String,
404 #[prost(string, tag = "5")]
405 pub password: ::prost::alloc::string::String,
406 #[prost(string, tag = "6")]
407 pub database: ::prost::alloc::string::String,
408 #[prost(string, tag = "7")]
409 pub query: ::prost::alloc::string::String,
410}
411#[derive(prost_helpers::AnyPB)]
412#[derive(Clone, PartialEq, ::prost::Message)]
413pub struct ProjectNode {
414 #[prost(message, repeated, tag = "1")]
415 pub select_list: ::prost::alloc::vec::Vec<super::expr::ExprNode>,
416}
417#[derive(prost_helpers::AnyPB)]
418#[derive(Clone, PartialEq, ::prost::Message)]
419pub struct FilterNode {
420 #[prost(message, optional, tag = "1")]
421 pub search_condition: ::core::option::Option<super::expr::ExprNode>,
422}
423#[derive(prost_helpers::AnyPB)]
424#[derive(Clone, PartialEq, ::prost::Message)]
425pub struct LogRowSeqScanNode {
426 #[prost(message, optional, tag = "1")]
427 pub table_desc: ::core::option::Option<super::plan_common::StorageTableDesc>,
428 #[prost(int32, repeated, tag = "2")]
430 pub column_ids: ::prost::alloc::vec::Vec<i32>,
431 #[prost(message, optional, tag = "3")]
435 pub vnode_bitmap: ::core::option::Option<super::common::Buffer>,
436 #[prost(message, optional, tag = "4")]
437 pub old_epoch: ::core::option::Option<super::common::BatchQueryEpoch>,
438 #[prost(message, optional, tag = "5")]
439 pub new_epoch: ::core::option::Option<super::common::BatchQueryEpoch>,
440 #[prost(bool, tag = "6")]
441 pub ordered: bool,
442 #[prost(message, optional, tag = "7")]
443 pub scan_range: ::core::option::Option<ScanRange>,
444}
445#[derive(prost_helpers::AnyPB)]
446#[derive(Clone, PartialEq, ::prost::Message)]
447pub struct InsertNode {
448 #[prost(uint32, tag = "1")]
450 pub table_id: u32,
451 #[prost(uint64, tag = "5")]
453 pub table_version_id: u64,
454 #[prost(uint32, repeated, tag = "2")]
455 pub column_indices: ::prost::alloc::vec::Vec<u32>,
456 #[prost(message, optional, tag = "6")]
457 pub default_columns: ::core::option::Option<super::plan_common::DefaultColumns>,
458 #[prost(uint32, optional, tag = "3")]
462 pub row_id_index: ::core::option::Option<u32>,
463 #[prost(bool, tag = "4")]
464 pub returning: bool,
465 #[prost(uint32, tag = "7")]
467 pub session_id: u32,
468}
469#[derive(prost_helpers::AnyPB)]
470#[derive(Clone, Copy, PartialEq, ::prost::Message)]
471pub struct DeleteNode {
472 #[prost(uint32, tag = "1")]
474 pub table_id: u32,
475 #[prost(uint64, tag = "3")]
477 pub table_version_id: u64,
478 #[prost(bool, tag = "2")]
479 pub returning: bool,
480 #[prost(uint32, tag = "4")]
482 pub session_id: u32,
483}
484#[derive(prost_helpers::AnyPB)]
485#[derive(Clone, PartialEq, ::prost::Message)]
486pub struct UpdateNode {
487 #[prost(uint32, tag = "1")]
489 pub table_id: u32,
490 #[prost(uint64, tag = "2")]
492 pub table_version_id: u64,
493 #[prost(message, repeated, tag = "3")]
495 pub old_exprs: ::prost::alloc::vec::Vec<super::expr::ExprNode>,
496 #[prost(message, repeated, tag = "4")]
498 pub new_exprs: ::prost::alloc::vec::Vec<super::expr::ExprNode>,
499 #[prost(bool, tag = "5")]
500 pub returning: bool,
501 #[prost(uint32, tag = "6")]
503 pub session_id: u32,
504}
505#[derive(prost_helpers::AnyPB)]
506#[derive(Clone, PartialEq, ::prost::Message)]
507pub struct ValuesNode {
508 #[prost(message, repeated, tag = "1")]
509 pub tuples: ::prost::alloc::vec::Vec<values_node::ExprTuple>,
510 #[prost(message, repeated, tag = "2")]
511 pub fields: ::prost::alloc::vec::Vec<super::plan_common::Field>,
512}
513pub mod values_node {
515 #[derive(prost_helpers::AnyPB)]
516 #[derive(Clone, PartialEq, ::prost::Message)]
517 pub struct ExprTuple {
518 #[prost(message, repeated, tag = "1")]
519 pub cells: ::prost::alloc::vec::Vec<super::super::expr::ExprNode>,
520 }
521}
522#[derive(prost_helpers::AnyPB)]
523#[derive(Clone, PartialEq, ::prost::Message)]
524pub struct SortNode {
525 #[prost(message, repeated, tag = "1")]
526 pub column_orders: ::prost::alloc::vec::Vec<super::common::ColumnOrder>,
527}
528#[derive(prost_helpers::AnyPB)]
529#[derive(Clone, PartialEq, ::prost::Message)]
530pub struct TopNNode {
531 #[prost(message, repeated, tag = "1")]
532 pub column_orders: ::prost::alloc::vec::Vec<super::common::ColumnOrder>,
533 #[prost(uint64, tag = "2")]
534 pub limit: u64,
535 #[prost(uint64, tag = "3")]
536 pub offset: u64,
537 #[prost(bool, tag = "4")]
538 pub with_ties: bool,
539}
540#[derive(prost_helpers::AnyPB)]
541#[derive(Clone, PartialEq, ::prost::Message)]
542pub struct GroupTopNNode {
543 #[prost(message, repeated, tag = "1")]
544 pub column_orders: ::prost::alloc::vec::Vec<super::common::ColumnOrder>,
545 #[prost(uint64, tag = "2")]
546 pub limit: u64,
547 #[prost(uint64, tag = "3")]
548 pub offset: u64,
549 #[prost(uint32, repeated, tag = "4")]
550 pub group_key: ::prost::alloc::vec::Vec<u32>,
551 #[prost(bool, tag = "5")]
552 pub with_ties: bool,
553}
554#[derive(prost_helpers::AnyPB)]
555#[derive(Clone, Copy, PartialEq, ::prost::Message)]
556pub struct LimitNode {
557 #[prost(uint64, tag = "1")]
558 pub limit: u64,
559 #[prost(uint64, tag = "2")]
560 pub offset: u64,
561}
562#[derive(prost_helpers::AnyPB)]
563#[derive(Clone, PartialEq, ::prost::Message)]
564pub struct NestedLoopJoinNode {
565 #[prost(enumeration = "super::plan_common::JoinType", tag = "1")]
566 pub join_type: i32,
567 #[prost(message, optional, tag = "2")]
568 pub join_cond: ::core::option::Option<super::expr::ExprNode>,
569 #[prost(uint32, repeated, tag = "3")]
570 pub output_indices: ::prost::alloc::vec::Vec<u32>,
571}
572#[derive(prost_helpers::AnyPB)]
573#[derive(Clone, PartialEq, ::prost::Message)]
574pub struct HashAggNode {
575 #[prost(uint32, repeated, tag = "1")]
576 pub group_key: ::prost::alloc::vec::Vec<u32>,
577 #[prost(message, repeated, tag = "2")]
578 pub agg_calls: ::prost::alloc::vec::Vec<super::expr::AggCall>,
579}
580#[derive(prost_helpers::AnyPB)]
581#[derive(Clone, PartialEq, ::prost::Message)]
582pub struct ExpandNode {
583 #[prost(message, repeated, tag = "1")]
584 pub column_subsets: ::prost::alloc::vec::Vec<expand_node::Subset>,
585}
586pub mod expand_node {
588 #[derive(prost_helpers::AnyPB)]
589 #[derive(Clone, PartialEq, ::prost::Message)]
590 pub struct Subset {
591 #[prost(uint32, repeated, tag = "1")]
592 pub column_indices: ::prost::alloc::vec::Vec<u32>,
593 }
594}
595#[derive(prost_helpers::AnyPB)]
596#[derive(Clone, PartialEq, ::prost::Message)]
597pub struct ProjectSetNode {
598 #[prost(message, repeated, tag = "1")]
599 pub select_list: ::prost::alloc::vec::Vec<super::expr::ProjectSetSelectItem>,
600}
601#[derive(prost_helpers::AnyPB)]
602#[derive(Clone, PartialEq, ::prost::Message)]
603pub struct SortAggNode {
604 #[prost(message, repeated, tag = "1")]
605 pub group_key: ::prost::alloc::vec::Vec<super::expr::ExprNode>,
606 #[prost(message, repeated, tag = "2")]
607 pub agg_calls: ::prost::alloc::vec::Vec<super::expr::AggCall>,
608}
609#[derive(prost_helpers::AnyPB)]
610#[derive(Clone, PartialEq, ::prost::Message)]
611pub struct HashJoinNode {
612 #[prost(enumeration = "super::plan_common::JoinType", tag = "1")]
613 pub join_type: i32,
614 #[prost(int32, repeated, tag = "2")]
615 pub left_key: ::prost::alloc::vec::Vec<i32>,
616 #[prost(int32, repeated, tag = "3")]
617 pub right_key: ::prost::alloc::vec::Vec<i32>,
618 #[prost(message, optional, tag = "4")]
619 pub condition: ::core::option::Option<super::expr::ExprNode>,
620 #[prost(uint32, repeated, tag = "5")]
621 pub output_indices: ::prost::alloc::vec::Vec<u32>,
622 #[prost(bool, repeated, tag = "6")]
625 pub null_safe: ::prost::alloc::vec::Vec<bool>,
626 #[prost(message, optional, tag = "7")]
627 pub asof_desc: ::core::option::Option<super::plan_common::AsOfJoinDesc>,
628}
629#[derive(prost_helpers::AnyPB)]
630#[derive(Clone, PartialEq, ::prost::Message)]
631pub struct SortMergeJoinNode {
632 #[prost(enumeration = "super::plan_common::JoinType", tag = "1")]
633 pub join_type: i32,
634 #[prost(int32, repeated, tag = "2")]
635 pub left_key: ::prost::alloc::vec::Vec<i32>,
636 #[prost(int32, repeated, tag = "3")]
637 pub right_key: ::prost::alloc::vec::Vec<i32>,
638 #[prost(enumeration = "super::common::Direction", tag = "4")]
639 pub direction: i32,
640 #[prost(uint32, repeated, tag = "5")]
641 pub output_indices: ::prost::alloc::vec::Vec<u32>,
642}
643#[derive(prost_helpers::AnyPB)]
644#[derive(Clone, PartialEq, ::prost::Message)]
645pub struct HopWindowNode {
646 #[prost(uint32, tag = "1")]
647 pub time_col: u32,
648 #[prost(message, optional, tag = "2")]
649 pub window_slide: ::core::option::Option<super::data::Interval>,
650 #[prost(message, optional, tag = "3")]
651 pub window_size: ::core::option::Option<super::data::Interval>,
652 #[prost(uint32, repeated, tag = "4")]
653 pub output_indices: ::prost::alloc::vec::Vec<u32>,
654 #[prost(message, repeated, tag = "5")]
655 pub window_start_exprs: ::prost::alloc::vec::Vec<super::expr::ExprNode>,
656 #[prost(message, repeated, tag = "6")]
657 pub window_end_exprs: ::prost::alloc::vec::Vec<super::expr::ExprNode>,
658}
659#[derive(prost_helpers::AnyPB)]
660#[derive(Clone, PartialEq, ::prost::Message)]
661pub struct TableFunctionNode {
662 #[prost(message, optional, tag = "1")]
663 pub table_function: ::core::option::Option<super::expr::TableFunction>,
664}
665#[derive(prost_helpers::AnyPB)]
667#[derive(Clone, PartialEq, ::prost::Message)]
668pub struct TaskId {
669 #[prost(string, tag = "1")]
670 pub query_id: ::prost::alloc::string::String,
671 #[prost(uint32, tag = "2")]
672 pub stage_id: u32,
673 #[prost(uint64, tag = "3")]
674 pub task_id: u64,
675}
676#[derive(prost_helpers::AnyPB)]
679#[derive(Clone, PartialEq, ::prost::Message)]
680pub struct TaskOutputId {
681 #[prost(message, optional, tag = "1")]
682 pub task_id: ::core::option::Option<TaskId>,
683 #[prost(uint64, tag = "2")]
685 pub output_id: u64,
686}
687#[derive(prost_helpers::AnyPB)]
688#[derive(Clone, PartialEq, ::prost::Message)]
689pub struct LocalExecutePlan {
690 #[prost(message, optional, tag = "1")]
691 pub plan: ::core::option::Option<PlanFragment>,
692 #[prost(message, optional, tag = "2")]
693 pub epoch: ::core::option::Option<super::common::BatchQueryEpoch>,
694 #[prost(map = "string, string", tag = "3")]
695 pub tracing_context: ::std::collections::HashMap<
696 ::prost::alloc::string::String,
697 ::prost::alloc::string::String,
698 >,
699}
700#[derive(prost_helpers::AnyPB)]
702#[derive(Clone, PartialEq, ::prost::Message)]
703pub struct ExchangeSource {
704 #[prost(message, optional, tag = "1")]
705 pub task_output_id: ::core::option::Option<TaskOutputId>,
706 #[prost(message, optional, tag = "2")]
707 pub host: ::core::option::Option<super::common::HostAddress>,
708 #[prost(oneof = "exchange_source::LocalExecutePlan", tags = "3")]
709 pub local_execute_plan: ::core::option::Option<exchange_source::LocalExecutePlan>,
710}
711pub mod exchange_source {
713 #[derive(prost_helpers::AnyPB)]
714 #[derive(Clone, PartialEq, ::prost::Oneof)]
715 pub enum LocalExecutePlan {
716 #[prost(message, tag = "3")]
717 Plan(super::LocalExecutePlan),
718 }
719}
720#[derive(prost_helpers::AnyPB)]
721#[derive(Clone, PartialEq, ::prost::Message)]
722pub struct ExchangeNode {
723 #[prost(message, repeated, tag = "1")]
724 pub sources: ::prost::alloc::vec::Vec<ExchangeSource>,
725 #[prost(bool, tag = "2")]
727 pub sequential: bool,
728 #[prost(message, repeated, tag = "3")]
729 pub input_schema: ::prost::alloc::vec::Vec<super::plan_common::Field>,
730}
731#[derive(prost_helpers::AnyPB)]
732#[derive(Clone, PartialEq, ::prost::Message)]
733pub struct MergeSortExchangeNode {
734 #[prost(message, optional, tag = "1")]
735 pub exchange: ::core::option::Option<ExchangeNode>,
736 #[prost(message, repeated, tag = "2")]
737 pub column_orders: ::prost::alloc::vec::Vec<super::common::ColumnOrder>,
738}
739#[derive(prost_helpers::AnyPB)]
740#[derive(Clone, PartialEq, ::prost::Message)]
741pub struct LocalLookupJoinNode {
742 #[prost(enumeration = "super::plan_common::JoinType", tag = "1")]
743 pub join_type: i32,
744 #[prost(message, optional, tag = "2")]
745 pub condition: ::core::option::Option<super::expr::ExprNode>,
746 #[prost(uint32, repeated, tag = "3")]
747 pub outer_side_key: ::prost::alloc::vec::Vec<u32>,
748 #[prost(uint32, repeated, tag = "4")]
749 pub inner_side_key: ::prost::alloc::vec::Vec<u32>,
750 #[prost(uint32, tag = "5")]
751 pub lookup_prefix_len: u32,
752 #[prost(message, optional, tag = "6")]
753 pub inner_side_table_desc: ::core::option::Option<
754 super::plan_common::StorageTableDesc,
755 >,
756 #[prost(uint64, repeated, tag = "7")]
757 pub inner_side_vnode_mapping: ::prost::alloc::vec::Vec<u64>,
758 #[prost(int32, repeated, tag = "8")]
759 pub inner_side_column_ids: ::prost::alloc::vec::Vec<i32>,
760 #[prost(uint32, repeated, tag = "9")]
761 pub output_indices: ::prost::alloc::vec::Vec<u32>,
762 #[prost(message, repeated, tag = "10")]
763 pub worker_nodes: ::prost::alloc::vec::Vec<super::common::WorkerNode>,
764 #[prost(bool, repeated, tag = "11")]
767 pub null_safe: ::prost::alloc::vec::Vec<bool>,
768 #[prost(message, optional, tag = "12")]
769 pub as_of: ::core::option::Option<super::plan_common::AsOf>,
770 #[prost(message, optional, tag = "13")]
771 pub asof_desc: ::core::option::Option<super::plan_common::AsOfJoinDesc>,
772}
773#[derive(prost_helpers::AnyPB)]
776#[derive(Clone, PartialEq, ::prost::Message)]
777pub struct DistributedLookupJoinNode {
778 #[prost(enumeration = "super::plan_common::JoinType", tag = "1")]
779 pub join_type: i32,
780 #[prost(message, optional, tag = "2")]
781 pub condition: ::core::option::Option<super::expr::ExprNode>,
782 #[prost(uint32, repeated, tag = "3")]
783 pub outer_side_key: ::prost::alloc::vec::Vec<u32>,
784 #[prost(uint32, repeated, tag = "4")]
785 pub inner_side_key: ::prost::alloc::vec::Vec<u32>,
786 #[prost(uint32, tag = "5")]
787 pub lookup_prefix_len: u32,
788 #[prost(message, optional, tag = "6")]
789 pub inner_side_table_desc: ::core::option::Option<
790 super::plan_common::StorageTableDesc,
791 >,
792 #[prost(int32, repeated, tag = "7")]
793 pub inner_side_column_ids: ::prost::alloc::vec::Vec<i32>,
794 #[prost(uint32, repeated, tag = "8")]
795 pub output_indices: ::prost::alloc::vec::Vec<u32>,
796 #[prost(bool, repeated, tag = "9")]
799 pub null_safe: ::prost::alloc::vec::Vec<bool>,
800 #[prost(message, optional, tag = "10")]
801 pub as_of: ::core::option::Option<super::plan_common::AsOf>,
802 #[prost(message, optional, tag = "11")]
803 pub asof_desc: ::core::option::Option<super::plan_common::AsOfJoinDesc>,
804}
805#[derive(prost_helpers::AnyPB)]
806#[derive(Clone, Copy, PartialEq, ::prost::Message)]
807pub struct UnionNode {}
808#[derive(prost_helpers::AnyPB)]
809#[derive(Clone, PartialEq, ::prost::Message)]
810pub struct SortOverWindowNode {
811 #[prost(message, repeated, tag = "1")]
812 pub calls: ::prost::alloc::vec::Vec<super::expr::WindowFunction>,
813 #[prost(uint32, repeated, tag = "2")]
814 pub partition_by: ::prost::alloc::vec::Vec<u32>,
815 #[prost(message, repeated, tag = "3")]
816 pub order_by: ::prost::alloc::vec::Vec<super::common::ColumnOrder>,
817}
818#[derive(prost_helpers::AnyPB)]
819#[derive(Clone, Copy, PartialEq, ::prost::Message)]
820pub struct MaxOneRowNode {}
821#[derive(prost_helpers::AnyPB)]
822#[derive(Clone, PartialEq, ::prost::Message)]
823pub struct PlanNode {
824 #[prost(message, repeated, tag = "1")]
825 pub children: ::prost::alloc::vec::Vec<PlanNode>,
826 #[prost(string, tag = "24")]
827 pub identity: ::prost::alloc::string::String,
828 #[prost(
829 oneof = "plan_node::NodeBody",
830 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, 42, 43, 100, 101"
831 )]
832 pub node_body: ::core::option::Option<plan_node::NodeBody>,
833}
834pub mod plan_node {
836 #[derive(prost_helpers::AnyPB)]
837 #[derive(::enum_as_inner::EnumAsInner, ::strum::Display, ::strum::EnumDiscriminants)]
838 #[derive(Clone, PartialEq, ::prost::Oneof)]
839 pub enum NodeBody {
840 #[prost(message, tag = "2")]
841 Insert(super::InsertNode),
842 #[prost(message, tag = "3")]
843 Delete(super::DeleteNode),
844 #[prost(message, tag = "4")]
845 Update(super::UpdateNode),
846 #[prost(message, tag = "5")]
847 Project(super::ProjectNode),
848 #[prost(message, tag = "7")]
849 HashAgg(super::HashAggNode),
850 #[prost(message, tag = "8")]
851 Filter(super::FilterNode),
852 #[prost(message, tag = "9")]
853 Exchange(super::ExchangeNode),
854 #[prost(message, tag = "10")]
855 Sort(super::SortNode),
856 #[prost(message, tag = "11")]
857 NestedLoopJoin(super::NestedLoopJoinNode),
858 #[prost(message, tag = "14")]
859 TopN(super::TopNNode),
860 #[prost(message, tag = "15")]
861 SortAgg(super::SortAggNode),
862 #[prost(message, tag = "16")]
863 RowSeqScan(super::RowSeqScanNode),
864 #[prost(message, tag = "17")]
865 Limit(super::LimitNode),
866 #[prost(message, tag = "18")]
867 Values(super::ValuesNode),
868 #[prost(message, tag = "19")]
869 HashJoin(super::HashJoinNode),
870 #[prost(message, tag = "21")]
871 MergeSortExchange(super::MergeSortExchangeNode),
872 #[prost(message, tag = "25")]
873 HopWindow(super::HopWindowNode),
874 #[prost(message, tag = "26")]
875 TableFunction(super::TableFunctionNode),
876 #[prost(message, tag = "27")]
877 SysRowSeqScan(super::SysRowSeqScanNode),
878 #[prost(message, tag = "28")]
879 Expand(super::ExpandNode),
880 #[prost(message, tag = "29")]
881 LocalLookupJoin(super::LocalLookupJoinNode),
882 #[prost(message, tag = "30")]
883 ProjectSet(super::ProjectSetNode),
884 #[prost(message, tag = "31")]
885 Union(super::UnionNode),
886 #[prost(message, tag = "32")]
887 GroupTopN(super::GroupTopNNode),
888 #[prost(message, tag = "33")]
889 DistributedLookupJoin(super::DistributedLookupJoinNode),
890 #[prost(message, tag = "34")]
891 Source(super::SourceNode),
892 #[prost(message, tag = "35")]
893 SortOverWindow(super::SortOverWindowNode),
894 #[prost(message, tag = "36")]
895 MaxOneRow(super::MaxOneRowNode),
896 #[prost(message, tag = "37")]
897 LogRowSeqScan(super::LogRowSeqScanNode),
898 #[prost(message, tag = "38")]
899 FileScan(super::FileScanNode),
900 #[prost(message, tag = "39")]
901 IcebergScan(super::IcebergScanNode),
902 #[prost(message, tag = "40")]
903 PostgresQuery(super::PostgresQueryNode),
904 #[prost(message, tag = "41")]
905 MysqlQuery(super::MySqlQueryNode),
906 #[prost(message, tag = "42")]
907 GcsFileScan(super::GcsFileScanNode),
908 #[prost(message, tag = "43")]
909 AzblobFileScan(super::AzblobFileScanNode),
910 #[prost(bool, tag = "100")]
912 BlockExecutor(bool),
913 #[prost(bool, tag = "101")]
914 BusyLoopExecutor(bool),
915 }
916}
917#[derive(prost_helpers::AnyPB)]
922#[derive(Clone, PartialEq, ::prost::Message)]
923pub struct ExchangeInfo {
924 #[prost(enumeration = "exchange_info::DistributionMode", tag = "1")]
925 pub mode: i32,
926 #[prost(oneof = "exchange_info::Distribution", tags = "2, 3, 4")]
927 pub distribution: ::core::option::Option<exchange_info::Distribution>,
928}
929pub mod exchange_info {
931 #[derive(prost_helpers::AnyPB)]
932 #[derive(Clone, Copy, PartialEq, ::prost::Message)]
933 pub struct BroadcastInfo {
934 #[prost(uint32, tag = "1")]
935 pub count: u32,
936 }
937 #[derive(prost_helpers::AnyPB)]
938 #[derive(Clone, PartialEq, ::prost::Message)]
939 pub struct HashInfo {
940 #[prost(uint32, tag = "1")]
941 pub output_count: u32,
942 #[prost(uint32, repeated, tag = "3")]
943 pub key: ::prost::alloc::vec::Vec<u32>,
944 }
945 #[derive(prost_helpers::AnyPB)]
946 #[derive(Clone, PartialEq, ::prost::Message)]
947 pub struct ConsistentHashInfo {
948 #[prost(uint32, repeated, tag = "1")]
950 pub vmap: ::prost::alloc::vec::Vec<u32>,
951 #[prost(uint32, repeated, tag = "2")]
952 pub key: ::prost::alloc::vec::Vec<u32>,
953 }
954 #[derive(prost_helpers::AnyPB)]
955 #[derive(
956 Clone,
957 Copy,
958 Debug,
959 PartialEq,
960 Eq,
961 Hash,
962 PartialOrd,
963 Ord,
964 ::prost::Enumeration
965 )]
966 #[repr(i32)]
967 pub enum DistributionMode {
968 Unspecified = 0,
970 Single = 1,
971 Broadcast = 2,
972 Hash = 3,
973 ConsistentHash = 4,
974 }
975 impl DistributionMode {
976 pub fn as_str_name(&self) -> &'static str {
981 match self {
982 Self::Unspecified => "UNSPECIFIED",
983 Self::Single => "SINGLE",
984 Self::Broadcast => "BROADCAST",
985 Self::Hash => "HASH",
986 Self::ConsistentHash => "CONSISTENT_HASH",
987 }
988 }
989 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
991 match value {
992 "UNSPECIFIED" => Some(Self::Unspecified),
993 "SINGLE" => Some(Self::Single),
994 "BROADCAST" => Some(Self::Broadcast),
995 "HASH" => Some(Self::Hash),
996 "CONSISTENT_HASH" => Some(Self::ConsistentHash),
997 _ => None,
998 }
999 }
1000 }
1001 #[derive(prost_helpers::AnyPB)]
1002 #[derive(Clone, PartialEq, ::prost::Oneof)]
1003 pub enum Distribution {
1004 #[prost(message, tag = "2")]
1005 BroadcastInfo(BroadcastInfo),
1006 #[prost(message, tag = "3")]
1007 HashInfo(HashInfo),
1008 #[prost(message, tag = "4")]
1009 ConsistentHashInfo(ConsistentHashInfo),
1010 }
1011}
1012#[derive(prost_helpers::AnyPB)]
1013#[derive(Clone, PartialEq, ::prost::Message)]
1014pub struct PlanFragment {
1015 #[prost(message, optional, tag = "1")]
1016 pub root: ::core::option::Option<PlanNode>,
1017 #[prost(message, optional, tag = "2")]
1018 pub exchange_info: ::core::option::Option<ExchangeInfo>,
1019}