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