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