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}
478#[derive(prost_helpers::AnyPB)]
479#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
480pub struct DeleteNode {
481 #[prost(uint32, tag = "1", wrapper = "crate::id::TableId")]
483 pub table_id: crate::id::TableId,
484 #[prost(uint64, tag = "3")]
486 pub table_version_id: u64,
487 #[prost(uint32, repeated, tag = "5")]
489 pub pk_indices: ::prost::alloc::vec::Vec<u32>,
490 #[prost(bool, tag = "2")]
491 pub returning: bool,
492 #[prost(bool, tag = "6")]
494 pub upsert: bool,
495 #[prost(uint32, tag = "4")]
497 pub session_id: u32,
498}
499#[derive(prost_helpers::AnyPB)]
500#[derive(Clone, PartialEq, ::prost::Message)]
501pub struct UpdateNode {
502 #[prost(uint32, tag = "1", wrapper = "crate::id::TableId")]
504 pub table_id: crate::id::TableId,
505 #[prost(uint64, tag = "2")]
507 pub table_version_id: u64,
508 #[prost(message, repeated, tag = "3")]
510 pub old_exprs: ::prost::alloc::vec::Vec<super::expr::ExprNode>,
511 #[prost(message, repeated, tag = "4")]
513 pub new_exprs: ::prost::alloc::vec::Vec<super::expr::ExprNode>,
514 #[prost(bool, tag = "5")]
515 pub returning: bool,
516 #[prost(bool, tag = "7")]
518 pub upsert: bool,
519 #[prost(uint32, tag = "6")]
521 pub session_id: u32,
522}
523#[derive(prost_helpers::AnyPB)]
524#[derive(Clone, PartialEq, ::prost::Message)]
525pub struct ValuesNode {
526 #[prost(message, repeated, tag = "1")]
527 pub tuples: ::prost::alloc::vec::Vec<values_node::ExprTuple>,
528 #[prost(message, repeated, tag = "2")]
529 pub fields: ::prost::alloc::vec::Vec<super::plan_common::Field>,
530}
531pub mod values_node {
533 #[derive(prost_helpers::AnyPB)]
534 #[derive(Clone, PartialEq, ::prost::Message)]
535 pub struct ExprTuple {
536 #[prost(message, repeated, tag = "1")]
537 pub cells: ::prost::alloc::vec::Vec<super::super::expr::ExprNode>,
538 }
539}
540#[derive(prost_helpers::AnyPB)]
541#[derive(Clone, PartialEq, ::prost::Message)]
542pub struct SortNode {
543 #[prost(message, repeated, tag = "1")]
544 pub column_orders: ::prost::alloc::vec::Vec<super::common::ColumnOrder>,
545}
546#[derive(prost_helpers::AnyPB)]
547#[derive(Clone, PartialEq, ::prost::Message)]
548pub struct TopNNode {
549 #[prost(message, repeated, tag = "1")]
550 pub column_orders: ::prost::alloc::vec::Vec<super::common::ColumnOrder>,
551 #[prost(uint64, tag = "2")]
552 pub limit: u64,
553 #[prost(uint64, tag = "3")]
554 pub offset: u64,
555 #[prost(bool, tag = "4")]
556 pub with_ties: bool,
557}
558#[derive(prost_helpers::AnyPB)]
559#[derive(Clone, PartialEq, ::prost::Message)]
560pub struct GroupTopNNode {
561 #[prost(message, repeated, tag = "1")]
562 pub column_orders: ::prost::alloc::vec::Vec<super::common::ColumnOrder>,
563 #[prost(uint64, tag = "2")]
564 pub limit: u64,
565 #[prost(uint64, tag = "3")]
566 pub offset: u64,
567 #[prost(uint32, repeated, tag = "4")]
568 pub group_key: ::prost::alloc::vec::Vec<u32>,
569 #[prost(bool, tag = "5")]
570 pub with_ties: bool,
571}
572#[derive(prost_helpers::AnyPB)]
573#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
574pub struct LimitNode {
575 #[prost(uint64, tag = "1")]
576 pub limit: u64,
577 #[prost(uint64, tag = "2")]
578 pub offset: u64,
579}
580#[derive(prost_helpers::AnyPB)]
581#[derive(Clone, PartialEq, ::prost::Message)]
582pub struct NestedLoopJoinNode {
583 #[prost(enumeration = "super::plan_common::JoinType", tag = "1")]
584 pub join_type: i32,
585 #[prost(message, optional, tag = "2")]
586 pub join_cond: ::core::option::Option<super::expr::ExprNode>,
587 #[prost(uint32, repeated, tag = "3")]
588 pub output_indices: ::prost::alloc::vec::Vec<u32>,
589}
590#[derive(prost_helpers::AnyPB)]
591#[derive(Clone, PartialEq, ::prost::Message)]
592pub struct HashAggNode {
593 #[prost(uint32, repeated, tag = "1")]
594 pub group_key: ::prost::alloc::vec::Vec<u32>,
595 #[prost(message, repeated, tag = "2")]
596 pub agg_calls: ::prost::alloc::vec::Vec<super::expr::AggCall>,
597}
598#[derive(prost_helpers::AnyPB)]
599#[derive(Clone, PartialEq, ::prost::Message)]
600pub struct ExpandNode {
601 #[prost(message, repeated, tag = "1")]
602 pub column_subsets: ::prost::alloc::vec::Vec<expand_node::Subset>,
603}
604pub mod expand_node {
606 #[derive(prost_helpers::AnyPB)]
607 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
608 pub struct Subset {
609 #[prost(uint32, repeated, tag = "1")]
610 pub column_indices: ::prost::alloc::vec::Vec<u32>,
611 }
612}
613#[derive(prost_helpers::AnyPB)]
614#[derive(Clone, PartialEq, ::prost::Message)]
615pub struct ProjectSetNode {
616 #[prost(message, repeated, tag = "1")]
617 pub select_list: ::prost::alloc::vec::Vec<super::expr::ProjectSetSelectItem>,
618}
619#[derive(prost_helpers::AnyPB)]
620#[derive(Clone, PartialEq, ::prost::Message)]
621pub struct SortAggNode {
622 #[prost(message, repeated, tag = "1")]
623 pub group_key: ::prost::alloc::vec::Vec<super::expr::ExprNode>,
624 #[prost(message, repeated, tag = "2")]
625 pub agg_calls: ::prost::alloc::vec::Vec<super::expr::AggCall>,
626}
627#[derive(prost_helpers::AnyPB)]
628#[derive(Clone, PartialEq, ::prost::Message)]
629pub struct HashJoinNode {
630 #[prost(enumeration = "super::plan_common::JoinType", tag = "1")]
631 pub join_type: i32,
632 #[prost(int32, repeated, tag = "2")]
633 pub left_key: ::prost::alloc::vec::Vec<i32>,
634 #[prost(int32, repeated, tag = "3")]
635 pub right_key: ::prost::alloc::vec::Vec<i32>,
636 #[prost(message, optional, tag = "4")]
637 pub condition: ::core::option::Option<super::expr::ExprNode>,
638 #[prost(uint32, repeated, tag = "5")]
639 pub output_indices: ::prost::alloc::vec::Vec<u32>,
640 #[prost(bool, repeated, tag = "6")]
643 pub null_safe: ::prost::alloc::vec::Vec<bool>,
644 #[prost(message, optional, tag = "7")]
645 pub asof_desc: ::core::option::Option<super::plan_common::AsOfJoinDesc>,
646}
647#[derive(prost_helpers::AnyPB)]
648#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
649pub struct SortMergeJoinNode {
650 #[prost(enumeration = "super::plan_common::JoinType", tag = "1")]
651 pub join_type: i32,
652 #[prost(int32, repeated, tag = "2")]
653 pub left_key: ::prost::alloc::vec::Vec<i32>,
654 #[prost(int32, repeated, tag = "3")]
655 pub right_key: ::prost::alloc::vec::Vec<i32>,
656 #[prost(enumeration = "super::common::Direction", tag = "4")]
657 pub direction: i32,
658 #[prost(uint32, repeated, tag = "5")]
659 pub output_indices: ::prost::alloc::vec::Vec<u32>,
660}
661#[derive(prost_helpers::AnyPB)]
662#[derive(Clone, PartialEq, ::prost::Message)]
663pub struct HopWindowNode {
664 #[prost(uint32, tag = "1")]
665 pub time_col: u32,
666 #[prost(message, optional, tag = "2")]
667 pub window_slide: ::core::option::Option<super::data::Interval>,
668 #[prost(message, optional, tag = "3")]
669 pub window_size: ::core::option::Option<super::data::Interval>,
670 #[prost(uint32, repeated, tag = "4")]
671 pub output_indices: ::prost::alloc::vec::Vec<u32>,
672 #[prost(message, repeated, tag = "5")]
673 pub window_start_exprs: ::prost::alloc::vec::Vec<super::expr::ExprNode>,
674 #[prost(message, repeated, tag = "6")]
675 pub window_end_exprs: ::prost::alloc::vec::Vec<super::expr::ExprNode>,
676}
677#[derive(prost_helpers::AnyPB)]
678#[derive(Clone, PartialEq, ::prost::Message)]
679pub struct TableFunctionNode {
680 #[prost(message, optional, tag = "1")]
681 pub table_function: ::core::option::Option<super::expr::TableFunction>,
682}
683#[derive(prost_helpers::AnyPB)]
685#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
686pub struct TaskId {
687 #[prost(string, tag = "1")]
688 pub query_id: ::prost::alloc::string::String,
689 #[prost(uint32, tag = "2")]
690 pub stage_id: u32,
691 #[prost(uint64, tag = "3")]
692 pub task_id: u64,
693}
694#[derive(prost_helpers::AnyPB)]
697#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
698pub struct TaskOutputId {
699 #[prost(message, optional, tag = "1")]
700 pub task_id: ::core::option::Option<TaskId>,
701 #[prost(uint64, tag = "2")]
703 pub output_id: u64,
704}
705#[derive(prost_helpers::AnyPB)]
706#[derive(Clone, PartialEq, ::prost::Message)]
707pub struct LocalExecutePlan {
708 #[prost(message, optional, tag = "1")]
709 pub plan: ::core::option::Option<PlanFragment>,
710 #[prost(map = "string, string", tag = "3")]
711 pub tracing_context: ::std::collections::HashMap<
712 ::prost::alloc::string::String,
713 ::prost::alloc::string::String,
714 >,
715}
716#[derive(prost_helpers::AnyPB)]
718#[derive(Clone, PartialEq, ::prost::Message)]
719pub struct ExchangeSource {
720 #[prost(message, optional, tag = "1")]
721 pub task_output_id: ::core::option::Option<TaskOutputId>,
722 #[prost(message, optional, tag = "2")]
723 pub host: ::core::option::Option<super::common::HostAddress>,
724 #[prost(oneof = "exchange_source::LocalExecutePlan", tags = "3")]
725 pub local_execute_plan: ::core::option::Option<exchange_source::LocalExecutePlan>,
726}
727pub mod exchange_source {
729 #[derive(prost_helpers::AnyPB)]
730 #[derive(Clone, PartialEq, ::prost::Oneof)]
731 pub enum LocalExecutePlan {
732 #[prost(message, tag = "3")]
733 Plan(super::LocalExecutePlan),
734 }
735}
736#[derive(prost_helpers::AnyPB)]
737#[derive(Clone, PartialEq, ::prost::Message)]
738pub struct ExchangeNode {
739 #[prost(message, repeated, tag = "1")]
740 pub sources: ::prost::alloc::vec::Vec<ExchangeSource>,
741 #[prost(bool, tag = "2")]
743 pub sequential: bool,
744 #[prost(message, repeated, tag = "3")]
745 pub input_schema: ::prost::alloc::vec::Vec<super::plan_common::Field>,
746}
747#[derive(prost_helpers::AnyPB)]
748#[derive(Clone, PartialEq, ::prost::Message)]
749pub struct MergeSortExchangeNode {
750 #[prost(message, optional, tag = "1")]
751 pub exchange: ::core::option::Option<ExchangeNode>,
752 #[prost(message, repeated, tag = "2")]
753 pub column_orders: ::prost::alloc::vec::Vec<super::common::ColumnOrder>,
754}
755#[derive(prost_helpers::AnyPB)]
756#[derive(Clone, PartialEq, ::prost::Message)]
757pub struct LocalLookupJoinNode {
758 #[prost(enumeration = "super::plan_common::JoinType", tag = "1")]
759 pub join_type: i32,
760 #[prost(message, optional, tag = "2")]
761 pub condition: ::core::option::Option<super::expr::ExprNode>,
762 #[prost(uint32, repeated, tag = "3")]
763 pub outer_side_key: ::prost::alloc::vec::Vec<u32>,
764 #[prost(uint32, repeated, tag = "4")]
765 pub inner_side_key: ::prost::alloc::vec::Vec<u32>,
766 #[prost(uint32, tag = "5")]
767 pub lookup_prefix_len: u32,
768 #[prost(message, optional, tag = "6")]
769 pub inner_side_table_desc: ::core::option::Option<
770 super::plan_common::StorageTableDesc,
771 >,
772 #[prost(uint64, repeated, tag = "7")]
773 pub inner_side_vnode_mapping: ::prost::alloc::vec::Vec<u64>,
774 #[prost(int32, repeated, tag = "8")]
775 pub inner_side_column_ids: ::prost::alloc::vec::Vec<i32>,
776 #[prost(uint32, repeated, tag = "9")]
777 pub output_indices: ::prost::alloc::vec::Vec<u32>,
778 #[prost(message, repeated, tag = "10")]
779 pub worker_nodes: ::prost::alloc::vec::Vec<super::common::WorkerNode>,
780 #[prost(bool, repeated, tag = "11")]
783 pub null_safe: ::prost::alloc::vec::Vec<bool>,
784 #[prost(message, optional, tag = "12")]
785 pub query_epoch: ::core::option::Option<super::common::BatchQueryEpoch>,
786 #[prost(message, optional, tag = "13")]
787 pub asof_desc: ::core::option::Option<super::plan_common::AsOfJoinDesc>,
788}
789#[derive(prost_helpers::AnyPB)]
792#[derive(Clone, PartialEq, ::prost::Message)]
793pub struct DistributedLookupJoinNode {
794 #[prost(enumeration = "super::plan_common::JoinType", tag = "1")]
795 pub join_type: i32,
796 #[prost(message, optional, tag = "2")]
797 pub condition: ::core::option::Option<super::expr::ExprNode>,
798 #[prost(uint32, repeated, tag = "3")]
799 pub outer_side_key: ::prost::alloc::vec::Vec<u32>,
800 #[prost(uint32, repeated, tag = "4")]
801 pub inner_side_key: ::prost::alloc::vec::Vec<u32>,
802 #[prost(uint32, tag = "5")]
803 pub lookup_prefix_len: u32,
804 #[prost(message, optional, tag = "6")]
805 pub inner_side_table_desc: ::core::option::Option<
806 super::plan_common::StorageTableDesc,
807 >,
808 #[prost(int32, repeated, tag = "7")]
809 pub inner_side_column_ids: ::prost::alloc::vec::Vec<i32>,
810 #[prost(uint32, repeated, tag = "8")]
811 pub output_indices: ::prost::alloc::vec::Vec<u32>,
812 #[prost(bool, repeated, tag = "9")]
815 pub null_safe: ::prost::alloc::vec::Vec<bool>,
816 #[prost(message, optional, tag = "10")]
817 pub query_epoch: ::core::option::Option<super::common::BatchQueryEpoch>,
818 #[prost(message, optional, tag = "11")]
819 pub asof_desc: ::core::option::Option<super::plan_common::AsOfJoinDesc>,
820}
821#[derive(prost_helpers::AnyPB)]
822#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
823pub struct UnionNode {}
824#[derive(prost_helpers::AnyPB)]
825#[derive(Clone, PartialEq, ::prost::Message)]
826pub struct SortOverWindowNode {
827 #[prost(message, repeated, tag = "1")]
828 pub calls: ::prost::alloc::vec::Vec<super::expr::WindowFunction>,
829 #[prost(uint32, repeated, tag = "2")]
830 pub partition_by: ::prost::alloc::vec::Vec<u32>,
831 #[prost(message, repeated, tag = "3")]
832 pub order_by: ::prost::alloc::vec::Vec<super::common::ColumnOrder>,
833}
834#[derive(prost_helpers::AnyPB)]
835#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
836pub struct MaxOneRowNode {}
837#[derive(prost_helpers::AnyPB)]
838#[derive(Clone, PartialEq, ::prost::Message)]
839pub struct VectorIndexNearestNode {
840 #[prost(message, optional, tag = "1")]
841 pub reader_desc: ::core::option::Option<super::plan_common::VectorIndexReaderDesc>,
842 #[prost(uint32, tag = "2")]
843 pub vector_column_idx: u32,
844 #[prost(message, optional, tag = "8")]
845 pub query_epoch: ::core::option::Option<super::common::BatchQueryEpoch>,
846}
847#[derive(prost_helpers::AnyPB)]
848#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
849pub struct GetChannelDeltaStatsNode {
850 #[prost(uint64, optional, tag = "1")]
852 pub at_time: ::core::option::Option<u64>,
853 #[prost(uint64, optional, tag = "2")]
855 pub time_offset: ::core::option::Option<u64>,
856}
857#[derive(prost_helpers::AnyPB)]
858#[derive(Clone, PartialEq, ::prost::Message)]
859pub struct PlanNode {
860 #[prost(message, repeated, tag = "1")]
861 pub children: ::prost::alloc::vec::Vec<PlanNode>,
862 #[prost(string, tag = "24")]
863 pub identity: ::prost::alloc::string::String,
864 #[prost(
865 oneof = "plan_node::NodeBody",
866 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"
867 )]
868 pub node_body: ::core::option::Option<plan_node::NodeBody>,
869}
870pub mod plan_node {
872 #[derive(prost_helpers::AnyPB)]
873 #[derive(::enum_as_inner::EnumAsInner, ::strum::Display, ::strum::EnumDiscriminants)]
874 #[strum_discriminants(derive(::strum::Display, Hash))]
875 #[derive(Clone, PartialEq, ::prost::Oneof)]
876 pub enum NodeBody {
877 #[prost(message, tag = "2")]
878 Insert(super::InsertNode),
879 #[prost(message, tag = "3")]
880 Delete(super::DeleteNode),
881 #[prost(message, tag = "4")]
882 Update(super::UpdateNode),
883 #[prost(message, tag = "5")]
884 Project(super::ProjectNode),
885 #[prost(message, tag = "7")]
886 HashAgg(super::HashAggNode),
887 #[prost(message, tag = "8")]
888 Filter(super::FilterNode),
889 #[prost(message, tag = "9")]
890 Exchange(super::ExchangeNode),
891 #[prost(message, tag = "10")]
892 Sort(super::SortNode),
893 #[prost(message, tag = "11")]
894 NestedLoopJoin(super::NestedLoopJoinNode),
895 #[prost(message, tag = "14")]
896 TopN(super::TopNNode),
897 #[prost(message, tag = "15")]
898 SortAgg(super::SortAggNode),
899 #[prost(message, tag = "16")]
900 RowSeqScan(super::RowSeqScanNode),
901 #[prost(message, tag = "17")]
902 Limit(super::LimitNode),
903 #[prost(message, tag = "18")]
904 Values(super::ValuesNode),
905 #[prost(message, tag = "19")]
906 HashJoin(super::HashJoinNode),
907 #[prost(message, tag = "21")]
908 MergeSortExchange(super::MergeSortExchangeNode),
909 #[prost(message, tag = "25")]
910 HopWindow(super::HopWindowNode),
911 #[prost(message, tag = "26")]
912 TableFunction(super::TableFunctionNode),
913 #[prost(message, tag = "27")]
914 SysRowSeqScan(super::SysRowSeqScanNode),
915 #[prost(message, tag = "28")]
916 Expand(super::ExpandNode),
917 #[prost(message, tag = "29")]
918 LocalLookupJoin(super::LocalLookupJoinNode),
919 #[prost(message, tag = "30")]
920 ProjectSet(super::ProjectSetNode),
921 #[prost(message, tag = "31")]
922 Union(super::UnionNode),
923 #[prost(message, tag = "32")]
924 GroupTopN(super::GroupTopNNode),
925 #[prost(message, tag = "33")]
926 DistributedLookupJoin(super::DistributedLookupJoinNode),
927 #[prost(message, tag = "34")]
928 Source(super::SourceNode),
929 #[prost(message, tag = "35")]
930 SortOverWindow(super::SortOverWindowNode),
931 #[prost(message, tag = "36")]
932 MaxOneRow(super::MaxOneRowNode),
933 #[prost(message, tag = "37")]
934 LogRowSeqScan(super::LogRowSeqScanNode),
935 #[prost(message, tag = "38")]
936 FileScan(super::FileScanNode),
937 #[prost(message, tag = "39")]
938 IcebergScan(super::IcebergScanNode),
939 #[prost(message, tag = "40")]
940 PostgresQuery(super::PostgresQueryNode),
941 #[prost(message, tag = "41")]
942 MysqlQuery(super::MySqlQueryNode),
943 #[prost(message, tag = "42")]
944 GcsFileScan(super::GcsFileScanNode),
945 #[prost(message, tag = "43")]
946 AzblobFileScan(super::AzblobFileScanNode),
947 #[prost(message, tag = "44")]
948 VectorIndexNearest(super::VectorIndexNearestNode),
949 #[prost(message, tag = "45")]
950 GetChannelDeltaStats(super::GetChannelDeltaStatsNode),
951 #[prost(bool, tag = "100")]
953 BlockExecutor(bool),
954 #[prost(bool, tag = "101")]
955 BusyLoopExecutor(bool),
956 }
957}
958#[derive(prost_helpers::AnyPB)]
963#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
964pub struct ExchangeInfo {
965 #[prost(enumeration = "exchange_info::DistributionMode", tag = "1")]
966 pub mode: i32,
967 #[prost(oneof = "exchange_info::Distribution", tags = "2, 3, 4")]
968 pub distribution: ::core::option::Option<exchange_info::Distribution>,
969}
970pub mod exchange_info {
972 #[derive(prost_helpers::AnyPB)]
973 #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
974 pub struct BroadcastInfo {
975 #[prost(uint32, tag = "1")]
976 pub count: u32,
977 }
978 #[derive(prost_helpers::AnyPB)]
979 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
980 pub struct HashInfo {
981 #[prost(uint32, tag = "1")]
982 pub output_count: u32,
983 #[prost(uint32, repeated, tag = "3")]
984 pub key: ::prost::alloc::vec::Vec<u32>,
985 }
986 #[derive(prost_helpers::AnyPB)]
987 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
988 pub struct ConsistentHashInfo {
989 #[prost(uint32, repeated, tag = "1")]
991 pub vmap: ::prost::alloc::vec::Vec<u32>,
992 #[prost(uint32, repeated, tag = "2")]
993 pub key: ::prost::alloc::vec::Vec<u32>,
994 }
995 #[derive(prost_helpers::AnyPB)]
996 #[derive(
997 Clone,
998 Copy,
999 Debug,
1000 PartialEq,
1001 Eq,
1002 Hash,
1003 PartialOrd,
1004 Ord,
1005 ::prost::Enumeration
1006 )]
1007 #[repr(i32)]
1008 pub enum DistributionMode {
1009 Unspecified = 0,
1011 Single = 1,
1012 Broadcast = 2,
1013 Hash = 3,
1014 ConsistentHash = 4,
1015 }
1016 impl DistributionMode {
1017 pub fn as_str_name(&self) -> &'static str {
1022 match self {
1023 Self::Unspecified => "UNSPECIFIED",
1024 Self::Single => "SINGLE",
1025 Self::Broadcast => "BROADCAST",
1026 Self::Hash => "HASH",
1027 Self::ConsistentHash => "CONSISTENT_HASH",
1028 }
1029 }
1030 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1032 match value {
1033 "UNSPECIFIED" => Some(Self::Unspecified),
1034 "SINGLE" => Some(Self::Single),
1035 "BROADCAST" => Some(Self::Broadcast),
1036 "HASH" => Some(Self::Hash),
1037 "CONSISTENT_HASH" => Some(Self::ConsistentHash),
1038 _ => None,
1039 }
1040 }
1041 }
1042 #[derive(prost_helpers::AnyPB)]
1043 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
1044 pub enum Distribution {
1045 #[prost(message, tag = "2")]
1046 BroadcastInfo(BroadcastInfo),
1047 #[prost(message, tag = "3")]
1048 HashInfo(HashInfo),
1049 #[prost(message, tag = "4")]
1050 ConsistentHashInfo(ConsistentHashInfo),
1051 }
1052}
1053#[derive(prost_helpers::AnyPB)]
1054#[derive(Clone, PartialEq, ::prost::Message)]
1055pub struct PlanFragment {
1056 #[prost(message, optional, tag = "1")]
1057 pub root: ::core::option::Option<PlanNode>,
1058 #[prost(message, optional, tag = "2")]
1059 pub exchange_info: ::core::option::Option<ExchangeInfo>,
1060}