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 IcebergMetadataScanNode {
170 #[prost(btree_map = "string, string", tag = "1")]
171 pub with_properties: ::prost::alloc::collections::BTreeMap<
172 ::prost::alloc::string::String,
173 ::prost::alloc::string::String,
174 >,
175 #[prost(btree_map = "string, message", tag = "2")]
176 pub secret_refs: ::prost::alloc::collections::BTreeMap<
177 ::prost::alloc::string::String,
178 super::secret::SecretRef,
179 >,
180 #[prost(enumeration = "iceberg_metadata_scan_node::MetadataType", tag = "3")]
181 pub metadata_type: i32,
182 #[prost(oneof = "iceberg_metadata_scan_node::TimeTravel", tags = "4, 5")]
183 pub time_travel: ::core::option::Option<iceberg_metadata_scan_node::TimeTravel>,
184}
185pub mod iceberg_metadata_scan_node {
187 #[derive(prost_helpers::AnyPB)]
188 #[derive(
189 Clone,
190 Copy,
191 Debug,
192 PartialEq,
193 Eq,
194 Hash,
195 PartialOrd,
196 Ord,
197 ::prost::Enumeration
198 )]
199 #[repr(i32)]
200 pub enum MetadataType {
201 Unspecified = 0,
202 Snapshots = 1,
203 Manifests = 2,
204 Files = 3,
205 }
206 impl MetadataType {
207 pub fn as_str_name(&self) -> &'static str {
212 match self {
213 Self::Unspecified => "METADATA_TYPE_UNSPECIFIED",
214 Self::Snapshots => "METADATA_TYPE_SNAPSHOTS",
215 Self::Manifests => "METADATA_TYPE_MANIFESTS",
216 Self::Files => "METADATA_TYPE_FILES",
217 }
218 }
219 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
221 match value {
222 "METADATA_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
223 "METADATA_TYPE_SNAPSHOTS" => Some(Self::Snapshots),
224 "METADATA_TYPE_MANIFESTS" => Some(Self::Manifests),
225 "METADATA_TYPE_FILES" => Some(Self::Files),
226 _ => None,
227 }
228 }
229 }
230 #[derive(prost_helpers::AnyPB)]
231 #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
232 pub enum TimeTravel {
233 #[prost(int64, tag = "4")]
234 SnapshotId(i64),
235 #[prost(int64, tag = "5")]
236 TimestampMs(i64),
237 }
238}
239#[derive(prost_helpers::AnyPB)]
240#[derive(Clone, PartialEq, ::prost::Message)]
241pub struct FileScanNode {
242 #[prost(message, repeated, tag = "1")]
243 pub columns: ::prost::alloc::vec::Vec<super::plan_common::ColumnDesc>,
244 #[prost(enumeration = "file_scan_node::FileFormat", tag = "2")]
245 pub file_format: i32,
246 #[prost(enumeration = "file_scan_node::StorageType", tag = "3")]
247 pub storage_type: i32,
248 #[prost(string, tag = "4")]
249 pub s3_region: ::prost::alloc::string::String,
250 #[prost(string, tag = "5")]
251 pub s3_access_key: ::prost::alloc::string::String,
252 #[prost(string, tag = "6")]
253 pub s3_secret_key: ::prost::alloc::string::String,
254 #[prost(string, repeated, tag = "7")]
255 pub file_location: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
256 #[prost(string, tag = "8")]
257 pub s3_endpoint: ::prost::alloc::string::String,
258}
259pub mod file_scan_node {
261 #[derive(prost_helpers::AnyPB)]
262 #[derive(
263 Clone,
264 Copy,
265 Debug,
266 PartialEq,
267 Eq,
268 Hash,
269 PartialOrd,
270 Ord,
271 ::prost::Enumeration
272 )]
273 #[repr(i32)]
274 pub enum FileFormat {
275 Unspecified = 0,
276 Parquet = 1,
277 }
278 impl FileFormat {
279 pub fn as_str_name(&self) -> &'static str {
284 match self {
285 Self::Unspecified => "FILE_FORMAT_UNSPECIFIED",
286 Self::Parquet => "PARQUET",
287 }
288 }
289 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
291 match value {
292 "FILE_FORMAT_UNSPECIFIED" => Some(Self::Unspecified),
293 "PARQUET" => Some(Self::Parquet),
294 _ => None,
295 }
296 }
297 }
298 #[derive(prost_helpers::AnyPB)]
299 #[derive(
300 Clone,
301 Copy,
302 Debug,
303 PartialEq,
304 Eq,
305 Hash,
306 PartialOrd,
307 Ord,
308 ::prost::Enumeration
309 )]
310 #[repr(i32)]
311 pub enum StorageType {
312 Unspecified = 0,
313 S3 = 1,
314 Gcs = 2,
315 Azblob = 3,
316 }
317 impl StorageType {
318 pub fn as_str_name(&self) -> &'static str {
323 match self {
324 Self::Unspecified => "STORAGE_TYPE_UNSPECIFIED",
325 Self::S3 => "S3",
326 Self::Gcs => "GCS",
327 Self::Azblob => "AZBLOB",
328 }
329 }
330 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
332 match value {
333 "STORAGE_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
334 "S3" => Some(Self::S3),
335 "GCS" => Some(Self::Gcs),
336 "AZBLOB" => Some(Self::Azblob),
337 _ => None,
338 }
339 }
340 }
341}
342#[derive(prost_helpers::AnyPB)]
343#[derive(Clone, PartialEq, ::prost::Message)]
344pub struct GcsFileScanNode {
345 #[prost(message, repeated, tag = "1")]
346 pub columns: ::prost::alloc::vec::Vec<super::plan_common::ColumnDesc>,
347 #[prost(enumeration = "gcs_file_scan_node::FileFormat", tag = "2")]
348 pub file_format: i32,
349 #[prost(string, tag = "3")]
350 pub credential: ::prost::alloc::string::String,
351 #[prost(string, repeated, tag = "4")]
352 pub file_location: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
353}
354pub mod gcs_file_scan_node {
356 #[derive(prost_helpers::AnyPB)]
357 #[derive(
358 Clone,
359 Copy,
360 Debug,
361 PartialEq,
362 Eq,
363 Hash,
364 PartialOrd,
365 Ord,
366 ::prost::Enumeration
367 )]
368 #[repr(i32)]
369 pub enum FileFormat {
370 Unspecified = 0,
371 Parquet = 1,
372 }
373 impl FileFormat {
374 pub fn as_str_name(&self) -> &'static str {
379 match self {
380 Self::Unspecified => "FILE_FORMAT_UNSPECIFIED",
381 Self::Parquet => "PARQUET",
382 }
383 }
384 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
386 match value {
387 "FILE_FORMAT_UNSPECIFIED" => Some(Self::Unspecified),
388 "PARQUET" => Some(Self::Parquet),
389 _ => None,
390 }
391 }
392 }
393}
394#[derive(prost_helpers::AnyPB)]
395#[derive(Clone, PartialEq, ::prost::Message)]
396pub struct AzblobFileScanNode {
397 #[prost(message, repeated, tag = "1")]
398 pub columns: ::prost::alloc::vec::Vec<super::plan_common::ColumnDesc>,
399 #[prost(enumeration = "azblob_file_scan_node::FileFormat", tag = "2")]
400 pub file_format: i32,
401 #[prost(string, tag = "3")]
402 pub account_name: ::prost::alloc::string::String,
403 #[prost(string, tag = "4")]
404 pub account_key: ::prost::alloc::string::String,
405 #[prost(string, tag = "5")]
406 pub endpoint: ::prost::alloc::string::String,
407 #[prost(string, repeated, tag = "6")]
408 pub file_location: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
409}
410pub mod azblob_file_scan_node {
412 #[derive(prost_helpers::AnyPB)]
413 #[derive(
414 Clone,
415 Copy,
416 Debug,
417 PartialEq,
418 Eq,
419 Hash,
420 PartialOrd,
421 Ord,
422 ::prost::Enumeration
423 )]
424 #[repr(i32)]
425 pub enum FileFormat {
426 Unspecified = 0,
427 Parquet = 1,
428 }
429 impl FileFormat {
430 pub fn as_str_name(&self) -> &'static str {
435 match self {
436 Self::Unspecified => "FILE_FORMAT_UNSPECIFIED",
437 Self::Parquet => "PARQUET",
438 }
439 }
440 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
442 match value {
443 "FILE_FORMAT_UNSPECIFIED" => Some(Self::Unspecified),
444 "PARQUET" => Some(Self::Parquet),
445 _ => None,
446 }
447 }
448 }
449}
450#[derive(prost_helpers::AnyPB)]
452#[derive(Clone, PartialEq, ::prost::Message)]
453pub struct PostgresQueryNode {
454 #[prost(message, repeated, tag = "1")]
455 pub columns: ::prost::alloc::vec::Vec<super::plan_common::ColumnDesc>,
456 #[prost(string, tag = "2")]
457 pub hostname: ::prost::alloc::string::String,
458 #[prost(string, tag = "3")]
459 pub port: ::prost::alloc::string::String,
460 #[prost(string, tag = "4")]
461 pub username: ::prost::alloc::string::String,
462 #[prost(string, tag = "5")]
463 pub password: ::prost::alloc::string::String,
464 #[prost(string, tag = "6")]
465 pub database: ::prost::alloc::string::String,
466 #[prost(string, tag = "7")]
467 pub query: ::prost::alloc::string::String,
468 #[prost(string, tag = "8")]
469 pub ssl_mode: ::prost::alloc::string::String,
470 #[prost(string, tag = "9")]
471 pub ssl_root_cert: ::prost::alloc::string::String,
472}
473#[derive(prost_helpers::AnyPB)]
475#[derive(Clone, PartialEq, ::prost::Message)]
476pub struct MySqlQueryNode {
477 #[prost(message, repeated, tag = "1")]
478 pub columns: ::prost::alloc::vec::Vec<super::plan_common::ColumnDesc>,
479 #[prost(string, tag = "2")]
480 pub hostname: ::prost::alloc::string::String,
481 #[prost(string, tag = "3")]
482 pub port: ::prost::alloc::string::String,
483 #[prost(string, tag = "4")]
484 pub username: ::prost::alloc::string::String,
485 #[prost(string, tag = "5")]
486 pub password: ::prost::alloc::string::String,
487 #[prost(string, tag = "6")]
488 pub database: ::prost::alloc::string::String,
489 #[prost(string, tag = "7")]
490 pub query: ::prost::alloc::string::String,
491}
492#[derive(prost_helpers::AnyPB)]
494#[derive(Clone, PartialEq, ::prost::Message)]
495pub struct MssqlQueryNode {
496 #[prost(message, repeated, tag = "1")]
497 pub columns: ::prost::alloc::vec::Vec<super::plan_common::ColumnDesc>,
498 #[prost(string, tag = "2")]
499 pub hostname: ::prost::alloc::string::String,
500 #[prost(string, tag = "3")]
501 pub port: ::prost::alloc::string::String,
502 #[prost(string, tag = "4")]
503 pub username: ::prost::alloc::string::String,
504 #[prost(string, tag = "5")]
505 pub password: ::prost::alloc::string::String,
506 #[prost(string, tag = "6")]
507 pub database: ::prost::alloc::string::String,
508 #[prost(string, tag = "7")]
509 pub query: ::prost::alloc::string::String,
510 #[prost(bool, tag = "8")]
513 pub encrypt: bool,
514 #[prost(bool, tag = "9")]
515 pub trust_cert: bool,
516}
517#[derive(prost_helpers::AnyPB)]
518#[derive(Clone, PartialEq, ::prost::Message)]
519pub struct ProjectNode {
520 #[prost(message, repeated, tag = "1")]
521 pub select_list: ::prost::alloc::vec::Vec<super::expr::ExprNode>,
522}
523#[derive(prost_helpers::AnyPB)]
524#[derive(Clone, PartialEq, ::prost::Message)]
525pub struct FilterNode {
526 #[prost(message, optional, tag = "1")]
527 pub search_condition: ::core::option::Option<super::expr::ExprNode>,
528}
529#[derive(prost_helpers::AnyPB)]
530#[derive(Clone, PartialEq, ::prost::Message)]
531pub struct LogRowSeqScanNode {
532 #[prost(message, optional, tag = "1")]
533 pub table_desc: ::core::option::Option<super::plan_common::StorageTableDesc>,
534 #[prost(int32, repeated, tag = "2")]
536 pub column_ids: ::prost::alloc::vec::Vec<i32>,
537 #[prost(message, optional, tag = "3")]
541 pub vnode_bitmap: ::core::option::Option<super::common::Buffer>,
542 #[prost(message, optional, tag = "4")]
543 pub old_epoch: ::core::option::Option<super::common::BatchQueryEpoch>,
544 #[prost(message, optional, tag = "5")]
545 pub new_epoch: ::core::option::Option<super::common::BatchQueryEpoch>,
546 #[prost(bool, tag = "6")]
547 pub ordered: bool,
548 #[prost(message, optional, tag = "7")]
549 pub scan_range: ::core::option::Option<ScanRange>,
550}
551#[derive(prost_helpers::AnyPB)]
552#[derive(Clone, PartialEq, ::prost::Message)]
553pub struct InsertNode {
554 #[prost(uint32, tag = "1", wrapper = "crate::id::TableId")]
556 pub table_id: crate::id::TableId,
557 #[prost(uint64, tag = "5")]
559 pub table_version_id: u64,
560 #[prost(uint32, repeated, tag = "2")]
561 pub column_indices: ::prost::alloc::vec::Vec<u32>,
562 #[prost(message, optional, tag = "6")]
563 pub default_columns: ::core::option::Option<super::plan_common::DefaultColumns>,
564 #[prost(uint32, optional, tag = "3")]
568 pub row_id_index: ::core::option::Option<u32>,
569 #[prost(bool, tag = "4")]
570 pub returning: bool,
571 #[prost(uint32, tag = "7")]
573 pub session_id: u32,
574 #[prost(bool, tag = "8")]
576 pub wait_for_persistence: bool,
577}
578#[derive(prost_helpers::AnyPB)]
579#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
580pub struct DeleteNode {
581 #[prost(uint32, tag = "1", wrapper = "crate::id::TableId")]
583 pub table_id: crate::id::TableId,
584 #[prost(uint64, tag = "3")]
586 pub table_version_id: u64,
587 #[prost(uint32, repeated, tag = "5")]
589 pub pk_indices: ::prost::alloc::vec::Vec<u32>,
590 #[prost(bool, tag = "2")]
591 pub returning: bool,
592 #[prost(bool, tag = "6")]
594 pub upsert: bool,
595 #[prost(uint32, tag = "4")]
597 pub session_id: u32,
598 #[prost(bool, tag = "7")]
600 pub wait_for_persistence: bool,
601}
602#[derive(prost_helpers::AnyPB)]
603#[derive(Clone, PartialEq, ::prost::Message)]
604pub struct UpdateNode {
605 #[prost(uint32, tag = "1", wrapper = "crate::id::TableId")]
607 pub table_id: crate::id::TableId,
608 #[prost(uint64, tag = "2")]
610 pub table_version_id: u64,
611 #[prost(message, repeated, tag = "3")]
613 pub old_exprs: ::prost::alloc::vec::Vec<super::expr::ExprNode>,
614 #[prost(message, repeated, tag = "4")]
616 pub new_exprs: ::prost::alloc::vec::Vec<super::expr::ExprNode>,
617 #[prost(bool, tag = "5")]
618 pub returning: bool,
619 #[prost(bool, tag = "7")]
621 pub upsert: bool,
622 #[prost(uint32, tag = "6")]
624 pub session_id: u32,
625 #[prost(bool, tag = "8")]
627 pub wait_for_persistence: bool,
628}
629#[derive(prost_helpers::AnyPB)]
630#[derive(Clone, PartialEq, ::prost::Message)]
631pub struct ValuesNode {
632 #[prost(message, repeated, tag = "1")]
633 pub tuples: ::prost::alloc::vec::Vec<values_node::ExprTuple>,
634 #[prost(message, repeated, tag = "2")]
635 pub fields: ::prost::alloc::vec::Vec<super::plan_common::Field>,
636}
637pub mod values_node {
639 #[derive(prost_helpers::AnyPB)]
640 #[derive(Clone, PartialEq, ::prost::Message)]
641 pub struct ExprTuple {
642 #[prost(message, repeated, tag = "1")]
643 pub cells: ::prost::alloc::vec::Vec<super::super::expr::ExprNode>,
644 }
645}
646#[derive(prost_helpers::AnyPB)]
647#[derive(Clone, PartialEq, ::prost::Message)]
648pub struct SortNode {
649 #[prost(message, repeated, tag = "1")]
650 pub column_orders: ::prost::alloc::vec::Vec<super::common::ColumnOrder>,
651}
652#[derive(prost_helpers::AnyPB)]
653#[derive(Clone, PartialEq, ::prost::Message)]
654pub struct TopNNode {
655 #[prost(message, repeated, tag = "1")]
656 pub column_orders: ::prost::alloc::vec::Vec<super::common::ColumnOrder>,
657 #[prost(uint64, tag = "2")]
658 pub limit: u64,
659 #[prost(uint64, tag = "3")]
660 pub offset: u64,
661 #[prost(bool, tag = "4")]
662 pub with_ties: bool,
663}
664#[derive(prost_helpers::AnyPB)]
665#[derive(Clone, PartialEq, ::prost::Message)]
666pub struct GroupTopNNode {
667 #[prost(message, repeated, tag = "1")]
668 pub column_orders: ::prost::alloc::vec::Vec<super::common::ColumnOrder>,
669 #[prost(uint64, tag = "2")]
670 pub limit: u64,
671 #[prost(uint64, tag = "3")]
672 pub offset: u64,
673 #[prost(uint32, repeated, tag = "4")]
674 pub group_key: ::prost::alloc::vec::Vec<u32>,
675 #[prost(bool, tag = "5")]
676 pub with_ties: bool,
677}
678#[derive(prost_helpers::AnyPB)]
679#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
680pub struct LimitNode {
681 #[prost(uint64, tag = "1")]
682 pub limit: u64,
683 #[prost(uint64, tag = "2")]
684 pub offset: u64,
685}
686#[derive(prost_helpers::AnyPB)]
687#[derive(Clone, PartialEq, ::prost::Message)]
688pub struct NestedLoopJoinNode {
689 #[prost(enumeration = "super::plan_common::JoinType", tag = "1")]
690 pub join_type: i32,
691 #[prost(message, optional, tag = "2")]
692 pub join_cond: ::core::option::Option<super::expr::ExprNode>,
693 #[prost(uint32, repeated, tag = "3")]
694 pub output_indices: ::prost::alloc::vec::Vec<u32>,
695}
696#[derive(prost_helpers::AnyPB)]
697#[derive(Clone, PartialEq, ::prost::Message)]
698pub struct HashAggNode {
699 #[prost(uint32, repeated, tag = "1")]
700 pub group_key: ::prost::alloc::vec::Vec<u32>,
701 #[prost(message, repeated, tag = "2")]
702 pub agg_calls: ::prost::alloc::vec::Vec<super::expr::AggCall>,
703}
704#[derive(prost_helpers::AnyPB)]
705#[derive(Clone, PartialEq, ::prost::Message)]
706pub struct ExpandNode {
707 #[prost(message, repeated, tag = "1")]
708 pub column_subsets: ::prost::alloc::vec::Vec<expand_node::Subset>,
709}
710pub mod expand_node {
712 #[derive(prost_helpers::AnyPB)]
713 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
714 pub struct Subset {
715 #[prost(uint32, repeated, tag = "1")]
716 pub column_indices: ::prost::alloc::vec::Vec<u32>,
717 }
718}
719#[derive(prost_helpers::AnyPB)]
720#[derive(Clone, PartialEq, ::prost::Message)]
721pub struct ProjectSetNode {
722 #[prost(message, repeated, tag = "1")]
723 pub select_list: ::prost::alloc::vec::Vec<super::expr::ProjectSetSelectItem>,
724}
725#[derive(prost_helpers::AnyPB)]
726#[derive(Clone, PartialEq, ::prost::Message)]
727pub struct SortAggNode {
728 #[prost(message, repeated, tag = "1")]
729 pub group_key: ::prost::alloc::vec::Vec<super::expr::ExprNode>,
730 #[prost(message, repeated, tag = "2")]
731 pub agg_calls: ::prost::alloc::vec::Vec<super::expr::AggCall>,
732}
733#[derive(prost_helpers::AnyPB)]
734#[derive(Clone, PartialEq, ::prost::Message)]
735pub struct HashJoinNode {
736 #[prost(enumeration = "super::plan_common::JoinType", tag = "1")]
737 pub join_type: i32,
738 #[prost(int32, repeated, tag = "2")]
739 pub left_key: ::prost::alloc::vec::Vec<i32>,
740 #[prost(int32, repeated, tag = "3")]
741 pub right_key: ::prost::alloc::vec::Vec<i32>,
742 #[prost(message, optional, tag = "4")]
743 pub condition: ::core::option::Option<super::expr::ExprNode>,
744 #[prost(uint32, repeated, tag = "5")]
745 pub output_indices: ::prost::alloc::vec::Vec<u32>,
746 #[prost(bool, repeated, tag = "6")]
749 pub null_safe: ::prost::alloc::vec::Vec<bool>,
750 #[prost(message, optional, tag = "7")]
751 pub asof_desc: ::core::option::Option<super::plan_common::AsOfJoinDesc>,
752}
753#[derive(prost_helpers::AnyPB)]
754#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
755pub struct SortMergeJoinNode {
756 #[prost(enumeration = "super::plan_common::JoinType", tag = "1")]
757 pub join_type: i32,
758 #[prost(int32, repeated, tag = "2")]
759 pub left_key: ::prost::alloc::vec::Vec<i32>,
760 #[prost(int32, repeated, tag = "3")]
761 pub right_key: ::prost::alloc::vec::Vec<i32>,
762 #[prost(enumeration = "super::common::Direction", tag = "4")]
763 pub direction: i32,
764 #[prost(uint32, repeated, tag = "5")]
765 pub output_indices: ::prost::alloc::vec::Vec<u32>,
766}
767#[derive(prost_helpers::AnyPB)]
768#[derive(Clone, PartialEq, ::prost::Message)]
769pub struct HopWindowNode {
770 #[prost(uint32, tag = "1")]
771 pub time_col: u32,
772 #[prost(message, optional, tag = "2")]
773 pub window_slide: ::core::option::Option<super::data::Interval>,
774 #[prost(message, optional, tag = "3")]
775 pub window_size: ::core::option::Option<super::data::Interval>,
776 #[prost(uint32, repeated, tag = "4")]
777 pub output_indices: ::prost::alloc::vec::Vec<u32>,
778 #[prost(message, repeated, tag = "5")]
779 pub window_start_exprs: ::prost::alloc::vec::Vec<super::expr::ExprNode>,
780 #[prost(message, repeated, tag = "6")]
781 pub window_end_exprs: ::prost::alloc::vec::Vec<super::expr::ExprNode>,
782}
783#[derive(prost_helpers::AnyPB)]
784#[derive(Clone, PartialEq, ::prost::Message)]
785pub struct TableFunctionNode {
786 #[prost(message, optional, tag = "1")]
787 pub table_function: ::core::option::Option<super::expr::TableFunction>,
788}
789#[derive(prost_helpers::AnyPB)]
791#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
792pub struct TaskId {
793 #[prost(string, tag = "1")]
794 pub query_id: ::prost::alloc::string::String,
795 #[prost(uint32, tag = "2")]
796 pub stage_id: u32,
797 #[prost(uint64, tag = "3")]
798 pub task_id: u64,
799}
800#[derive(prost_helpers::AnyPB)]
803#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
804pub struct TaskOutputId {
805 #[prost(message, optional, tag = "1")]
806 pub task_id: ::core::option::Option<TaskId>,
807 #[prost(uint64, tag = "2")]
809 pub output_id: u64,
810}
811#[derive(prost_helpers::AnyPB)]
812#[derive(Clone, PartialEq, ::prost::Message)]
813pub struct LocalExecutePlan {
814 #[prost(message, optional, tag = "1")]
815 pub plan: ::core::option::Option<PlanFragment>,
816 #[prost(map = "string, string", tag = "3")]
817 pub tracing_context: ::std::collections::HashMap<
818 ::prost::alloc::string::String,
819 ::prost::alloc::string::String,
820 >,
821}
822#[derive(prost_helpers::AnyPB)]
824#[derive(Clone, PartialEq, ::prost::Message)]
825pub struct ExchangeSource {
826 #[prost(message, optional, tag = "1")]
827 pub task_output_id: ::core::option::Option<TaskOutputId>,
828 #[prost(message, optional, tag = "2")]
829 pub host: ::core::option::Option<super::common::HostAddress>,
830 #[prost(oneof = "exchange_source::LocalExecutePlan", tags = "3")]
831 pub local_execute_plan: ::core::option::Option<exchange_source::LocalExecutePlan>,
832}
833pub mod exchange_source {
835 #[derive(prost_helpers::AnyPB)]
836 #[derive(Clone, PartialEq, ::prost::Oneof)]
837 pub enum LocalExecutePlan {
838 #[prost(message, tag = "3")]
839 Plan(super::LocalExecutePlan),
840 }
841}
842#[derive(prost_helpers::AnyPB)]
843#[derive(Clone, PartialEq, ::prost::Message)]
844pub struct ExchangeNode {
845 #[prost(message, repeated, tag = "1")]
846 pub sources: ::prost::alloc::vec::Vec<ExchangeSource>,
847 #[prost(bool, tag = "2")]
849 pub sequential: bool,
850 #[prost(message, repeated, tag = "3")]
851 pub input_schema: ::prost::alloc::vec::Vec<super::plan_common::Field>,
852}
853#[derive(prost_helpers::AnyPB)]
854#[derive(Clone, PartialEq, ::prost::Message)]
855pub struct MergeSortExchangeNode {
856 #[prost(message, optional, tag = "1")]
857 pub exchange: ::core::option::Option<ExchangeNode>,
858 #[prost(message, repeated, tag = "2")]
859 pub column_orders: ::prost::alloc::vec::Vec<super::common::ColumnOrder>,
860}
861#[derive(prost_helpers::AnyPB)]
862#[derive(Clone, PartialEq, ::prost::Message)]
863pub struct LocalLookupJoinNode {
864 #[prost(enumeration = "super::plan_common::JoinType", tag = "1")]
865 pub join_type: i32,
866 #[prost(message, optional, tag = "2")]
867 pub condition: ::core::option::Option<super::expr::ExprNode>,
868 #[prost(uint32, repeated, tag = "3")]
869 pub outer_side_key: ::prost::alloc::vec::Vec<u32>,
870 #[prost(uint32, repeated, tag = "4")]
871 pub inner_side_key: ::prost::alloc::vec::Vec<u32>,
872 #[prost(uint32, tag = "5")]
873 pub lookup_prefix_len: u32,
874 #[prost(message, optional, tag = "6")]
875 pub inner_side_table_desc: ::core::option::Option<
876 super::plan_common::StorageTableDesc,
877 >,
878 #[prost(uint64, repeated, tag = "7")]
879 pub inner_side_vnode_mapping: ::prost::alloc::vec::Vec<u64>,
880 #[prost(int32, repeated, tag = "8")]
881 pub inner_side_column_ids: ::prost::alloc::vec::Vec<i32>,
882 #[prost(uint32, repeated, tag = "9")]
883 pub output_indices: ::prost::alloc::vec::Vec<u32>,
884 #[prost(message, repeated, tag = "10")]
885 pub worker_nodes: ::prost::alloc::vec::Vec<super::common::WorkerNode>,
886 #[prost(bool, repeated, tag = "11")]
889 pub null_safe: ::prost::alloc::vec::Vec<bool>,
890 #[prost(message, optional, tag = "12")]
891 pub query_epoch: ::core::option::Option<super::common::BatchQueryEpoch>,
892 #[prost(message, optional, tag = "13")]
893 pub asof_desc: ::core::option::Option<super::plan_common::AsOfJoinDesc>,
894}
895#[derive(prost_helpers::AnyPB)]
898#[derive(Clone, PartialEq, ::prost::Message)]
899pub struct DistributedLookupJoinNode {
900 #[prost(enumeration = "super::plan_common::JoinType", tag = "1")]
901 pub join_type: i32,
902 #[prost(message, optional, tag = "2")]
903 pub condition: ::core::option::Option<super::expr::ExprNode>,
904 #[prost(uint32, repeated, tag = "3")]
905 pub outer_side_key: ::prost::alloc::vec::Vec<u32>,
906 #[prost(uint32, repeated, tag = "4")]
907 pub inner_side_key: ::prost::alloc::vec::Vec<u32>,
908 #[prost(uint32, tag = "5")]
909 pub lookup_prefix_len: u32,
910 #[prost(message, optional, tag = "6")]
911 pub inner_side_table_desc: ::core::option::Option<
912 super::plan_common::StorageTableDesc,
913 >,
914 #[prost(int32, repeated, tag = "7")]
915 pub inner_side_column_ids: ::prost::alloc::vec::Vec<i32>,
916 #[prost(uint32, repeated, tag = "8")]
917 pub output_indices: ::prost::alloc::vec::Vec<u32>,
918 #[prost(bool, repeated, tag = "9")]
921 pub null_safe: ::prost::alloc::vec::Vec<bool>,
922 #[prost(message, optional, tag = "10")]
923 pub query_epoch: ::core::option::Option<super::common::BatchQueryEpoch>,
924 #[prost(message, optional, tag = "11")]
925 pub asof_desc: ::core::option::Option<super::plan_common::AsOfJoinDesc>,
926}
927#[derive(prost_helpers::AnyPB)]
928#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
929pub struct UnionNode {}
930#[derive(prost_helpers::AnyPB)]
931#[derive(Clone, PartialEq, ::prost::Message)]
932pub struct SortOverWindowNode {
933 #[prost(message, repeated, tag = "1")]
934 pub calls: ::prost::alloc::vec::Vec<super::expr::WindowFunction>,
935 #[prost(uint32, repeated, tag = "2")]
936 pub partition_by: ::prost::alloc::vec::Vec<u32>,
937 #[prost(message, repeated, tag = "3")]
938 pub order_by: ::prost::alloc::vec::Vec<super::common::ColumnOrder>,
939}
940#[derive(prost_helpers::AnyPB)]
941#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
942pub struct MaxOneRowNode {}
943#[derive(prost_helpers::AnyPB)]
944#[derive(Clone, PartialEq, ::prost::Message)]
945pub struct VectorIndexNearestNode {
946 #[prost(message, optional, tag = "1")]
947 pub reader_desc: ::core::option::Option<super::plan_common::VectorIndexReaderDesc>,
948 #[prost(uint32, tag = "2")]
949 pub vector_column_idx: u32,
950 #[prost(message, optional, tag = "8")]
951 pub query_epoch: ::core::option::Option<super::common::BatchQueryEpoch>,
952}
953#[derive(prost_helpers::AnyPB)]
954#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
955pub struct GetChannelDeltaStatsNode {
956 #[prost(uint64, optional, tag = "1")]
958 pub at_time: ::core::option::Option<u64>,
959 #[prost(uint64, optional, tag = "2")]
961 pub time_offset: ::core::option::Option<u64>,
962}
963#[derive(prost_helpers::AnyPB)]
964#[derive(Clone, PartialEq, ::prost::Message)]
965pub struct PlanNode {
966 #[prost(message, repeated, tag = "1")]
967 pub children: ::prost::alloc::vec::Vec<PlanNode>,
968 #[prost(string, tag = "24")]
969 pub identity: ::prost::alloc::string::String,
970 #[prost(
971 oneof = "plan_node::NodeBody",
972 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, 46, 47, 100, 101"
973 )]
974 pub node_body: ::core::option::Option<plan_node::NodeBody>,
975}
976pub mod plan_node {
978 #[derive(prost_helpers::AnyPB)]
979 #[derive(::enum_as_inner::EnumAsInner, ::strum::Display, ::strum::EnumDiscriminants)]
980 #[strum_discriminants(derive(::strum::Display, Hash))]
981 #[derive(Clone, PartialEq, ::prost::Oneof)]
982 pub enum NodeBody {
983 #[prost(message, tag = "2")]
984 Insert(super::InsertNode),
985 #[prost(message, tag = "3")]
986 Delete(super::DeleteNode),
987 #[prost(message, tag = "4")]
988 Update(super::UpdateNode),
989 #[prost(message, tag = "5")]
990 Project(super::ProjectNode),
991 #[prost(message, tag = "7")]
992 HashAgg(super::HashAggNode),
993 #[prost(message, tag = "8")]
994 Filter(super::FilterNode),
995 #[prost(message, tag = "9")]
996 Exchange(super::ExchangeNode),
997 #[prost(message, tag = "10")]
998 Sort(super::SortNode),
999 #[prost(message, tag = "11")]
1000 NestedLoopJoin(super::NestedLoopJoinNode),
1001 #[prost(message, tag = "14")]
1002 TopN(super::TopNNode),
1003 #[prost(message, tag = "15")]
1004 SortAgg(super::SortAggNode),
1005 #[prost(message, tag = "16")]
1006 RowSeqScan(super::RowSeqScanNode),
1007 #[prost(message, tag = "17")]
1008 Limit(super::LimitNode),
1009 #[prost(message, tag = "18")]
1010 Values(super::ValuesNode),
1011 #[prost(message, tag = "19")]
1012 HashJoin(super::HashJoinNode),
1013 #[prost(message, tag = "21")]
1014 MergeSortExchange(super::MergeSortExchangeNode),
1015 #[prost(message, tag = "25")]
1016 HopWindow(super::HopWindowNode),
1017 #[prost(message, tag = "26")]
1018 TableFunction(super::TableFunctionNode),
1019 #[prost(message, tag = "27")]
1020 SysRowSeqScan(super::SysRowSeqScanNode),
1021 #[prost(message, tag = "28")]
1022 Expand(super::ExpandNode),
1023 #[prost(message, tag = "29")]
1024 LocalLookupJoin(super::LocalLookupJoinNode),
1025 #[prost(message, tag = "30")]
1026 ProjectSet(super::ProjectSetNode),
1027 #[prost(message, tag = "31")]
1028 Union(super::UnionNode),
1029 #[prost(message, tag = "32")]
1030 GroupTopN(super::GroupTopNNode),
1031 #[prost(message, tag = "33")]
1032 DistributedLookupJoin(super::DistributedLookupJoinNode),
1033 #[prost(message, tag = "34")]
1034 Source(super::SourceNode),
1035 #[prost(message, tag = "35")]
1036 SortOverWindow(super::SortOverWindowNode),
1037 #[prost(message, tag = "36")]
1038 MaxOneRow(super::MaxOneRowNode),
1039 #[prost(message, tag = "37")]
1040 LogRowSeqScan(super::LogRowSeqScanNode),
1041 #[prost(message, tag = "38")]
1042 FileScan(super::FileScanNode),
1043 #[prost(message, tag = "39")]
1044 IcebergScan(super::IcebergScanNode),
1045 #[prost(message, tag = "40")]
1046 PostgresQuery(super::PostgresQueryNode),
1047 #[prost(message, tag = "41")]
1048 MysqlQuery(super::MySqlQueryNode),
1049 #[prost(message, tag = "42")]
1050 GcsFileScan(super::GcsFileScanNode),
1051 #[prost(message, tag = "43")]
1052 AzblobFileScan(super::AzblobFileScanNode),
1053 #[prost(message, tag = "44")]
1054 VectorIndexNearest(super::VectorIndexNearestNode),
1055 #[prost(message, tag = "45")]
1056 GetChannelDeltaStats(super::GetChannelDeltaStatsNode),
1057 #[prost(message, tag = "46")]
1058 IcebergMetadataScan(super::IcebergMetadataScanNode),
1059 #[prost(message, tag = "47")]
1060 MssqlQuery(super::MssqlQueryNode),
1061 #[prost(bool, tag = "100")]
1063 BlockExecutor(bool),
1064 #[prost(bool, tag = "101")]
1065 BusyLoopExecutor(bool),
1066 }
1067}
1068#[derive(prost_helpers::AnyPB)]
1073#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1074pub struct ExchangeInfo {
1075 #[prost(enumeration = "exchange_info::DistributionMode", tag = "1")]
1076 pub mode: i32,
1077 #[prost(oneof = "exchange_info::Distribution", tags = "2, 3, 4")]
1078 pub distribution: ::core::option::Option<exchange_info::Distribution>,
1079}
1080pub mod exchange_info {
1082 #[derive(prost_helpers::AnyPB)]
1083 #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1084 pub struct BroadcastInfo {
1085 #[prost(uint32, tag = "1")]
1086 pub count: u32,
1087 }
1088 #[derive(prost_helpers::AnyPB)]
1089 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1090 pub struct HashInfo {
1091 #[prost(uint32, tag = "1")]
1092 pub output_count: u32,
1093 #[prost(uint32, repeated, tag = "3")]
1094 pub key: ::prost::alloc::vec::Vec<u32>,
1095 }
1096 #[derive(prost_helpers::AnyPB)]
1097 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1098 pub struct ConsistentHashInfo {
1099 #[prost(uint32, repeated, tag = "1")]
1101 pub vmap: ::prost::alloc::vec::Vec<u32>,
1102 #[prost(uint32, repeated, tag = "2")]
1103 pub key: ::prost::alloc::vec::Vec<u32>,
1104 }
1105 #[derive(prost_helpers::AnyPB)]
1106 #[derive(
1107 Clone,
1108 Copy,
1109 Debug,
1110 PartialEq,
1111 Eq,
1112 Hash,
1113 PartialOrd,
1114 Ord,
1115 ::prost::Enumeration
1116 )]
1117 #[repr(i32)]
1118 pub enum DistributionMode {
1119 Unspecified = 0,
1121 Single = 1,
1122 Broadcast = 2,
1123 Hash = 3,
1124 ConsistentHash = 4,
1125 }
1126 impl DistributionMode {
1127 pub fn as_str_name(&self) -> &'static str {
1132 match self {
1133 Self::Unspecified => "UNSPECIFIED",
1134 Self::Single => "SINGLE",
1135 Self::Broadcast => "BROADCAST",
1136 Self::Hash => "HASH",
1137 Self::ConsistentHash => "CONSISTENT_HASH",
1138 }
1139 }
1140 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1142 match value {
1143 "UNSPECIFIED" => Some(Self::Unspecified),
1144 "SINGLE" => Some(Self::Single),
1145 "BROADCAST" => Some(Self::Broadcast),
1146 "HASH" => Some(Self::Hash),
1147 "CONSISTENT_HASH" => Some(Self::ConsistentHash),
1148 _ => None,
1149 }
1150 }
1151 }
1152 #[derive(prost_helpers::AnyPB)]
1153 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
1154 pub enum Distribution {
1155 #[prost(message, tag = "2")]
1156 BroadcastInfo(BroadcastInfo),
1157 #[prost(message, tag = "3")]
1158 HashInfo(HashInfo),
1159 #[prost(message, tag = "4")]
1160 ConsistentHashInfo(ConsistentHashInfo),
1161 }
1162}
1163#[derive(prost_helpers::AnyPB)]
1164#[derive(Clone, PartialEq, ::prost::Message)]
1165pub struct PlanFragment {
1166 #[prost(message, optional, tag = "1")]
1167 pub root: ::core::option::Option<PlanNode>,
1168 #[prost(message, optional, tag = "2")]
1169 pub exchange_info: ::core::option::Option<ExchangeInfo>,
1170}