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