1#[derive(Clone, PartialEq, ::prost::Message)]
5pub struct LogicalPlanNode {
6 #[prost(
7 oneof = "logical_plan_node::LogicalPlanType",
8 tags = "1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34"
9 )]
10 pub logical_plan_type: ::core::option::Option<logical_plan_node::LogicalPlanType>,
11}
12pub mod logical_plan_node {
14 #[derive(Clone, PartialEq, ::prost::Oneof)]
15 pub enum LogicalPlanType {
16 #[prost(message, tag = "1")]
17 ListingScan(super::ListingTableScanNode),
18 #[prost(message, tag = "3")]
19 Projection(::prost::alloc::boxed::Box<super::ProjectionNode>),
20 #[prost(message, tag = "4")]
21 Selection(::prost::alloc::boxed::Box<super::SelectionNode>),
22 #[prost(message, tag = "5")]
23 Limit(::prost::alloc::boxed::Box<super::LimitNode>),
24 #[prost(message, tag = "6")]
25 Aggregate(::prost::alloc::boxed::Box<super::AggregateNode>),
26 #[prost(message, tag = "7")]
27 Join(::prost::alloc::boxed::Box<super::JoinNode>),
28 #[prost(message, tag = "8")]
29 Sort(::prost::alloc::boxed::Box<super::SortNode>),
30 #[prost(message, tag = "9")]
31 Repartition(::prost::alloc::boxed::Box<super::RepartitionNode>),
32 #[prost(message, tag = "10")]
33 EmptyRelation(super::EmptyRelationNode),
34 #[prost(message, tag = "11")]
35 CreateExternalTable(super::CreateExternalTableNode),
36 #[prost(message, tag = "12")]
37 Explain(::prost::alloc::boxed::Box<super::ExplainNode>),
38 #[prost(message, tag = "13")]
39 Window(::prost::alloc::boxed::Box<super::WindowNode>),
40 #[prost(message, tag = "14")]
41 Analyze(::prost::alloc::boxed::Box<super::AnalyzeNode>),
42 #[prost(message, tag = "15")]
43 CrossJoin(::prost::alloc::boxed::Box<super::CrossJoinNode>),
44 #[prost(message, tag = "16")]
45 Values(super::ValuesNode),
46 #[prost(message, tag = "17")]
47 Extension(super::LogicalExtensionNode),
48 #[prost(message, tag = "18")]
49 CreateCatalogSchema(super::CreateCatalogSchemaNode),
50 #[prost(message, tag = "19")]
51 Union(super::UnionNode),
52 #[prost(message, tag = "20")]
53 CreateCatalog(super::CreateCatalogNode),
54 #[prost(message, tag = "21")]
55 SubqueryAlias(::prost::alloc::boxed::Box<super::SubqueryAliasNode>),
56 #[prost(message, tag = "22")]
57 CreateView(::prost::alloc::boxed::Box<super::CreateViewNode>),
58 #[prost(message, tag = "23")]
59 Distinct(::prost::alloc::boxed::Box<super::DistinctNode>),
60 #[prost(message, tag = "24")]
61 ViewScan(::prost::alloc::boxed::Box<super::ViewTableScanNode>),
62 #[prost(message, tag = "25")]
63 CustomScan(super::CustomTableScanNode),
64 #[prost(message, tag = "26")]
65 Prepare(::prost::alloc::boxed::Box<super::PrepareNode>),
66 #[prost(message, tag = "27")]
67 DropView(super::DropViewNode),
68 #[prost(message, tag = "28")]
69 DistinctOn(::prost::alloc::boxed::Box<super::DistinctOnNode>),
70 #[prost(message, tag = "29")]
71 CopyTo(::prost::alloc::boxed::Box<super::CopyToNode>),
72 #[prost(message, tag = "30")]
73 Unnest(::prost::alloc::boxed::Box<super::UnnestNode>),
74 #[prost(message, tag = "31")]
75 RecursiveQuery(::prost::alloc::boxed::Box<super::RecursiveQueryNode>),
76 #[prost(message, tag = "32")]
77 CteWorkTableScan(super::CteWorkTableScanNode),
78 #[prost(message, tag = "33")]
79 Dml(::prost::alloc::boxed::Box<super::DmlNode>),
80 #[prost(message, tag = "34")]
81 EmptyTableScan(super::EmptyTableScanNode),
82 }
83}
84#[derive(Clone, PartialEq, ::prost::Message)]
85pub struct LogicalExtensionNode {
86 #[prost(bytes = "vec", tag = "1")]
87 pub node: ::prost::alloc::vec::Vec<u8>,
88 #[prost(message, repeated, tag = "2")]
89 pub inputs: ::prost::alloc::vec::Vec<LogicalPlanNode>,
90}
91#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
92pub struct ProjectionColumns {
93 #[prost(string, repeated, tag = "1")]
94 pub columns: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
95}
96#[derive(Clone, PartialEq, ::prost::Message)]
97pub struct LogicalExprNodeCollection {
98 #[prost(message, repeated, tag = "1")]
99 pub logical_expr_nodes: ::prost::alloc::vec::Vec<LogicalExprNode>,
100}
101#[derive(Clone, PartialEq, ::prost::Message)]
102pub struct SortExprNodeCollection {
103 #[prost(message, repeated, tag = "1")]
104 pub sort_expr_nodes: ::prost::alloc::vec::Vec<SortExprNode>,
105}
106#[derive(Clone, PartialEq, ::prost::Message)]
107pub struct ListingTableScanNode {
108 #[prost(message, optional, tag = "14")]
109 pub table_name: ::core::option::Option<TableReference>,
110 #[prost(string, repeated, tag = "2")]
111 pub paths: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
112 #[prost(string, tag = "3")]
113 pub file_extension: ::prost::alloc::string::String,
114 #[prost(message, optional, tag = "4")]
115 pub projection: ::core::option::Option<ProjectionColumns>,
116 #[prost(message, optional, tag = "5")]
117 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
118 #[prost(message, repeated, tag = "6")]
119 pub filters: ::prost::alloc::vec::Vec<LogicalExprNode>,
120 #[prost(message, repeated, tag = "7")]
121 pub table_partition_cols: ::prost::alloc::vec::Vec<PartitionColumn>,
122 #[prost(bool, tag = "8")]
123 pub collect_stat: bool,
124 #[prost(uint32, tag = "9")]
125 pub target_partitions: u32,
126 #[prost(message, repeated, tag = "13")]
127 pub file_sort_order: ::prost::alloc::vec::Vec<SortExprNodeCollection>,
128 #[prost(
129 oneof = "listing_table_scan_node::FileFormatType",
130 tags = "10, 11, 12, 15, 16"
131 )]
132 pub file_format_type: ::core::option::Option<
133 listing_table_scan_node::FileFormatType,
134 >,
135}
136pub mod listing_table_scan_node {
138 #[derive(Clone, PartialEq, ::prost::Oneof)]
139 pub enum FileFormatType {
140 #[prost(message, tag = "10")]
141 Csv(super::super::datafusion_common::CsvFormat),
142 #[prost(message, tag = "11")]
143 Parquet(super::super::datafusion_common::ParquetFormat),
144 #[prost(message, tag = "12")]
145 Avro(super::super::datafusion_common::AvroFormat),
146 #[prost(message, tag = "15")]
147 Json(super::super::datafusion_common::NdJsonFormat),
148 #[prost(message, tag = "16")]
149 Arrow(super::super::datafusion_common::ArrowFormat),
150 }
151}
152#[derive(Clone, PartialEq, ::prost::Message)]
153pub struct ViewTableScanNode {
154 #[prost(message, optional, tag = "6")]
155 pub table_name: ::core::option::Option<TableReference>,
156 #[prost(message, optional, boxed, tag = "2")]
157 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
158 #[prost(message, optional, tag = "3")]
159 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
160 #[prost(message, optional, tag = "4")]
161 pub projection: ::core::option::Option<ProjectionColumns>,
162 #[prost(string, tag = "5")]
163 pub definition: ::prost::alloc::string::String,
164}
165#[derive(Clone, PartialEq, ::prost::Message)]
167pub struct CustomTableScanNode {
168 #[prost(message, optional, tag = "6")]
169 pub table_name: ::core::option::Option<TableReference>,
170 #[prost(message, optional, tag = "2")]
171 pub projection: ::core::option::Option<ProjectionColumns>,
172 #[prost(message, optional, tag = "3")]
173 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
174 #[prost(message, repeated, tag = "4")]
175 pub filters: ::prost::alloc::vec::Vec<LogicalExprNode>,
176 #[prost(bytes = "vec", tag = "5")]
177 pub custom_table_data: ::prost::alloc::vec::Vec<u8>,
178}
179#[derive(Clone, PartialEq, ::prost::Message)]
180pub struct ProjectionNode {
181 #[prost(message, optional, boxed, tag = "1")]
182 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
183 #[prost(message, repeated, tag = "2")]
184 pub expr: ::prost::alloc::vec::Vec<LogicalExprNode>,
185 #[prost(oneof = "projection_node::OptionalAlias", tags = "3")]
186 pub optional_alias: ::core::option::Option<projection_node::OptionalAlias>,
187}
188pub mod projection_node {
190 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
191 pub enum OptionalAlias {
192 #[prost(string, tag = "3")]
193 Alias(::prost::alloc::string::String),
194 }
195}
196#[derive(Clone, PartialEq, ::prost::Message)]
197pub struct SelectionNode {
198 #[prost(message, optional, boxed, tag = "1")]
199 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
200 #[prost(message, optional, boxed, tag = "2")]
201 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
202}
203#[derive(Clone, PartialEq, ::prost::Message)]
204pub struct SortNode {
205 #[prost(message, optional, boxed, tag = "1")]
206 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
207 #[prost(message, repeated, tag = "2")]
208 pub expr: ::prost::alloc::vec::Vec<SortExprNode>,
209 #[prost(int64, tag = "3")]
211 pub fetch: i64,
212}
213#[derive(Clone, PartialEq, ::prost::Message)]
214pub struct RepartitionNode {
215 #[prost(message, optional, boxed, tag = "1")]
216 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
217 #[prost(oneof = "repartition_node::PartitionMethod", tags = "2, 3")]
218 pub partition_method: ::core::option::Option<repartition_node::PartitionMethod>,
219}
220pub mod repartition_node {
222 #[derive(Clone, PartialEq, ::prost::Oneof)]
223 pub enum PartitionMethod {
224 #[prost(uint64, tag = "2")]
225 RoundRobin(u64),
226 #[prost(message, tag = "3")]
227 Hash(super::HashRepartition),
228 }
229}
230#[derive(Clone, PartialEq, ::prost::Message)]
231pub struct HashRepartition {
232 #[prost(message, repeated, tag = "1")]
233 pub hash_expr: ::prost::alloc::vec::Vec<LogicalExprNode>,
234 #[prost(uint64, tag = "2")]
235 pub partition_count: u64,
236}
237#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
238pub struct EmptyRelationNode {
239 #[prost(bool, tag = "1")]
240 pub produce_one_row: bool,
241}
242#[derive(Clone, PartialEq, ::prost::Message)]
243pub struct CreateExternalTableNode {
244 #[prost(message, optional, tag = "9")]
245 pub name: ::core::option::Option<TableReference>,
246 #[prost(string, tag = "2")]
247 pub location: ::prost::alloc::string::String,
248 #[prost(string, tag = "3")]
249 pub file_type: ::prost::alloc::string::String,
250 #[prost(message, optional, tag = "4")]
251 pub schema: ::core::option::Option<super::datafusion_common::DfSchema>,
252 #[prost(string, repeated, tag = "5")]
253 pub table_partition_cols: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
254 #[prost(bool, tag = "6")]
255 pub if_not_exists: bool,
256 #[prost(bool, tag = "15")]
257 pub or_replace: bool,
258 #[prost(bool, tag = "14")]
259 pub temporary: bool,
260 #[prost(string, tag = "7")]
261 pub definition: ::prost::alloc::string::String,
262 #[prost(message, repeated, tag = "10")]
263 pub order_exprs: ::prost::alloc::vec::Vec<SortExprNodeCollection>,
264 #[prost(bool, tag = "11")]
265 pub unbounded: bool,
266 #[prost(map = "string, string", tag = "8")]
267 pub options: ::std::collections::HashMap<
268 ::prost::alloc::string::String,
269 ::prost::alloc::string::String,
270 >,
271 #[prost(message, optional, tag = "12")]
272 pub constraints: ::core::option::Option<super::datafusion_common::Constraints>,
273 #[prost(map = "string, message", tag = "13")]
274 pub column_defaults: ::std::collections::HashMap<
275 ::prost::alloc::string::String,
276 LogicalExprNode,
277 >,
278}
279#[derive(Clone, PartialEq, ::prost::Message)]
280pub struct PrepareNode {
281 #[prost(string, tag = "1")]
282 pub name: ::prost::alloc::string::String,
283 #[prost(message, repeated, tag = "2")]
286 pub data_types: ::prost::alloc::vec::Vec<super::datafusion_common::ArrowType>,
287 #[prost(message, optional, boxed, tag = "3")]
288 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
289 #[prost(message, repeated, tag = "4")]
290 pub fields: ::prost::alloc::vec::Vec<super::datafusion_common::Field>,
291}
292#[derive(Clone, PartialEq, ::prost::Message)]
293pub struct CreateCatalogSchemaNode {
294 #[prost(string, tag = "1")]
295 pub schema_name: ::prost::alloc::string::String,
296 #[prost(bool, tag = "2")]
297 pub if_not_exists: bool,
298 #[prost(message, optional, tag = "3")]
299 pub schema: ::core::option::Option<super::datafusion_common::DfSchema>,
300}
301#[derive(Clone, PartialEq, ::prost::Message)]
302pub struct CreateCatalogNode {
303 #[prost(string, tag = "1")]
304 pub catalog_name: ::prost::alloc::string::String,
305 #[prost(bool, tag = "2")]
306 pub if_not_exists: bool,
307 #[prost(message, optional, tag = "3")]
308 pub schema: ::core::option::Option<super::datafusion_common::DfSchema>,
309}
310#[derive(Clone, PartialEq, ::prost::Message)]
311pub struct DropViewNode {
312 #[prost(message, optional, tag = "1")]
313 pub name: ::core::option::Option<TableReference>,
314 #[prost(bool, tag = "2")]
315 pub if_exists: bool,
316 #[prost(message, optional, tag = "3")]
317 pub schema: ::core::option::Option<super::datafusion_common::DfSchema>,
318}
319#[derive(Clone, PartialEq, ::prost::Message)]
320pub struct CreateViewNode {
321 #[prost(message, optional, tag = "5")]
322 pub name: ::core::option::Option<TableReference>,
323 #[prost(message, optional, boxed, tag = "2")]
324 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
325 #[prost(bool, tag = "3")]
326 pub or_replace: bool,
327 #[prost(bool, tag = "6")]
328 pub temporary: bool,
329 #[prost(string, tag = "4")]
330 pub definition: ::prost::alloc::string::String,
331}
332#[derive(Clone, PartialEq, ::prost::Message)]
335pub struct ValuesNode {
336 #[prost(uint64, tag = "1")]
337 pub n_cols: u64,
338 #[prost(message, repeated, tag = "2")]
339 pub values_list: ::prost::alloc::vec::Vec<LogicalExprNode>,
340}
341#[derive(Clone, PartialEq, ::prost::Message)]
342pub struct AnalyzeNode {
343 #[prost(message, optional, boxed, tag = "1")]
344 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
345 #[prost(bool, tag = "2")]
346 pub verbose: bool,
347}
348#[derive(Clone, PartialEq, ::prost::Message)]
349pub struct ExplainNode {
350 #[prost(message, optional, boxed, tag = "1")]
351 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
352 #[prost(bool, tag = "2")]
353 pub verbose: bool,
354 #[prost(enumeration = "super::datafusion_common::ExplainFormat", tag = "3")]
355 pub format: i32,
356}
357#[derive(Clone, PartialEq, ::prost::Message)]
358pub struct AggregateNode {
359 #[prost(message, optional, boxed, tag = "1")]
360 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
361 #[prost(message, repeated, tag = "2")]
362 pub group_expr: ::prost::alloc::vec::Vec<LogicalExprNode>,
363 #[prost(message, repeated, tag = "3")]
364 pub aggr_expr: ::prost::alloc::vec::Vec<LogicalExprNode>,
365}
366#[derive(Clone, PartialEq, ::prost::Message)]
367pub struct WindowNode {
368 #[prost(message, optional, boxed, tag = "1")]
369 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
370 #[prost(message, repeated, tag = "2")]
371 pub window_expr: ::prost::alloc::vec::Vec<LogicalExprNode>,
372}
373#[derive(Clone, PartialEq, ::prost::Message)]
374pub struct JoinNode {
375 #[prost(message, optional, boxed, tag = "1")]
376 pub left: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
377 #[prost(message, optional, boxed, tag = "2")]
378 pub right: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
379 #[prost(enumeration = "super::datafusion_common::JoinType", tag = "3")]
380 pub join_type: i32,
381 #[prost(enumeration = "super::datafusion_common::JoinConstraint", tag = "4")]
382 pub join_constraint: i32,
383 #[prost(message, repeated, tag = "5")]
384 pub left_join_key: ::prost::alloc::vec::Vec<LogicalExprNode>,
385 #[prost(message, repeated, tag = "6")]
386 pub right_join_key: ::prost::alloc::vec::Vec<LogicalExprNode>,
387 #[prost(enumeration = "super::datafusion_common::NullEquality", tag = "7")]
388 pub null_equality: i32,
389 #[prost(message, optional, boxed, tag = "8")]
390 pub filter: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
391 #[prost(bool, tag = "9")]
392 pub null_aware: bool,
393}
394#[derive(Clone, PartialEq, ::prost::Message)]
395pub struct DistinctNode {
396 #[prost(message, optional, boxed, tag = "1")]
397 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
398}
399#[derive(Clone, PartialEq, ::prost::Message)]
400pub struct DistinctOnNode {
401 #[prost(message, repeated, tag = "1")]
402 pub on_expr: ::prost::alloc::vec::Vec<LogicalExprNode>,
403 #[prost(message, repeated, tag = "2")]
404 pub select_expr: ::prost::alloc::vec::Vec<LogicalExprNode>,
405 #[prost(message, repeated, tag = "3")]
406 pub sort_expr: ::prost::alloc::vec::Vec<SortExprNode>,
407 #[prost(message, optional, boxed, tag = "4")]
408 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
409}
410#[derive(Clone, PartialEq, ::prost::Message)]
411pub struct CopyToNode {
412 #[prost(message, optional, boxed, tag = "1")]
413 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
414 #[prost(string, tag = "2")]
415 pub output_url: ::prost::alloc::string::String,
416 #[prost(bytes = "vec", tag = "3")]
417 pub file_type: ::prost::alloc::vec::Vec<u8>,
418 #[prost(string, repeated, tag = "7")]
419 pub partition_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
420}
421#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
424pub struct FileFormatProto {
425 #[prost(enumeration = "FileFormatKind", tag = "1")]
426 pub kind: i32,
427 #[prost(bytes = "vec", tag = "2")]
428 pub encoded_file_format: ::prost::alloc::vec::Vec<u8>,
429}
430#[derive(Clone, PartialEq, ::prost::Message)]
431pub struct DmlNode {
432 #[prost(enumeration = "dml_node::Type", tag = "1")]
433 pub dml_type: i32,
434 #[prost(message, optional, boxed, tag = "2")]
435 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
436 #[prost(message, optional, tag = "3")]
437 pub table_name: ::core::option::Option<TableReference>,
438 #[prost(message, optional, boxed, tag = "5")]
439 pub target: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
440}
441pub mod dml_node {
443 #[derive(
444 Clone,
445 Copy,
446 Debug,
447 PartialEq,
448 Eq,
449 Hash,
450 PartialOrd,
451 Ord,
452 ::prost::Enumeration
453 )]
454 #[repr(i32)]
455 pub enum Type {
456 Update = 0,
457 Delete = 1,
458 Ctas = 2,
459 InsertAppend = 3,
460 InsertOverwrite = 4,
461 InsertReplace = 5,
462 Truncate = 6,
463 }
464 impl Type {
465 pub fn as_str_name(&self) -> &'static str {
470 match self {
471 Self::Update => "UPDATE",
472 Self::Delete => "DELETE",
473 Self::Ctas => "CTAS",
474 Self::InsertAppend => "INSERT_APPEND",
475 Self::InsertOverwrite => "INSERT_OVERWRITE",
476 Self::InsertReplace => "INSERT_REPLACE",
477 Self::Truncate => "TRUNCATE",
478 }
479 }
480 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
482 match value {
483 "UPDATE" => Some(Self::Update),
484 "DELETE" => Some(Self::Delete),
485 "CTAS" => Some(Self::Ctas),
486 "INSERT_APPEND" => Some(Self::InsertAppend),
487 "INSERT_OVERWRITE" => Some(Self::InsertOverwrite),
488 "INSERT_REPLACE" => Some(Self::InsertReplace),
489 "TRUNCATE" => Some(Self::Truncate),
490 _ => None,
491 }
492 }
493 }
494}
495#[derive(Clone, PartialEq, ::prost::Message)]
496pub struct UnnestNode {
497 #[prost(message, optional, boxed, tag = "1")]
498 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
499 #[prost(message, repeated, tag = "2")]
500 pub exec_columns: ::prost::alloc::vec::Vec<super::datafusion_common::Column>,
501 #[prost(message, repeated, tag = "3")]
502 pub list_type_columns: ::prost::alloc::vec::Vec<ColumnUnnestListItem>,
503 #[prost(uint64, repeated, tag = "4")]
504 pub struct_type_columns: ::prost::alloc::vec::Vec<u64>,
505 #[prost(uint64, repeated, tag = "5")]
506 pub dependency_indices: ::prost::alloc::vec::Vec<u64>,
507 #[prost(message, optional, tag = "6")]
508 pub schema: ::core::option::Option<super::datafusion_common::DfSchema>,
509 #[prost(message, optional, tag = "7")]
510 pub options: ::core::option::Option<UnnestOptions>,
511}
512#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
513pub struct ColumnUnnestListItem {
514 #[prost(uint32, tag = "1")]
515 pub input_index: u32,
516 #[prost(message, optional, tag = "2")]
517 pub recursion: ::core::option::Option<ColumnUnnestListRecursion>,
518}
519#[derive(Clone, PartialEq, ::prost::Message)]
520pub struct ColumnUnnestListRecursions {
521 #[prost(message, repeated, tag = "2")]
522 pub recursions: ::prost::alloc::vec::Vec<ColumnUnnestListRecursion>,
523}
524#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
525pub struct ColumnUnnestListRecursion {
526 #[prost(message, optional, tag = "1")]
527 pub output_column: ::core::option::Option<super::datafusion_common::Column>,
528 #[prost(uint32, tag = "2")]
529 pub depth: u32,
530}
531#[derive(Clone, PartialEq, ::prost::Message)]
532pub struct UnnestOptions {
533 #[prost(bool, tag = "1")]
534 pub preserve_nulls: bool,
535 #[prost(message, repeated, tag = "2")]
536 pub recursions: ::prost::alloc::vec::Vec<RecursionUnnestOption>,
537}
538#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
539pub struct RecursionUnnestOption {
540 #[prost(message, optional, tag = "1")]
541 pub output_column: ::core::option::Option<super::datafusion_common::Column>,
542 #[prost(message, optional, tag = "2")]
543 pub input_column: ::core::option::Option<super::datafusion_common::Column>,
544 #[prost(uint32, tag = "3")]
545 pub depth: u32,
546}
547#[derive(Clone, PartialEq, ::prost::Message)]
548pub struct UnionNode {
549 #[prost(message, repeated, tag = "1")]
550 pub inputs: ::prost::alloc::vec::Vec<LogicalPlanNode>,
551}
552#[derive(Clone, PartialEq, ::prost::Message)]
553pub struct CrossJoinNode {
554 #[prost(message, optional, boxed, tag = "1")]
555 pub left: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
556 #[prost(message, optional, boxed, tag = "2")]
557 pub right: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
558}
559#[derive(Clone, PartialEq, ::prost::Message)]
560pub struct LimitNode {
561 #[prost(message, optional, boxed, tag = "1")]
562 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
563 #[prost(int64, tag = "2")]
565 pub skip: i64,
566 #[prost(int64, tag = "3")]
568 pub fetch: i64,
569}
570#[derive(Clone, PartialEq, ::prost::Message)]
571pub struct SelectionExecNode {
572 #[prost(message, optional, tag = "1")]
573 pub expr: ::core::option::Option<LogicalExprNode>,
574}
575#[derive(Clone, PartialEq, ::prost::Message)]
576pub struct SubqueryAliasNode {
577 #[prost(message, optional, boxed, tag = "1")]
578 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
579 #[prost(message, optional, tag = "3")]
580 pub alias: ::core::option::Option<TableReference>,
581}
582#[derive(Clone, PartialEq, ::prost::Message)]
584pub struct LogicalExprNode {
585 #[prost(
586 oneof = "logical_expr_node::ExprType",
587 tags = "1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 13, 14, 15, 17, 18, 19, 20, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36"
588 )]
589 pub expr_type: ::core::option::Option<logical_expr_node::ExprType>,
590}
591pub mod logical_expr_node {
593 #[derive(Clone, PartialEq, ::prost::Oneof)]
594 pub enum ExprType {
595 #[prost(message, tag = "1")]
597 Column(super::super::datafusion_common::Column),
598 #[prost(message, tag = "2")]
600 Alias(::prost::alloc::boxed::Box<super::AliasNode>),
601 #[prost(message, tag = "3")]
602 Literal(super::super::datafusion_common::ScalarValue),
603 #[prost(message, tag = "4")]
605 BinaryExpr(super::BinaryExprNode),
606 #[prost(message, tag = "6")]
608 IsNullExpr(::prost::alloc::boxed::Box<super::IsNull>),
609 #[prost(message, tag = "7")]
610 IsNotNullExpr(::prost::alloc::boxed::Box<super::IsNotNull>),
611 #[prost(message, tag = "8")]
612 NotExpr(::prost::alloc::boxed::Box<super::Not>),
613 #[prost(message, tag = "9")]
614 Between(::prost::alloc::boxed::Box<super::BetweenNode>),
615 #[prost(message, tag = "10")]
616 Case(::prost::alloc::boxed::Box<super::CaseNode>),
617 #[prost(message, tag = "11")]
618 Cast(::prost::alloc::boxed::Box<super::CastNode>),
619 #[prost(message, tag = "13")]
620 Negative(::prost::alloc::boxed::Box<super::NegativeNode>),
621 #[prost(message, tag = "14")]
622 InList(::prost::alloc::boxed::Box<super::InListNode>),
623 #[prost(message, tag = "15")]
624 Wildcard(super::Wildcard),
625 #[prost(message, tag = "17")]
627 TryCast(::prost::alloc::boxed::Box<super::TryCastNode>),
628 #[prost(message, tag = "18")]
630 WindowExpr(::prost::alloc::boxed::Box<super::WindowExprNode>),
631 #[prost(message, tag = "19")]
633 AggregateUdfExpr(::prost::alloc::boxed::Box<super::AggregateUdfExprNode>),
634 #[prost(message, tag = "20")]
636 ScalarUdfExpr(super::ScalarUdfExprNode),
637 #[prost(message, tag = "22")]
638 GroupingSet(super::GroupingSetNode),
639 #[prost(message, tag = "23")]
640 Cube(super::CubeNode),
641 #[prost(message, tag = "24")]
642 Rollup(super::RollupNode),
643 #[prost(message, tag = "25")]
644 IsTrue(::prost::alloc::boxed::Box<super::IsTrue>),
645 #[prost(message, tag = "26")]
646 IsFalse(::prost::alloc::boxed::Box<super::IsFalse>),
647 #[prost(message, tag = "27")]
648 IsUnknown(::prost::alloc::boxed::Box<super::IsUnknown>),
649 #[prost(message, tag = "28")]
650 IsNotTrue(::prost::alloc::boxed::Box<super::IsNotTrue>),
651 #[prost(message, tag = "29")]
652 IsNotFalse(::prost::alloc::boxed::Box<super::IsNotFalse>),
653 #[prost(message, tag = "30")]
654 IsNotUnknown(::prost::alloc::boxed::Box<super::IsNotUnknown>),
655 #[prost(message, tag = "31")]
656 Like(::prost::alloc::boxed::Box<super::LikeNode>),
657 #[prost(message, tag = "32")]
658 Ilike(::prost::alloc::boxed::Box<super::ILikeNode>),
659 #[prost(message, tag = "33")]
660 SimilarTo(::prost::alloc::boxed::Box<super::SimilarToNode>),
661 #[prost(message, tag = "34")]
662 Placeholder(super::PlaceholderNode),
663 #[prost(message, tag = "35")]
664 Unnest(super::Unnest),
665 #[prost(message, tag = "36")]
667 ScalarSubqueryExpr(::prost::alloc::boxed::Box<super::ScalarSubqueryExprNode>),
668 }
669}
670#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
671pub struct Wildcard {
672 #[prost(message, optional, tag = "1")]
673 pub qualifier: ::core::option::Option<TableReference>,
674}
675#[derive(Clone, PartialEq, ::prost::Message)]
676pub struct SubqueryNode {
677 #[prost(message, optional, boxed, tag = "1")]
678 pub subquery: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
679 #[prost(message, repeated, tag = "2")]
680 pub outer_ref_columns: ::prost::alloc::vec::Vec<LogicalExprNode>,
681}
682#[derive(Clone, PartialEq, ::prost::Message)]
683pub struct ScalarSubqueryExprNode {
684 #[prost(message, optional, boxed, tag = "1")]
685 pub subquery: ::core::option::Option<::prost::alloc::boxed::Box<SubqueryNode>>,
686}
687#[derive(Clone, PartialEq, ::prost::Message)]
688pub struct PlaceholderNode {
689 #[prost(string, tag = "1")]
690 pub id: ::prost::alloc::string::String,
691 #[prost(message, optional, tag = "2")]
694 pub data_type: ::core::option::Option<super::datafusion_common::ArrowType>,
695 #[prost(bool, optional, tag = "3")]
696 pub nullable: ::core::option::Option<bool>,
697 #[prost(map = "string, string", tag = "4")]
698 pub metadata: ::std::collections::HashMap<
699 ::prost::alloc::string::String,
700 ::prost::alloc::string::String,
701 >,
702}
703#[derive(Clone, PartialEq, ::prost::Message)]
704pub struct LogicalExprList {
705 #[prost(message, repeated, tag = "1")]
706 pub expr: ::prost::alloc::vec::Vec<LogicalExprNode>,
707}
708#[derive(Clone, PartialEq, ::prost::Message)]
709pub struct GroupingSetNode {
710 #[prost(message, repeated, tag = "1")]
711 pub expr: ::prost::alloc::vec::Vec<LogicalExprList>,
712}
713#[derive(Clone, PartialEq, ::prost::Message)]
714pub struct CubeNode {
715 #[prost(message, repeated, tag = "1")]
716 pub expr: ::prost::alloc::vec::Vec<LogicalExprNode>,
717}
718#[derive(Clone, PartialEq, ::prost::Message)]
719pub struct RollupNode {
720 #[prost(message, repeated, tag = "1")]
721 pub expr: ::prost::alloc::vec::Vec<LogicalExprNode>,
722}
723#[derive(Clone, PartialEq, ::prost::Message)]
724pub struct NamedStructField {
725 #[prost(message, optional, tag = "1")]
726 pub name: ::core::option::Option<super::datafusion_common::ScalarValue>,
727}
728#[derive(Clone, PartialEq, ::prost::Message)]
729pub struct ListIndex {
730 #[prost(message, optional, tag = "1")]
731 pub key: ::core::option::Option<LogicalExprNode>,
732}
733#[derive(Clone, PartialEq, ::prost::Message)]
734pub struct ListRange {
735 #[prost(message, optional, tag = "1")]
736 pub start: ::core::option::Option<LogicalExprNode>,
737 #[prost(message, optional, tag = "2")]
738 pub stop: ::core::option::Option<LogicalExprNode>,
739 #[prost(message, optional, tag = "3")]
740 pub stride: ::core::option::Option<LogicalExprNode>,
741}
742#[derive(Clone, PartialEq, ::prost::Message)]
743pub struct IsNull {
744 #[prost(message, optional, boxed, tag = "1")]
745 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
746}
747#[derive(Clone, PartialEq, ::prost::Message)]
748pub struct IsNotNull {
749 #[prost(message, optional, boxed, tag = "1")]
750 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
751}
752#[derive(Clone, PartialEq, ::prost::Message)]
753pub struct IsTrue {
754 #[prost(message, optional, boxed, tag = "1")]
755 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
756}
757#[derive(Clone, PartialEq, ::prost::Message)]
758pub struct IsFalse {
759 #[prost(message, optional, boxed, tag = "1")]
760 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
761}
762#[derive(Clone, PartialEq, ::prost::Message)]
763pub struct IsUnknown {
764 #[prost(message, optional, boxed, tag = "1")]
765 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
766}
767#[derive(Clone, PartialEq, ::prost::Message)]
768pub struct IsNotTrue {
769 #[prost(message, optional, boxed, tag = "1")]
770 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
771}
772#[derive(Clone, PartialEq, ::prost::Message)]
773pub struct IsNotFalse {
774 #[prost(message, optional, boxed, tag = "1")]
775 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
776}
777#[derive(Clone, PartialEq, ::prost::Message)]
778pub struct IsNotUnknown {
779 #[prost(message, optional, boxed, tag = "1")]
780 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
781}
782#[derive(Clone, PartialEq, ::prost::Message)]
783pub struct Not {
784 #[prost(message, optional, boxed, tag = "1")]
785 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
786}
787#[derive(Clone, PartialEq, ::prost::Message)]
788pub struct AliasNode {
789 #[prost(message, optional, boxed, tag = "1")]
790 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
791 #[prost(string, tag = "2")]
792 pub alias: ::prost::alloc::string::String,
793 #[prost(message, repeated, tag = "3")]
794 pub relation: ::prost::alloc::vec::Vec<TableReference>,
795 #[prost(map = "string, string", tag = "4")]
796 pub metadata: ::std::collections::HashMap<
797 ::prost::alloc::string::String,
798 ::prost::alloc::string::String,
799 >,
800}
801#[derive(Clone, PartialEq, ::prost::Message)]
802pub struct BinaryExprNode {
803 #[prost(message, repeated, tag = "1")]
807 pub operands: ::prost::alloc::vec::Vec<LogicalExprNode>,
808 #[prost(string, tag = "3")]
809 pub op: ::prost::alloc::string::String,
810}
811#[derive(Clone, PartialEq, ::prost::Message)]
812pub struct NegativeNode {
813 #[prost(message, optional, boxed, tag = "1")]
814 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
815}
816#[derive(Clone, PartialEq, ::prost::Message)]
817pub struct Unnest {
818 #[prost(message, repeated, tag = "1")]
819 pub exprs: ::prost::alloc::vec::Vec<LogicalExprNode>,
820}
821#[derive(Clone, PartialEq, ::prost::Message)]
822pub struct InListNode {
823 #[prost(message, optional, boxed, tag = "1")]
824 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
825 #[prost(message, repeated, tag = "2")]
826 pub list: ::prost::alloc::vec::Vec<LogicalExprNode>,
827 #[prost(bool, tag = "3")]
828 pub negated: bool,
829}
830#[derive(Clone, PartialEq, ::prost::Message)]
831pub struct AggregateUdfExprNode {
832 #[prost(string, tag = "1")]
833 pub fun_name: ::prost::alloc::string::String,
834 #[prost(message, repeated, tag = "2")]
835 pub args: ::prost::alloc::vec::Vec<LogicalExprNode>,
836 #[prost(bool, tag = "5")]
837 pub distinct: bool,
838 #[prost(message, optional, boxed, tag = "3")]
839 pub filter: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
840 #[prost(message, repeated, tag = "4")]
841 pub order_by: ::prost::alloc::vec::Vec<SortExprNode>,
842 #[prost(bytes = "vec", optional, tag = "6")]
843 pub fun_definition: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
844 #[prost(enumeration = "NullTreatment", optional, tag = "7")]
845 pub null_treatment: ::core::option::Option<i32>,
846}
847#[derive(Clone, PartialEq, ::prost::Message)]
848pub struct ScalarUdfExprNode {
849 #[prost(string, tag = "1")]
850 pub fun_name: ::prost::alloc::string::String,
851 #[prost(message, repeated, tag = "2")]
852 pub args: ::prost::alloc::vec::Vec<LogicalExprNode>,
853 #[prost(bytes = "vec", optional, tag = "3")]
854 pub fun_definition: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
855}
856#[derive(Clone, PartialEq, ::prost::Message)]
857pub struct WindowExprNode {
858 #[prost(message, repeated, tag = "4")]
859 pub exprs: ::prost::alloc::vec::Vec<LogicalExprNode>,
860 #[prost(message, repeated, tag = "5")]
861 pub partition_by: ::prost::alloc::vec::Vec<LogicalExprNode>,
862 #[prost(message, repeated, tag = "6")]
863 pub order_by: ::prost::alloc::vec::Vec<SortExprNode>,
864 #[prost(message, optional, tag = "8")]
866 pub window_frame: ::core::option::Option<WindowFrame>,
867 #[prost(bytes = "vec", optional, tag = "10")]
868 pub fun_definition: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
869 #[prost(enumeration = "NullTreatment", optional, tag = "11")]
870 pub null_treatment: ::core::option::Option<i32>,
871 #[prost(bool, tag = "12")]
872 pub distinct: bool,
873 #[prost(message, optional, boxed, tag = "13")]
874 pub filter: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
875 #[prost(oneof = "window_expr_node::WindowFunction", tags = "3, 9")]
876 pub window_function: ::core::option::Option<window_expr_node::WindowFunction>,
877}
878pub mod window_expr_node {
880 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
881 pub enum WindowFunction {
882 #[prost(string, tag = "3")]
884 Udaf(::prost::alloc::string::String),
885 #[prost(string, tag = "9")]
886 Udwf(::prost::alloc::string::String),
887 }
888}
889#[derive(Clone, PartialEq, ::prost::Message)]
890pub struct BetweenNode {
891 #[prost(message, optional, boxed, tag = "1")]
892 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
893 #[prost(bool, tag = "2")]
894 pub negated: bool,
895 #[prost(message, optional, boxed, tag = "3")]
896 pub low: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
897 #[prost(message, optional, boxed, tag = "4")]
898 pub high: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
899}
900#[derive(Clone, PartialEq, ::prost::Message)]
901pub struct LikeNode {
902 #[prost(bool, tag = "1")]
903 pub negated: bool,
904 #[prost(message, optional, boxed, tag = "2")]
905 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
906 #[prost(message, optional, boxed, tag = "3")]
907 pub pattern: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
908 #[prost(string, tag = "4")]
909 pub escape_char: ::prost::alloc::string::String,
910}
911#[derive(Clone, PartialEq, ::prost::Message)]
912pub struct ILikeNode {
913 #[prost(bool, tag = "1")]
914 pub negated: bool,
915 #[prost(message, optional, boxed, tag = "2")]
916 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
917 #[prost(message, optional, boxed, tag = "3")]
918 pub pattern: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
919 #[prost(string, tag = "4")]
920 pub escape_char: ::prost::alloc::string::String,
921}
922#[derive(Clone, PartialEq, ::prost::Message)]
923pub struct SimilarToNode {
924 #[prost(bool, tag = "1")]
925 pub negated: bool,
926 #[prost(message, optional, boxed, tag = "2")]
927 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
928 #[prost(message, optional, boxed, tag = "3")]
929 pub pattern: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
930 #[prost(string, tag = "4")]
931 pub escape_char: ::prost::alloc::string::String,
932}
933#[derive(Clone, PartialEq, ::prost::Message)]
934pub struct CaseNode {
935 #[prost(message, optional, boxed, tag = "1")]
936 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
937 #[prost(message, repeated, tag = "2")]
938 pub when_then_expr: ::prost::alloc::vec::Vec<WhenThen>,
939 #[prost(message, optional, boxed, tag = "3")]
940 pub else_expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
941}
942#[derive(Clone, PartialEq, ::prost::Message)]
943pub struct WhenThen {
944 #[prost(message, optional, tag = "1")]
945 pub when_expr: ::core::option::Option<LogicalExprNode>,
946 #[prost(message, optional, tag = "2")]
947 pub then_expr: ::core::option::Option<LogicalExprNode>,
948}
949#[derive(Clone, PartialEq, ::prost::Message)]
950pub struct CastNode {
951 #[prost(message, optional, boxed, tag = "1")]
952 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
953 #[prost(message, optional, tag = "2")]
954 pub arrow_type: ::core::option::Option<super::datafusion_common::ArrowType>,
955 #[prost(map = "string, string", tag = "3")]
956 pub metadata: ::std::collections::HashMap<
957 ::prost::alloc::string::String,
958 ::prost::alloc::string::String,
959 >,
960 #[prost(bool, optional, tag = "4")]
961 pub nullable: ::core::option::Option<bool>,
962}
963#[derive(Clone, PartialEq, ::prost::Message)]
964pub struct TryCastNode {
965 #[prost(message, optional, boxed, tag = "1")]
966 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
967 #[prost(message, optional, tag = "2")]
968 pub arrow_type: ::core::option::Option<super::datafusion_common::ArrowType>,
969 #[prost(map = "string, string", tag = "3")]
970 pub metadata: ::std::collections::HashMap<
971 ::prost::alloc::string::String,
972 ::prost::alloc::string::String,
973 >,
974 #[prost(bool, optional, tag = "4")]
975 pub nullable: ::core::option::Option<bool>,
976}
977#[derive(Clone, PartialEq, ::prost::Message)]
978pub struct SortExprNode {
979 #[prost(message, optional, tag = "1")]
980 pub expr: ::core::option::Option<LogicalExprNode>,
981 #[prost(bool, tag = "2")]
982 pub asc: bool,
983 #[prost(bool, tag = "3")]
984 pub nulls_first: bool,
985}
986#[derive(Clone, PartialEq, ::prost::Message)]
987pub struct WindowFrame {
988 #[prost(enumeration = "WindowFrameUnits", tag = "1")]
989 pub window_frame_units: i32,
990 #[prost(message, optional, tag = "2")]
991 pub start_bound: ::core::option::Option<WindowFrameBound>,
992 #[prost(oneof = "window_frame::EndBound", tags = "3")]
995 pub end_bound: ::core::option::Option<window_frame::EndBound>,
996}
997pub mod window_frame {
999 #[derive(Clone, PartialEq, ::prost::Oneof)]
1002 pub enum EndBound {
1003 #[prost(message, tag = "3")]
1004 Bound(super::WindowFrameBound),
1005 }
1006}
1007#[derive(Clone, PartialEq, ::prost::Message)]
1008pub struct WindowFrameBound {
1009 #[prost(enumeration = "WindowFrameBoundType", tag = "1")]
1010 pub window_frame_bound_type: i32,
1011 #[prost(message, optional, tag = "2")]
1012 pub bound_value: ::core::option::Option<super::datafusion_common::ScalarValue>,
1013}
1014#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1015pub struct FixedSizeBinary {
1016 #[prost(int32, tag = "1")]
1017 pub length: i32,
1018}
1019#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1020pub struct AnalyzedLogicalPlanType {
1021 #[prost(string, tag = "1")]
1022 pub analyzer_name: ::prost::alloc::string::String,
1023}
1024#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1025pub struct OptimizedLogicalPlanType {
1026 #[prost(string, tag = "1")]
1027 pub optimizer_name: ::prost::alloc::string::String,
1028}
1029#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1030pub struct OptimizedPhysicalPlanType {
1031 #[prost(string, tag = "1")]
1032 pub optimizer_name: ::prost::alloc::string::String,
1033}
1034#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1035pub struct PlanType {
1036 #[prost(
1037 oneof = "plan_type::PlanTypeEnum",
1038 tags = "1, 7, 8, 2, 3, 4, 9, 11, 5, 6, 10, 12, 13"
1039 )]
1040 pub plan_type_enum: ::core::option::Option<plan_type::PlanTypeEnum>,
1041}
1042pub mod plan_type {
1044 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
1045 pub enum PlanTypeEnum {
1046 #[prost(message, tag = "1")]
1047 InitialLogicalPlan(super::super::datafusion_common::EmptyMessage),
1048 #[prost(message, tag = "7")]
1049 AnalyzedLogicalPlan(super::AnalyzedLogicalPlanType),
1050 #[prost(message, tag = "8")]
1051 FinalAnalyzedLogicalPlan(super::super::datafusion_common::EmptyMessage),
1052 #[prost(message, tag = "2")]
1053 OptimizedLogicalPlan(super::OptimizedLogicalPlanType),
1054 #[prost(message, tag = "3")]
1055 FinalLogicalPlan(super::super::datafusion_common::EmptyMessage),
1056 #[prost(message, tag = "4")]
1057 InitialPhysicalPlan(super::super::datafusion_common::EmptyMessage),
1058 #[prost(message, tag = "9")]
1059 InitialPhysicalPlanWithStats(super::super::datafusion_common::EmptyMessage),
1060 #[prost(message, tag = "11")]
1061 InitialPhysicalPlanWithSchema(super::super::datafusion_common::EmptyMessage),
1062 #[prost(message, tag = "5")]
1063 OptimizedPhysicalPlan(super::OptimizedPhysicalPlanType),
1064 #[prost(message, tag = "6")]
1065 FinalPhysicalPlan(super::super::datafusion_common::EmptyMessage),
1066 #[prost(message, tag = "10")]
1067 FinalPhysicalPlanWithStats(super::super::datafusion_common::EmptyMessage),
1068 #[prost(message, tag = "12")]
1069 FinalPhysicalPlanWithSchema(super::super::datafusion_common::EmptyMessage),
1070 #[prost(message, tag = "13")]
1071 PhysicalPlanError(super::super::datafusion_common::EmptyMessage),
1072 }
1073}
1074#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1075pub struct StringifiedPlan {
1076 #[prost(message, optional, tag = "1")]
1077 pub plan_type: ::core::option::Option<PlanType>,
1078 #[prost(string, tag = "2")]
1079 pub plan: ::prost::alloc::string::String,
1080}
1081#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1082pub struct BareTableReference {
1083 #[prost(string, tag = "1")]
1084 pub table: ::prost::alloc::string::String,
1085}
1086#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1087pub struct PartialTableReference {
1088 #[prost(string, tag = "1")]
1089 pub schema: ::prost::alloc::string::String,
1090 #[prost(string, tag = "2")]
1091 pub table: ::prost::alloc::string::String,
1092}
1093#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1094pub struct FullTableReference {
1095 #[prost(string, tag = "1")]
1096 pub catalog: ::prost::alloc::string::String,
1097 #[prost(string, tag = "2")]
1098 pub schema: ::prost::alloc::string::String,
1099 #[prost(string, tag = "3")]
1100 pub table: ::prost::alloc::string::String,
1101}
1102#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1103pub struct TableReference {
1104 #[prost(oneof = "table_reference::TableReferenceEnum", tags = "1, 2, 3")]
1105 pub table_reference_enum: ::core::option::Option<
1106 table_reference::TableReferenceEnum,
1107 >,
1108}
1109pub mod table_reference {
1111 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
1112 pub enum TableReferenceEnum {
1113 #[prost(message, tag = "1")]
1114 Bare(super::BareTableReference),
1115 #[prost(message, tag = "2")]
1116 Partial(super::PartialTableReference),
1117 #[prost(message, tag = "3")]
1118 Full(super::FullTableReference),
1119 }
1120}
1121#[derive(Clone, PartialEq, ::prost::Message)]
1123pub struct PhysicalPlanNode {
1124 #[prost(
1125 oneof = "physical_plan_node::PhysicalPlanType",
1126 tags = "1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39"
1127 )]
1128 pub physical_plan_type: ::core::option::Option<physical_plan_node::PhysicalPlanType>,
1129}
1130pub mod physical_plan_node {
1132 #[derive(Clone, PartialEq, ::prost::Oneof)]
1133 pub enum PhysicalPlanType {
1134 #[prost(message, tag = "1")]
1135 ParquetScan(super::ParquetScanExecNode),
1136 #[prost(message, tag = "2")]
1137 CsvScan(super::CsvScanExecNode),
1138 #[prost(message, tag = "3")]
1139 Empty(super::EmptyExecNode),
1140 #[prost(message, tag = "4")]
1141 Projection(::prost::alloc::boxed::Box<super::ProjectionExecNode>),
1142 #[prost(message, tag = "6")]
1143 GlobalLimit(::prost::alloc::boxed::Box<super::GlobalLimitExecNode>),
1144 #[prost(message, tag = "7")]
1145 LocalLimit(::prost::alloc::boxed::Box<super::LocalLimitExecNode>),
1146 #[prost(message, tag = "8")]
1147 Aggregate(::prost::alloc::boxed::Box<super::AggregateExecNode>),
1148 #[prost(message, tag = "9")]
1149 HashJoin(::prost::alloc::boxed::Box<super::HashJoinExecNode>),
1150 #[prost(message, tag = "10")]
1151 Sort(::prost::alloc::boxed::Box<super::SortExecNode>),
1152 #[prost(message, tag = "11")]
1153 CoalesceBatches(::prost::alloc::boxed::Box<super::CoalesceBatchesExecNode>),
1154 #[prost(message, tag = "12")]
1155 Filter(::prost::alloc::boxed::Box<super::FilterExecNode>),
1156 #[prost(message, tag = "13")]
1157 Merge(::prost::alloc::boxed::Box<super::CoalescePartitionsExecNode>),
1158 #[prost(message, tag = "14")]
1159 Repartition(::prost::alloc::boxed::Box<super::RepartitionExecNode>),
1160 #[prost(message, tag = "15")]
1161 Window(::prost::alloc::boxed::Box<super::WindowAggExecNode>),
1162 #[prost(message, tag = "16")]
1163 CrossJoin(::prost::alloc::boxed::Box<super::CrossJoinExecNode>),
1164 #[prost(message, tag = "17")]
1165 AvroScan(super::AvroScanExecNode),
1166 #[prost(message, tag = "18")]
1167 Extension(super::PhysicalExtensionNode),
1168 #[prost(message, tag = "19")]
1169 Union(super::UnionExecNode),
1170 #[prost(message, tag = "20")]
1171 Explain(super::ExplainExecNode),
1172 #[prost(message, tag = "21")]
1173 SortPreservingMerge(
1174 ::prost::alloc::boxed::Box<super::SortPreservingMergeExecNode>,
1175 ),
1176 #[prost(message, tag = "22")]
1177 NestedLoopJoin(::prost::alloc::boxed::Box<super::NestedLoopJoinExecNode>),
1178 #[prost(message, tag = "23")]
1179 Analyze(::prost::alloc::boxed::Box<super::AnalyzeExecNode>),
1180 #[prost(message, tag = "24")]
1181 JsonSink(::prost::alloc::boxed::Box<super::JsonSinkExecNode>),
1182 #[prost(message, tag = "25")]
1183 SymmetricHashJoin(::prost::alloc::boxed::Box<super::SymmetricHashJoinExecNode>),
1184 #[prost(message, tag = "26")]
1185 Interleave(super::InterleaveExecNode),
1186 #[prost(message, tag = "27")]
1187 PlaceholderRow(super::PlaceholderRowExecNode),
1188 #[prost(message, tag = "28")]
1189 CsvSink(::prost::alloc::boxed::Box<super::CsvSinkExecNode>),
1190 #[prost(message, tag = "29")]
1191 ParquetSink(::prost::alloc::boxed::Box<super::ParquetSinkExecNode>),
1192 #[prost(message, tag = "30")]
1193 Unnest(::prost::alloc::boxed::Box<super::UnnestExecNode>),
1194 #[prost(message, tag = "31")]
1195 JsonScan(super::JsonScanExecNode),
1196 #[prost(message, tag = "32")]
1197 Cooperative(::prost::alloc::boxed::Box<super::CooperativeExecNode>),
1198 #[prost(message, tag = "33")]
1199 GenerateSeries(super::GenerateSeriesNode),
1200 #[prost(message, tag = "34")]
1201 SortMergeJoin(::prost::alloc::boxed::Box<super::SortMergeJoinExecNode>),
1202 #[prost(message, tag = "35")]
1203 MemoryScan(super::MemoryScanExecNode),
1204 #[prost(message, tag = "36")]
1205 AsyncFunc(::prost::alloc::boxed::Box<super::AsyncFuncExecNode>),
1206 #[prost(message, tag = "37")]
1207 Buffer(::prost::alloc::boxed::Box<super::BufferExecNode>),
1208 #[prost(message, tag = "38")]
1209 ArrowScan(super::ArrowScanExecNode),
1210 #[prost(message, tag = "39")]
1211 ScalarSubquery(::prost::alloc::boxed::Box<super::ScalarSubqueryExecNode>),
1212 }
1213}
1214#[derive(Clone, PartialEq, ::prost::Message)]
1215pub struct PartitionColumn {
1216 #[prost(string, tag = "1")]
1217 pub name: ::prost::alloc::string::String,
1218 #[prost(message, optional, tag = "2")]
1219 pub arrow_type: ::core::option::Option<super::datafusion_common::ArrowType>,
1220}
1221#[derive(Clone, PartialEq, ::prost::Message)]
1222pub struct FileSinkConfig {
1223 #[prost(string, tag = "1")]
1224 pub object_store_url: ::prost::alloc::string::String,
1225 #[prost(message, repeated, tag = "2")]
1226 pub file_groups: ::prost::alloc::vec::Vec<PartitionedFile>,
1227 #[prost(string, repeated, tag = "3")]
1228 pub table_paths: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1229 #[prost(message, optional, tag = "4")]
1230 pub output_schema: ::core::option::Option<super::datafusion_common::Schema>,
1231 #[prost(message, repeated, tag = "5")]
1232 pub table_partition_cols: ::prost::alloc::vec::Vec<PartitionColumn>,
1233 #[prost(bool, tag = "9")]
1234 pub keep_partition_by_columns: bool,
1235 #[prost(enumeration = "InsertOp", tag = "10")]
1236 pub insert_op: i32,
1237 #[prost(string, tag = "11")]
1238 pub file_extension: ::prost::alloc::string::String,
1239 #[prost(enumeration = "FileOutputMode", tag = "12")]
1241 pub file_output_mode: i32,
1242}
1243#[derive(Clone, PartialEq, ::prost::Message)]
1244pub struct JsonSink {
1245 #[prost(message, optional, tag = "1")]
1246 pub config: ::core::option::Option<FileSinkConfig>,
1247 #[prost(message, optional, tag = "2")]
1248 pub writer_options: ::core::option::Option<
1249 super::datafusion_common::JsonWriterOptions,
1250 >,
1251}
1252#[derive(Clone, PartialEq, ::prost::Message)]
1253pub struct JsonSinkExecNode {
1254 #[prost(message, optional, boxed, tag = "1")]
1255 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1256 #[prost(message, optional, tag = "2")]
1257 pub sink: ::core::option::Option<JsonSink>,
1258 #[prost(message, optional, tag = "3")]
1259 pub sink_schema: ::core::option::Option<super::datafusion_common::Schema>,
1260 #[prost(message, optional, tag = "4")]
1261 pub sort_order: ::core::option::Option<PhysicalSortExprNodeCollection>,
1262}
1263#[derive(Clone, PartialEq, ::prost::Message)]
1264pub struct CsvSink {
1265 #[prost(message, optional, tag = "1")]
1266 pub config: ::core::option::Option<FileSinkConfig>,
1267 #[prost(message, optional, tag = "2")]
1268 pub writer_options: ::core::option::Option<
1269 super::datafusion_common::CsvWriterOptions,
1270 >,
1271}
1272#[derive(Clone, PartialEq, ::prost::Message)]
1273pub struct CsvSinkExecNode {
1274 #[prost(message, optional, boxed, tag = "1")]
1275 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1276 #[prost(message, optional, tag = "2")]
1277 pub sink: ::core::option::Option<CsvSink>,
1278 #[prost(message, optional, tag = "3")]
1279 pub sink_schema: ::core::option::Option<super::datafusion_common::Schema>,
1280 #[prost(message, optional, tag = "4")]
1281 pub sort_order: ::core::option::Option<PhysicalSortExprNodeCollection>,
1282}
1283#[derive(Clone, PartialEq, ::prost::Message)]
1284pub struct ParquetSink {
1285 #[prost(message, optional, tag = "1")]
1286 pub config: ::core::option::Option<FileSinkConfig>,
1287 #[prost(message, optional, tag = "2")]
1288 pub parquet_options: ::core::option::Option<
1289 super::datafusion_common::TableParquetOptions,
1290 >,
1291}
1292#[derive(Clone, PartialEq, ::prost::Message)]
1293pub struct ParquetSinkExecNode {
1294 #[prost(message, optional, boxed, tag = "1")]
1295 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1296 #[prost(message, optional, tag = "2")]
1297 pub sink: ::core::option::Option<ParquetSink>,
1298 #[prost(message, optional, tag = "3")]
1299 pub sink_schema: ::core::option::Option<super::datafusion_common::Schema>,
1300 #[prost(message, optional, tag = "4")]
1301 pub sort_order: ::core::option::Option<PhysicalSortExprNodeCollection>,
1302}
1303#[derive(Clone, PartialEq, ::prost::Message)]
1304pub struct UnnestExecNode {
1305 #[prost(message, optional, boxed, tag = "1")]
1306 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1307 #[prost(message, optional, tag = "2")]
1308 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
1309 #[prost(message, repeated, tag = "3")]
1310 pub list_type_columns: ::prost::alloc::vec::Vec<ListUnnest>,
1311 #[prost(uint64, repeated, tag = "4")]
1312 pub struct_type_columns: ::prost::alloc::vec::Vec<u64>,
1313 #[prost(message, optional, tag = "5")]
1314 pub options: ::core::option::Option<UnnestOptions>,
1315}
1316#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1317pub struct ListUnnest {
1318 #[prost(uint32, tag = "1")]
1319 pub index_in_input_schema: u32,
1320 #[prost(uint32, tag = "2")]
1321 pub depth: u32,
1322}
1323#[derive(Clone, PartialEq, ::prost::Message)]
1324pub struct PhysicalExtensionNode {
1325 #[prost(bytes = "vec", tag = "1")]
1326 pub node: ::prost::alloc::vec::Vec<u8>,
1327 #[prost(message, repeated, tag = "2")]
1328 pub inputs: ::prost::alloc::vec::Vec<PhysicalPlanNode>,
1329}
1330#[derive(Clone, PartialEq, ::prost::Message)]
1332pub struct PhysicalExprNode {
1333 #[prost(uint64, optional, tag = "30")]
1338 pub expr_id: ::core::option::Option<u64>,
1339 #[prost(
1340 oneof = "physical_expr_node::ExprType",
1341 tags = "1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 18, 19, 20, 21, 22, 23"
1342 )]
1343 pub expr_type: ::core::option::Option<physical_expr_node::ExprType>,
1344}
1345pub mod physical_expr_node {
1347 #[derive(Clone, PartialEq, ::prost::Oneof)]
1348 pub enum ExprType {
1349 #[prost(message, tag = "1")]
1351 Column(super::PhysicalColumn),
1352 #[prost(message, tag = "2")]
1353 Literal(super::super::datafusion_common::ScalarValue),
1354 #[prost(message, tag = "3")]
1356 BinaryExpr(::prost::alloc::boxed::Box<super::PhysicalBinaryExprNode>),
1357 #[prost(message, tag = "4")]
1359 AggregateExpr(super::PhysicalAggregateExprNode),
1360 #[prost(message, tag = "5")]
1362 IsNullExpr(::prost::alloc::boxed::Box<super::PhysicalIsNull>),
1363 #[prost(message, tag = "6")]
1364 IsNotNullExpr(::prost::alloc::boxed::Box<super::PhysicalIsNotNull>),
1365 #[prost(message, tag = "7")]
1366 NotExpr(::prost::alloc::boxed::Box<super::PhysicalNot>),
1367 #[prost(message, tag = "8")]
1368 Case(::prost::alloc::boxed::Box<super::PhysicalCaseNode>),
1369 #[prost(message, tag = "9")]
1370 Cast(::prost::alloc::boxed::Box<super::PhysicalCastNode>),
1371 #[prost(message, tag = "10")]
1372 Sort(::prost::alloc::boxed::Box<super::PhysicalSortExprNode>),
1373 #[prost(message, tag = "11")]
1374 Negative(::prost::alloc::boxed::Box<super::PhysicalNegativeNode>),
1375 #[prost(message, tag = "12")]
1376 InList(::prost::alloc::boxed::Box<super::PhysicalInListNode>),
1377 #[prost(message, tag = "14")]
1379 TryCast(::prost::alloc::boxed::Box<super::PhysicalTryCastNode>),
1380 #[prost(message, tag = "15")]
1382 WindowExpr(super::PhysicalWindowExprNode),
1383 #[prost(message, tag = "16")]
1385 ScalarUdf(super::PhysicalScalarUdfNode),
1386 #[prost(message, tag = "18")]
1387 LikeExpr(::prost::alloc::boxed::Box<super::PhysicalLikeExprNode>),
1388 #[prost(message, tag = "19")]
1389 Extension(super::PhysicalExtensionExprNode),
1390 #[prost(message, tag = "20")]
1391 UnknownColumn(super::UnknownColumn),
1392 #[prost(message, tag = "21")]
1393 HashExpr(super::PhysicalHashExprNode),
1394 #[prost(message, tag = "22")]
1395 ScalarSubquery(super::PhysicalScalarSubqueryExprNode),
1396 #[prost(message, tag = "23")]
1397 DynamicFilter(::prost::alloc::boxed::Box<super::PhysicalDynamicFilterNode>),
1398 }
1399}
1400#[derive(Clone, PartialEq, ::prost::Message)]
1401pub struct PhysicalDynamicFilterNode {
1402 #[prost(message, repeated, tag = "1")]
1403 pub children: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1404 #[prost(message, repeated, tag = "2")]
1405 pub remapped_children: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1406 #[prost(uint64, tag = "3")]
1407 pub generation: u64,
1408 #[prost(message, optional, boxed, tag = "4")]
1409 pub inner_expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1410 #[prost(bool, tag = "5")]
1411 pub is_complete: bool,
1412}
1413#[derive(Clone, PartialEq, ::prost::Message)]
1414pub struct PhysicalScalarUdfNode {
1415 #[prost(string, tag = "1")]
1416 pub name: ::prost::alloc::string::String,
1417 #[prost(message, repeated, tag = "2")]
1418 pub args: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1419 #[prost(bytes = "vec", optional, tag = "3")]
1420 pub fun_definition: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1421 #[prost(message, optional, tag = "4")]
1422 pub return_type: ::core::option::Option<super::datafusion_common::ArrowType>,
1423 #[prost(bool, tag = "5")]
1424 pub nullable: bool,
1425 #[prost(string, tag = "6")]
1426 pub return_field_name: ::prost::alloc::string::String,
1427}
1428#[derive(Clone, PartialEq, ::prost::Message)]
1429pub struct PhysicalAggregateExprNode {
1430 #[prost(message, repeated, tag = "2")]
1431 pub expr: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1432 #[prost(message, repeated, tag = "5")]
1433 pub ordering_req: ::prost::alloc::vec::Vec<PhysicalSortExprNode>,
1434 #[prost(bool, tag = "3")]
1435 pub distinct: bool,
1436 #[prost(bool, tag = "6")]
1437 pub ignore_nulls: bool,
1438 #[prost(bytes = "vec", optional, tag = "7")]
1439 pub fun_definition: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1440 #[prost(string, tag = "8")]
1441 pub human_display: ::prost::alloc::string::String,
1442 #[prost(oneof = "physical_aggregate_expr_node::AggregateFunction", tags = "4")]
1443 pub aggregate_function: ::core::option::Option<
1444 physical_aggregate_expr_node::AggregateFunction,
1445 >,
1446}
1447pub mod physical_aggregate_expr_node {
1449 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
1450 pub enum AggregateFunction {
1451 #[prost(string, tag = "4")]
1452 UserDefinedAggrFunction(::prost::alloc::string::String),
1453 }
1454}
1455#[derive(Clone, PartialEq, ::prost::Message)]
1456pub struct PhysicalWindowExprNode {
1457 #[prost(message, repeated, tag = "4")]
1458 pub args: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1459 #[prost(message, repeated, tag = "5")]
1460 pub partition_by: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1461 #[prost(message, repeated, tag = "6")]
1462 pub order_by: ::prost::alloc::vec::Vec<PhysicalSortExprNode>,
1463 #[prost(message, optional, tag = "7")]
1464 pub window_frame: ::core::option::Option<WindowFrame>,
1465 #[prost(string, tag = "8")]
1466 pub name: ::prost::alloc::string::String,
1467 #[prost(bytes = "vec", optional, tag = "9")]
1468 pub fun_definition: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1469 #[prost(bool, tag = "11")]
1470 pub ignore_nulls: bool,
1471 #[prost(bool, tag = "12")]
1472 pub distinct: bool,
1473 #[prost(oneof = "physical_window_expr_node::WindowFunction", tags = "3, 10")]
1474 pub window_function: ::core::option::Option<
1475 physical_window_expr_node::WindowFunction,
1476 >,
1477}
1478pub mod physical_window_expr_node {
1480 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
1481 pub enum WindowFunction {
1482 #[prost(string, tag = "3")]
1484 UserDefinedAggrFunction(::prost::alloc::string::String),
1485 #[prost(string, tag = "10")]
1486 UserDefinedWindowFunction(::prost::alloc::string::String),
1487 }
1488}
1489#[derive(Clone, PartialEq, ::prost::Message)]
1490pub struct PhysicalIsNull {
1491 #[prost(message, optional, boxed, tag = "1")]
1492 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1493}
1494#[derive(Clone, PartialEq, ::prost::Message)]
1495pub struct PhysicalIsNotNull {
1496 #[prost(message, optional, boxed, tag = "1")]
1497 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1498}
1499#[derive(Clone, PartialEq, ::prost::Message)]
1500pub struct PhysicalNot {
1501 #[prost(message, optional, boxed, tag = "1")]
1502 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1503}
1504#[derive(Clone, PartialEq, ::prost::Message)]
1505pub struct PhysicalAliasNode {
1506 #[prost(message, optional, tag = "1")]
1507 pub expr: ::core::option::Option<PhysicalExprNode>,
1508 #[prost(string, tag = "2")]
1509 pub alias: ::prost::alloc::string::String,
1510}
1511#[derive(Clone, PartialEq, ::prost::Message)]
1512pub struct PhysicalBinaryExprNode {
1513 #[prost(message, optional, boxed, tag = "1")]
1514 pub l: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1515 #[prost(message, optional, boxed, tag = "2")]
1516 pub r: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1517 #[prost(string, tag = "3")]
1518 pub op: ::prost::alloc::string::String,
1519 #[prost(message, repeated, tag = "4")]
1522 pub operands: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1523}
1524#[derive(Clone, PartialEq, ::prost::Message)]
1525pub struct PhysicalDateTimeIntervalExprNode {
1526 #[prost(message, optional, tag = "1")]
1527 pub l: ::core::option::Option<PhysicalExprNode>,
1528 #[prost(message, optional, tag = "2")]
1529 pub r: ::core::option::Option<PhysicalExprNode>,
1530 #[prost(string, tag = "3")]
1531 pub op: ::prost::alloc::string::String,
1532}
1533#[derive(Clone, PartialEq, ::prost::Message)]
1534pub struct PhysicalLikeExprNode {
1535 #[prost(bool, tag = "1")]
1536 pub negated: bool,
1537 #[prost(bool, tag = "2")]
1538 pub case_insensitive: bool,
1539 #[prost(message, optional, boxed, tag = "3")]
1540 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1541 #[prost(message, optional, boxed, tag = "4")]
1542 pub pattern: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1543}
1544#[derive(Clone, PartialEq, ::prost::Message)]
1545pub struct PhysicalSortExprNode {
1546 #[prost(message, optional, boxed, tag = "1")]
1547 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1548 #[prost(bool, tag = "2")]
1549 pub asc: bool,
1550 #[prost(bool, tag = "3")]
1551 pub nulls_first: bool,
1552}
1553#[derive(Clone, PartialEq, ::prost::Message)]
1554pub struct PhysicalWhenThen {
1555 #[prost(message, optional, tag = "1")]
1556 pub when_expr: ::core::option::Option<PhysicalExprNode>,
1557 #[prost(message, optional, tag = "2")]
1558 pub then_expr: ::core::option::Option<PhysicalExprNode>,
1559}
1560#[derive(Clone, PartialEq, ::prost::Message)]
1561pub struct PhysicalInListNode {
1562 #[prost(message, optional, boxed, tag = "1")]
1563 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1564 #[prost(message, repeated, tag = "2")]
1565 pub list: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1566 #[prost(bool, tag = "3")]
1567 pub negated: bool,
1568}
1569#[derive(Clone, PartialEq, ::prost::Message)]
1570pub struct PhysicalCaseNode {
1571 #[prost(message, optional, boxed, tag = "1")]
1572 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1573 #[prost(message, repeated, tag = "2")]
1574 pub when_then_expr: ::prost::alloc::vec::Vec<PhysicalWhenThen>,
1575 #[prost(message, optional, boxed, tag = "3")]
1576 pub else_expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1577}
1578#[derive(Clone, PartialEq, ::prost::Message)]
1579pub struct PhysicalTryCastNode {
1580 #[prost(message, optional, boxed, tag = "1")]
1581 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1582 #[prost(message, optional, tag = "2")]
1583 pub arrow_type: ::core::option::Option<super::datafusion_common::ArrowType>,
1584}
1585#[derive(Clone, PartialEq, ::prost::Message)]
1586pub struct PhysicalCastNode {
1587 #[prost(message, optional, boxed, tag = "1")]
1588 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1589 #[prost(message, optional, tag = "2")]
1590 pub arrow_type: ::core::option::Option<super::datafusion_common::ArrowType>,
1591}
1592#[derive(Clone, PartialEq, ::prost::Message)]
1593pub struct PhysicalNegativeNode {
1594 #[prost(message, optional, boxed, tag = "1")]
1595 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1596}
1597#[derive(Clone, PartialEq, ::prost::Message)]
1598pub struct PhysicalExtensionExprNode {
1599 #[prost(bytes = "vec", tag = "1")]
1600 pub expr: ::prost::alloc::vec::Vec<u8>,
1601 #[prost(message, repeated, tag = "2")]
1602 pub inputs: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1603}
1604#[derive(Clone, PartialEq, ::prost::Message)]
1605pub struct PhysicalHashExprNode {
1606 #[prost(message, repeated, tag = "1")]
1607 pub on_columns: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1608 #[prost(uint64, tag = "2")]
1609 pub seed0: u64,
1610 #[prost(string, tag = "6")]
1611 pub description: ::prost::alloc::string::String,
1612}
1613#[derive(Clone, PartialEq, ::prost::Message)]
1614pub struct FilterExecNode {
1615 #[prost(message, optional, boxed, tag = "1")]
1616 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1617 #[prost(message, optional, tag = "2")]
1618 pub expr: ::core::option::Option<PhysicalExprNode>,
1619 #[prost(uint32, tag = "3")]
1620 pub default_filter_selectivity: u32,
1621 #[prost(uint32, repeated, tag = "9")]
1622 pub projection: ::prost::alloc::vec::Vec<u32>,
1623 #[prost(uint32, tag = "10")]
1624 pub batch_size: u32,
1625 #[prost(uint32, optional, tag = "11")]
1626 pub fetch: ::core::option::Option<u32>,
1627}
1628#[derive(Clone, PartialEq, ::prost::Message)]
1629pub struct FileGroup {
1630 #[prost(message, repeated, tag = "1")]
1631 pub files: ::prost::alloc::vec::Vec<PartitionedFile>,
1632}
1633#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1634pub struct ScanLimit {
1635 #[prost(uint32, tag = "1")]
1637 pub limit: u32,
1638}
1639#[derive(Clone, PartialEq, ::prost::Message)]
1640pub struct PhysicalSortExprNodeCollection {
1641 #[prost(message, repeated, tag = "1")]
1642 pub physical_sort_expr_nodes: ::prost::alloc::vec::Vec<PhysicalSortExprNode>,
1643}
1644#[derive(Clone, PartialEq, ::prost::Message)]
1645pub struct ProjectionExpr {
1646 #[prost(string, tag = "1")]
1647 pub alias: ::prost::alloc::string::String,
1648 #[prost(message, optional, tag = "2")]
1649 pub expr: ::core::option::Option<PhysicalExprNode>,
1650}
1651#[derive(Clone, PartialEq, ::prost::Message)]
1652pub struct ProjectionExprs {
1653 #[prost(message, repeated, tag = "1")]
1654 pub projections: ::prost::alloc::vec::Vec<ProjectionExpr>,
1655}
1656#[derive(Clone, PartialEq, ::prost::Message)]
1657pub struct FileScanExecConf {
1658 #[prost(message, repeated, tag = "1")]
1659 pub file_groups: ::prost::alloc::vec::Vec<FileGroup>,
1660 #[prost(message, optional, tag = "2")]
1661 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
1662 #[prost(uint32, repeated, tag = "4")]
1663 pub projection: ::prost::alloc::vec::Vec<u32>,
1664 #[prost(message, optional, tag = "5")]
1665 pub limit: ::core::option::Option<ScanLimit>,
1666 #[prost(message, optional, tag = "6")]
1667 pub statistics: ::core::option::Option<super::datafusion_common::Statistics>,
1668 #[prost(string, repeated, tag = "7")]
1669 pub table_partition_cols: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1670 #[prost(string, tag = "8")]
1671 pub object_store_url: ::prost::alloc::string::String,
1672 #[prost(message, repeated, tag = "9")]
1673 pub output_ordering: ::prost::alloc::vec::Vec<PhysicalSortExprNodeCollection>,
1674 #[prost(message, optional, tag = "11")]
1675 pub constraints: ::core::option::Option<super::datafusion_common::Constraints>,
1676 #[prost(uint64, optional, tag = "12")]
1677 pub batch_size: ::core::option::Option<u64>,
1678 #[prost(message, optional, tag = "13")]
1679 pub projection_exprs: ::core::option::Option<ProjectionExprs>,
1680}
1681#[derive(Clone, PartialEq, ::prost::Message)]
1682pub struct ParquetScanExecNode {
1683 #[prost(message, optional, tag = "1")]
1684 pub base_conf: ::core::option::Option<FileScanExecConf>,
1685 #[prost(message, optional, tag = "3")]
1686 pub predicate: ::core::option::Option<PhysicalExprNode>,
1687 #[prost(message, optional, tag = "4")]
1688 pub parquet_options: ::core::option::Option<
1689 super::datafusion_common::TableParquetOptions,
1690 >,
1691}
1692#[derive(Clone, PartialEq, ::prost::Message)]
1693pub struct CsvScanExecNode {
1694 #[prost(message, optional, tag = "1")]
1695 pub base_conf: ::core::option::Option<FileScanExecConf>,
1696 #[prost(bool, tag = "2")]
1697 pub has_header: bool,
1698 #[prost(string, tag = "3")]
1699 pub delimiter: ::prost::alloc::string::String,
1700 #[prost(string, tag = "4")]
1701 pub quote: ::prost::alloc::string::String,
1702 #[prost(bool, tag = "7")]
1703 pub newlines_in_values: bool,
1704 #[prost(bool, tag = "8")]
1705 pub truncate_rows: bool,
1706 #[prost(oneof = "csv_scan_exec_node::OptionalEscape", tags = "5")]
1707 pub optional_escape: ::core::option::Option<csv_scan_exec_node::OptionalEscape>,
1708 #[prost(oneof = "csv_scan_exec_node::OptionalComment", tags = "6")]
1709 pub optional_comment: ::core::option::Option<csv_scan_exec_node::OptionalComment>,
1710}
1711pub mod csv_scan_exec_node {
1713 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
1714 pub enum OptionalEscape {
1715 #[prost(string, tag = "5")]
1716 Escape(::prost::alloc::string::String),
1717 }
1718 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
1719 pub enum OptionalComment {
1720 #[prost(string, tag = "6")]
1721 Comment(::prost::alloc::string::String),
1722 }
1723}
1724#[derive(Clone, PartialEq, ::prost::Message)]
1725pub struct JsonScanExecNode {
1726 #[prost(message, optional, tag = "1")]
1727 pub base_conf: ::core::option::Option<FileScanExecConf>,
1728}
1729#[derive(Clone, PartialEq, ::prost::Message)]
1730pub struct AvroScanExecNode {
1731 #[prost(message, optional, tag = "1")]
1732 pub base_conf: ::core::option::Option<FileScanExecConf>,
1733}
1734#[derive(Clone, PartialEq, ::prost::Message)]
1735pub struct ArrowScanExecNode {
1736 #[prost(message, optional, tag = "1")]
1737 pub base_conf: ::core::option::Option<FileScanExecConf>,
1738}
1739#[derive(Clone, PartialEq, ::prost::Message)]
1740pub struct MemoryScanExecNode {
1741 #[prost(bytes = "vec", repeated, tag = "1")]
1742 pub partitions: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
1743 #[prost(message, optional, tag = "2")]
1744 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
1745 #[prost(uint32, repeated, tag = "3")]
1746 pub projection: ::prost::alloc::vec::Vec<u32>,
1747 #[prost(message, repeated, tag = "4")]
1748 pub sort_information: ::prost::alloc::vec::Vec<PhysicalSortExprNodeCollection>,
1749 #[prost(bool, tag = "5")]
1750 pub show_sizes: bool,
1751 #[prost(uint32, optional, tag = "6")]
1752 pub fetch: ::core::option::Option<u32>,
1753}
1754#[derive(Clone, PartialEq, ::prost::Message)]
1755pub struct CooperativeExecNode {
1756 #[prost(message, optional, boxed, tag = "1")]
1757 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1758}
1759#[derive(Clone, PartialEq, ::prost::Message)]
1760pub struct HashJoinExecNode {
1761 #[prost(message, optional, boxed, tag = "1")]
1762 pub left: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1763 #[prost(message, optional, boxed, tag = "2")]
1764 pub right: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1765 #[prost(message, repeated, tag = "3")]
1766 pub on: ::prost::alloc::vec::Vec<JoinOn>,
1767 #[prost(enumeration = "super::datafusion_common::JoinType", tag = "4")]
1768 pub join_type: i32,
1769 #[prost(enumeration = "PartitionMode", tag = "6")]
1770 pub partition_mode: i32,
1771 #[prost(enumeration = "super::datafusion_common::NullEquality", tag = "7")]
1772 pub null_equality: i32,
1773 #[prost(message, optional, tag = "8")]
1774 pub filter: ::core::option::Option<JoinFilter>,
1775 #[prost(uint32, repeated, tag = "9")]
1776 pub projection: ::prost::alloc::vec::Vec<u32>,
1777 #[prost(bool, tag = "10")]
1778 pub null_aware: bool,
1779 #[prost(message, optional, tag = "11")]
1781 pub dynamic_filter: ::core::option::Option<PhysicalExprNode>,
1782}
1783#[derive(Clone, PartialEq, ::prost::Message)]
1784pub struct SymmetricHashJoinExecNode {
1785 #[prost(message, optional, boxed, tag = "1")]
1786 pub left: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1787 #[prost(message, optional, boxed, tag = "2")]
1788 pub right: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1789 #[prost(message, repeated, tag = "3")]
1790 pub on: ::prost::alloc::vec::Vec<JoinOn>,
1791 #[prost(enumeration = "super::datafusion_common::JoinType", tag = "4")]
1792 pub join_type: i32,
1793 #[prost(enumeration = "StreamPartitionMode", tag = "6")]
1794 pub partition_mode: i32,
1795 #[prost(enumeration = "super::datafusion_common::NullEquality", tag = "7")]
1796 pub null_equality: i32,
1797 #[prost(message, optional, tag = "8")]
1798 pub filter: ::core::option::Option<JoinFilter>,
1799 #[prost(message, repeated, tag = "9")]
1800 pub left_sort_exprs: ::prost::alloc::vec::Vec<PhysicalSortExprNode>,
1801 #[prost(message, repeated, tag = "10")]
1802 pub right_sort_exprs: ::prost::alloc::vec::Vec<PhysicalSortExprNode>,
1803}
1804#[derive(Clone, PartialEq, ::prost::Message)]
1805pub struct InterleaveExecNode {
1806 #[prost(message, repeated, tag = "1")]
1807 pub inputs: ::prost::alloc::vec::Vec<PhysicalPlanNode>,
1808}
1809#[derive(Clone, PartialEq, ::prost::Message)]
1810pub struct UnionExecNode {
1811 #[prost(message, repeated, tag = "1")]
1812 pub inputs: ::prost::alloc::vec::Vec<PhysicalPlanNode>,
1813}
1814#[derive(Clone, PartialEq, ::prost::Message)]
1815pub struct ExplainExecNode {
1816 #[prost(message, optional, tag = "1")]
1817 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
1818 #[prost(message, repeated, tag = "2")]
1819 pub stringified_plans: ::prost::alloc::vec::Vec<StringifiedPlan>,
1820 #[prost(bool, tag = "3")]
1821 pub verbose: bool,
1822}
1823#[derive(Clone, PartialEq, ::prost::Message)]
1824pub struct AnalyzeExecNode {
1825 #[prost(bool, tag = "1")]
1826 pub verbose: bool,
1827 #[prost(bool, tag = "2")]
1828 pub show_statistics: bool,
1829 #[prost(message, optional, boxed, tag = "3")]
1830 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1831 #[prost(message, optional, tag = "4")]
1832 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
1833 #[prost(bool, tag = "5")]
1836 pub has_metric_categories: bool,
1837 #[prost(string, repeated, tag = "6")]
1838 pub metric_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1839}
1840#[derive(Clone, PartialEq, ::prost::Message)]
1841pub struct CrossJoinExecNode {
1842 #[prost(message, optional, boxed, tag = "1")]
1843 pub left: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1844 #[prost(message, optional, boxed, tag = "2")]
1845 pub right: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1846}
1847#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1848pub struct PhysicalColumn {
1849 #[prost(string, tag = "1")]
1850 pub name: ::prost::alloc::string::String,
1851 #[prost(uint32, tag = "2")]
1852 pub index: u32,
1853}
1854#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1855pub struct UnknownColumn {
1856 #[prost(string, tag = "1")]
1857 pub name: ::prost::alloc::string::String,
1858}
1859#[derive(Clone, PartialEq, ::prost::Message)]
1860pub struct JoinOn {
1861 #[prost(message, optional, tag = "1")]
1862 pub left: ::core::option::Option<PhysicalExprNode>,
1863 #[prost(message, optional, tag = "2")]
1864 pub right: ::core::option::Option<PhysicalExprNode>,
1865}
1866#[derive(Clone, PartialEq, ::prost::Message)]
1867pub struct EmptyExecNode {
1868 #[prost(message, optional, tag = "1")]
1869 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
1870}
1871#[derive(Clone, PartialEq, ::prost::Message)]
1872pub struct PlaceholderRowExecNode {
1873 #[prost(message, optional, tag = "1")]
1874 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
1875}
1876#[derive(Clone, PartialEq, ::prost::Message)]
1877pub struct ProjectionExecNode {
1878 #[prost(message, optional, boxed, tag = "1")]
1879 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1880 #[prost(message, repeated, tag = "2")]
1881 pub expr: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1882 #[prost(string, repeated, tag = "3")]
1883 pub expr_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1884}
1885#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1886pub struct PartiallySortedInputOrderMode {
1887 #[prost(uint64, repeated, tag = "6")]
1888 pub columns: ::prost::alloc::vec::Vec<u64>,
1889}
1890#[derive(Clone, PartialEq, ::prost::Message)]
1891pub struct WindowAggExecNode {
1892 #[prost(message, optional, boxed, tag = "1")]
1893 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1894 #[prost(message, repeated, tag = "2")]
1895 pub window_expr: ::prost::alloc::vec::Vec<PhysicalWindowExprNode>,
1896 #[prost(message, repeated, tag = "5")]
1897 pub partition_keys: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1898 #[prost(oneof = "window_agg_exec_node::InputOrderMode", tags = "7, 8, 9")]
1900 pub input_order_mode: ::core::option::Option<window_agg_exec_node::InputOrderMode>,
1901}
1902pub mod window_agg_exec_node {
1904 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
1906 pub enum InputOrderMode {
1907 #[prost(message, tag = "7")]
1908 Linear(super::super::datafusion_common::EmptyMessage),
1909 #[prost(message, tag = "8")]
1910 PartiallySorted(super::PartiallySortedInputOrderMode),
1911 #[prost(message, tag = "9")]
1912 Sorted(super::super::datafusion_common::EmptyMessage),
1913 }
1914}
1915#[derive(Clone, PartialEq, ::prost::Message)]
1916pub struct MaybeFilter {
1917 #[prost(message, optional, tag = "1")]
1918 pub expr: ::core::option::Option<PhysicalExprNode>,
1919}
1920#[derive(Clone, PartialEq, ::prost::Message)]
1921pub struct MaybePhysicalSortExprs {
1922 #[prost(message, repeated, tag = "1")]
1923 pub sort_expr: ::prost::alloc::vec::Vec<PhysicalSortExprNode>,
1924}
1925#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1926pub struct AggLimit {
1927 #[prost(uint64, tag = "1")]
1929 pub limit: u64,
1930 #[prost(bool, optional, tag = "2")]
1932 pub descending: ::core::option::Option<bool>,
1933}
1934#[derive(Clone, PartialEq, ::prost::Message)]
1935pub struct AggregateExecNode {
1936 #[prost(message, repeated, tag = "1")]
1937 pub group_expr: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1938 #[prost(message, repeated, tag = "2")]
1939 pub aggr_expr: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1940 #[prost(enumeration = "AggregateMode", tag = "3")]
1941 pub mode: i32,
1942 #[prost(message, optional, boxed, tag = "4")]
1943 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1944 #[prost(string, repeated, tag = "5")]
1945 pub group_expr_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1946 #[prost(string, repeated, tag = "6")]
1947 pub aggr_expr_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1948 #[prost(message, optional, tag = "7")]
1950 pub input_schema: ::core::option::Option<super::datafusion_common::Schema>,
1951 #[prost(message, repeated, tag = "8")]
1952 pub null_expr: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1953 #[prost(bool, repeated, tag = "9")]
1954 pub groups: ::prost::alloc::vec::Vec<bool>,
1955 #[prost(message, repeated, tag = "10")]
1956 pub filter_expr: ::prost::alloc::vec::Vec<MaybeFilter>,
1957 #[prost(message, optional, tag = "11")]
1958 pub limit: ::core::option::Option<AggLimit>,
1959 #[prost(bool, tag = "12")]
1960 pub has_grouping_set: bool,
1961 #[prost(message, optional, tag = "13")]
1963 pub dynamic_filter: ::core::option::Option<PhysicalExprNode>,
1964}
1965#[derive(Clone, PartialEq, ::prost::Message)]
1966pub struct GlobalLimitExecNode {
1967 #[prost(message, optional, boxed, tag = "1")]
1968 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1969 #[prost(uint32, tag = "2")]
1971 pub skip: u32,
1972 #[prost(int64, tag = "3")]
1974 pub fetch: i64,
1975}
1976#[derive(Clone, PartialEq, ::prost::Message)]
1977pub struct LocalLimitExecNode {
1978 #[prost(message, optional, boxed, tag = "1")]
1979 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1980 #[prost(uint32, tag = "2")]
1981 pub fetch: u32,
1982}
1983#[derive(Clone, PartialEq, ::prost::Message)]
1984pub struct SortExecNode {
1985 #[prost(message, optional, boxed, tag = "1")]
1986 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1987 #[prost(message, repeated, tag = "2")]
1988 pub expr: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1989 #[prost(int64, tag = "3")]
1991 pub fetch: i64,
1992 #[prost(bool, tag = "4")]
1993 pub preserve_partitioning: bool,
1994 #[prost(message, optional, tag = "5")]
1996 pub dynamic_filter: ::core::option::Option<PhysicalExprNode>,
1997}
1998#[derive(Clone, PartialEq, ::prost::Message)]
1999pub struct SortPreservingMergeExecNode {
2000 #[prost(message, optional, boxed, tag = "1")]
2001 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
2002 #[prost(message, repeated, tag = "2")]
2003 pub expr: ::prost::alloc::vec::Vec<PhysicalExprNode>,
2004 #[prost(int64, tag = "3")]
2006 pub fetch: i64,
2007}
2008#[derive(Clone, PartialEq, ::prost::Message)]
2009pub struct NestedLoopJoinExecNode {
2010 #[prost(message, optional, boxed, tag = "1")]
2011 pub left: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
2012 #[prost(message, optional, boxed, tag = "2")]
2013 pub right: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
2014 #[prost(enumeration = "super::datafusion_common::JoinType", tag = "3")]
2015 pub join_type: i32,
2016 #[prost(message, optional, tag = "4")]
2017 pub filter: ::core::option::Option<JoinFilter>,
2018 #[prost(uint32, repeated, tag = "5")]
2019 pub projection: ::prost::alloc::vec::Vec<u32>,
2020}
2021#[derive(Clone, PartialEq, ::prost::Message)]
2022pub struct CoalesceBatchesExecNode {
2023 #[prost(message, optional, boxed, tag = "1")]
2024 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
2025 #[prost(uint32, tag = "2")]
2026 pub target_batch_size: u32,
2027 #[prost(uint32, optional, tag = "3")]
2028 pub fetch: ::core::option::Option<u32>,
2029}
2030#[derive(Clone, PartialEq, ::prost::Message)]
2031pub struct CoalescePartitionsExecNode {
2032 #[prost(message, optional, boxed, tag = "1")]
2033 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
2034 #[prost(uint32, optional, tag = "2")]
2035 pub fetch: ::core::option::Option<u32>,
2036}
2037#[derive(Clone, PartialEq, ::prost::Message)]
2038pub struct PhysicalHashRepartition {
2039 #[prost(message, repeated, tag = "1")]
2040 pub hash_expr: ::prost::alloc::vec::Vec<PhysicalExprNode>,
2041 #[prost(uint64, tag = "2")]
2042 pub partition_count: u64,
2043}
2044#[derive(Clone, PartialEq, ::prost::Message)]
2045pub struct RepartitionExecNode {
2046 #[prost(message, optional, boxed, tag = "1")]
2047 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
2048 #[prost(message, optional, tag = "5")]
2054 pub partitioning: ::core::option::Option<Partitioning>,
2055 #[prost(bool, tag = "6")]
2056 pub preserve_order: bool,
2057}
2058#[derive(Clone, PartialEq, ::prost::Message)]
2059pub struct Partitioning {
2060 #[prost(oneof = "partitioning::PartitionMethod", tags = "1, 2, 3")]
2061 pub partition_method: ::core::option::Option<partitioning::PartitionMethod>,
2062}
2063pub mod partitioning {
2065 #[derive(Clone, PartialEq, ::prost::Oneof)]
2066 pub enum PartitionMethod {
2067 #[prost(uint64, tag = "1")]
2068 RoundRobin(u64),
2069 #[prost(message, tag = "2")]
2070 Hash(super::PhysicalHashRepartition),
2071 #[prost(uint64, tag = "3")]
2072 Unknown(u64),
2073 }
2074}
2075#[derive(Clone, PartialEq, ::prost::Message)]
2076pub struct JoinFilter {
2077 #[prost(message, optional, tag = "1")]
2078 pub expression: ::core::option::Option<PhysicalExprNode>,
2079 #[prost(message, repeated, tag = "2")]
2080 pub column_indices: ::prost::alloc::vec::Vec<ColumnIndex>,
2081 #[prost(message, optional, tag = "3")]
2082 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
2083}
2084#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2085pub struct ColumnIndex {
2086 #[prost(uint32, tag = "1")]
2087 pub index: u32,
2088 #[prost(enumeration = "super::datafusion_common::JoinSide", tag = "2")]
2089 pub side: i32,
2090}
2091#[derive(Clone, PartialEq, ::prost::Message)]
2092pub struct PartitionedFile {
2093 #[prost(string, tag = "1")]
2094 pub path: ::prost::alloc::string::String,
2095 #[prost(uint64, tag = "2")]
2096 pub size: u64,
2097 #[prost(uint64, tag = "3")]
2098 pub last_modified_ns: u64,
2099 #[prost(message, repeated, tag = "4")]
2100 pub partition_values: ::prost::alloc::vec::Vec<
2101 super::datafusion_common::ScalarValue,
2102 >,
2103 #[prost(message, optional, tag = "5")]
2104 pub range: ::core::option::Option<FileRange>,
2105 #[prost(message, optional, tag = "6")]
2106 pub statistics: ::core::option::Option<super::datafusion_common::Statistics>,
2107}
2108#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2109pub struct FileRange {
2110 #[prost(int64, tag = "1")]
2111 pub start: i64,
2112 #[prost(int64, tag = "2")]
2113 pub end: i64,
2114}
2115#[derive(Clone, PartialEq, ::prost::Message)]
2116pub struct PartitionStats {
2117 #[prost(int64, tag = "1")]
2118 pub num_rows: i64,
2119 #[prost(int64, tag = "2")]
2120 pub num_batches: i64,
2121 #[prost(int64, tag = "3")]
2122 pub num_bytes: i64,
2123 #[prost(message, repeated, tag = "4")]
2124 pub column_stats: ::prost::alloc::vec::Vec<super::datafusion_common::ColumnStats>,
2125}
2126#[derive(Clone, PartialEq, ::prost::Message)]
2127pub struct RecursiveQueryNode {
2128 #[prost(string, tag = "1")]
2129 pub name: ::prost::alloc::string::String,
2130 #[prost(message, optional, boxed, tag = "2")]
2131 pub static_term: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
2132 #[prost(message, optional, boxed, tag = "3")]
2133 pub recursive_term: ::core::option::Option<
2134 ::prost::alloc::boxed::Box<LogicalPlanNode>,
2135 >,
2136 #[prost(bool, tag = "4")]
2137 pub is_distinct: bool,
2138}
2139#[derive(Clone, PartialEq, ::prost::Message)]
2140pub struct CteWorkTableScanNode {
2141 #[prost(string, tag = "1")]
2142 pub name: ::prost::alloc::string::String,
2143 #[prost(message, optional, tag = "2")]
2144 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
2145}
2146#[derive(Clone, PartialEq, ::prost::Message)]
2147pub struct EmptyTableScanNode {
2148 #[prost(message, optional, tag = "1")]
2149 pub table_name: ::core::option::Option<TableReference>,
2150 #[prost(message, optional, tag = "2")]
2151 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
2152 #[prost(message, optional, tag = "3")]
2153 pub projection: ::core::option::Option<ProjectionColumns>,
2154 #[prost(message, repeated, tag = "4")]
2155 pub filters: ::prost::alloc::vec::Vec<LogicalExprNode>,
2156}
2157#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2158pub struct GenerateSeriesArgsContainsNull {
2159 #[prost(enumeration = "GenerateSeriesName", tag = "1")]
2160 pub name: i32,
2161}
2162#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2163pub struct GenerateSeriesArgsInt64 {
2164 #[prost(int64, tag = "1")]
2165 pub start: i64,
2166 #[prost(int64, tag = "2")]
2167 pub end: i64,
2168 #[prost(int64, tag = "3")]
2169 pub step: i64,
2170 #[prost(bool, tag = "4")]
2171 pub include_end: bool,
2172 #[prost(enumeration = "GenerateSeriesName", tag = "5")]
2173 pub name: i32,
2174}
2175#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2176pub struct GenerateSeriesArgsTimestamp {
2177 #[prost(int64, tag = "1")]
2178 pub start: i64,
2179 #[prost(int64, tag = "2")]
2180 pub end: i64,
2181 #[prost(message, optional, tag = "3")]
2182 pub step: ::core::option::Option<
2183 super::datafusion_common::IntervalMonthDayNanoValue,
2184 >,
2185 #[prost(string, optional, tag = "4")]
2186 pub tz: ::core::option::Option<::prost::alloc::string::String>,
2187 #[prost(bool, tag = "5")]
2188 pub include_end: bool,
2189 #[prost(enumeration = "GenerateSeriesName", tag = "6")]
2190 pub name: i32,
2191}
2192#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2193pub struct GenerateSeriesArgsDate {
2194 #[prost(int64, tag = "1")]
2195 pub start: i64,
2196 #[prost(int64, tag = "2")]
2197 pub end: i64,
2198 #[prost(message, optional, tag = "3")]
2199 pub step: ::core::option::Option<
2200 super::datafusion_common::IntervalMonthDayNanoValue,
2201 >,
2202 #[prost(bool, tag = "4")]
2203 pub include_end: bool,
2204 #[prost(enumeration = "GenerateSeriesName", tag = "5")]
2205 pub name: i32,
2206}
2207#[derive(Clone, PartialEq, ::prost::Message)]
2208pub struct GenerateSeriesNode {
2209 #[prost(message, optional, tag = "1")]
2210 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
2211 #[prost(uint32, tag = "2")]
2212 pub target_batch_size: u32,
2213 #[prost(oneof = "generate_series_node::Args", tags = "3, 4, 5, 6")]
2214 pub args: ::core::option::Option<generate_series_node::Args>,
2215}
2216pub mod generate_series_node {
2218 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
2219 pub enum Args {
2220 #[prost(message, tag = "3")]
2221 ContainsNull(super::GenerateSeriesArgsContainsNull),
2222 #[prost(message, tag = "4")]
2223 Int64Args(super::GenerateSeriesArgsInt64),
2224 #[prost(message, tag = "5")]
2225 TimestampArgs(super::GenerateSeriesArgsTimestamp),
2226 #[prost(message, tag = "6")]
2227 DateArgs(super::GenerateSeriesArgsDate),
2228 }
2229}
2230#[derive(Clone, PartialEq, ::prost::Message)]
2231pub struct SortMergeJoinExecNode {
2232 #[prost(message, optional, boxed, tag = "1")]
2233 pub left: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
2234 #[prost(message, optional, boxed, tag = "2")]
2235 pub right: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
2236 #[prost(message, repeated, tag = "3")]
2237 pub on: ::prost::alloc::vec::Vec<JoinOn>,
2238 #[prost(enumeration = "super::datafusion_common::JoinType", tag = "4")]
2239 pub join_type: i32,
2240 #[prost(message, optional, tag = "5")]
2241 pub filter: ::core::option::Option<JoinFilter>,
2242 #[prost(message, repeated, tag = "6")]
2243 pub sort_options: ::prost::alloc::vec::Vec<SortExprNode>,
2244 #[prost(enumeration = "super::datafusion_common::NullEquality", tag = "7")]
2245 pub null_equality: i32,
2246}
2247#[derive(Clone, PartialEq, ::prost::Message)]
2248pub struct AsyncFuncExecNode {
2249 #[prost(message, optional, boxed, tag = "1")]
2250 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
2251 #[prost(message, repeated, tag = "2")]
2252 pub async_exprs: ::prost::alloc::vec::Vec<PhysicalExprNode>,
2253 #[prost(string, repeated, tag = "3")]
2254 pub async_expr_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2255}
2256#[derive(Clone, PartialEq, ::prost::Message)]
2257pub struct BufferExecNode {
2258 #[prost(message, optional, boxed, tag = "1")]
2259 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
2260 #[prost(uint64, tag = "2")]
2261 pub capacity: u64,
2262}
2263#[derive(Clone, PartialEq, ::prost::Message)]
2264pub struct ScalarSubqueryExecNode {
2265 #[prost(message, optional, boxed, tag = "1")]
2266 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
2267 #[prost(message, repeated, tag = "2")]
2268 pub subqueries: ::prost::alloc::vec::Vec<PhysicalPlanNode>,
2269}
2270#[derive(Clone, PartialEq, ::prost::Message)]
2271pub struct PhysicalScalarSubqueryExprNode {
2272 #[prost(message, optional, tag = "1")]
2273 pub data_type: ::core::option::Option<super::datafusion_common::ArrowType>,
2274 #[prost(bool, tag = "2")]
2275 pub nullable: bool,
2276 #[prost(uint32, tag = "3")]
2277 pub index: u32,
2278}
2279#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2283#[repr(i32)]
2284pub enum FileFormatKind {
2285 Unspecified = 0,
2286 Csv = 1,
2287 Json = 2,
2288 Parquet = 3,
2289 Arrow = 4,
2290 Avro = 5,
2291}
2292impl FileFormatKind {
2293 pub fn as_str_name(&self) -> &'static str {
2298 match self {
2299 Self::Unspecified => "FILE_FORMAT_KIND_UNSPECIFIED",
2300 Self::Csv => "FILE_FORMAT_KIND_CSV",
2301 Self::Json => "FILE_FORMAT_KIND_JSON",
2302 Self::Parquet => "FILE_FORMAT_KIND_PARQUET",
2303 Self::Arrow => "FILE_FORMAT_KIND_ARROW",
2304 Self::Avro => "FILE_FORMAT_KIND_AVRO",
2305 }
2306 }
2307 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2309 match value {
2310 "FILE_FORMAT_KIND_UNSPECIFIED" => Some(Self::Unspecified),
2311 "FILE_FORMAT_KIND_CSV" => Some(Self::Csv),
2312 "FILE_FORMAT_KIND_JSON" => Some(Self::Json),
2313 "FILE_FORMAT_KIND_PARQUET" => Some(Self::Parquet),
2314 "FILE_FORMAT_KIND_ARROW" => Some(Self::Arrow),
2315 "FILE_FORMAT_KIND_AVRO" => Some(Self::Avro),
2316 _ => None,
2317 }
2318 }
2319}
2320#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2321#[repr(i32)]
2322pub enum WindowFrameUnits {
2323 Rows = 0,
2324 Range = 1,
2325 Groups = 2,
2326}
2327impl WindowFrameUnits {
2328 pub fn as_str_name(&self) -> &'static str {
2333 match self {
2334 Self::Rows => "ROWS",
2335 Self::Range => "RANGE",
2336 Self::Groups => "GROUPS",
2337 }
2338 }
2339 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2341 match value {
2342 "ROWS" => Some(Self::Rows),
2343 "RANGE" => Some(Self::Range),
2344 "GROUPS" => Some(Self::Groups),
2345 _ => None,
2346 }
2347 }
2348}
2349#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2350#[repr(i32)]
2351pub enum WindowFrameBoundType {
2352 CurrentRow = 0,
2353 Preceding = 1,
2354 Following = 2,
2355}
2356impl WindowFrameBoundType {
2357 pub fn as_str_name(&self) -> &'static str {
2362 match self {
2363 Self::CurrentRow => "CURRENT_ROW",
2364 Self::Preceding => "PRECEDING",
2365 Self::Following => "FOLLOWING",
2366 }
2367 }
2368 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2370 match value {
2371 "CURRENT_ROW" => Some(Self::CurrentRow),
2372 "PRECEDING" => Some(Self::Preceding),
2373 "FOLLOWING" => Some(Self::Following),
2374 _ => None,
2375 }
2376 }
2377}
2378#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2379#[repr(i32)]
2380pub enum NullTreatment {
2381 RespectNulls = 0,
2382 IgnoreNulls = 1,
2383}
2384impl NullTreatment {
2385 pub fn as_str_name(&self) -> &'static str {
2390 match self {
2391 Self::RespectNulls => "RESPECT_NULLS",
2392 Self::IgnoreNulls => "IGNORE_NULLS",
2393 }
2394 }
2395 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2397 match value {
2398 "RESPECT_NULLS" => Some(Self::RespectNulls),
2399 "IGNORE_NULLS" => Some(Self::IgnoreNulls),
2400 _ => None,
2401 }
2402 }
2403}
2404#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2405#[repr(i32)]
2406pub enum DateUnit {
2407 Day = 0,
2408 DateMillisecond = 1,
2409}
2410impl DateUnit {
2411 pub fn as_str_name(&self) -> &'static str {
2416 match self {
2417 Self::Day => "Day",
2418 Self::DateMillisecond => "DateMillisecond",
2419 }
2420 }
2421 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2423 match value {
2424 "Day" => Some(Self::Day),
2425 "DateMillisecond" => Some(Self::DateMillisecond),
2426 _ => None,
2427 }
2428 }
2429}
2430#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2432#[repr(i32)]
2433pub enum FileOutputMode {
2434 Automatic = 0,
2436 SingleFile = 1,
2438 Directory = 2,
2440}
2441impl FileOutputMode {
2442 pub fn as_str_name(&self) -> &'static str {
2447 match self {
2448 Self::Automatic => "FILE_OUTPUT_MODE_AUTOMATIC",
2449 Self::SingleFile => "FILE_OUTPUT_MODE_SINGLE_FILE",
2450 Self::Directory => "FILE_OUTPUT_MODE_DIRECTORY",
2451 }
2452 }
2453 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2455 match value {
2456 "FILE_OUTPUT_MODE_AUTOMATIC" => Some(Self::Automatic),
2457 "FILE_OUTPUT_MODE_SINGLE_FILE" => Some(Self::SingleFile),
2458 "FILE_OUTPUT_MODE_DIRECTORY" => Some(Self::Directory),
2459 _ => None,
2460 }
2461 }
2462}
2463#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2464#[repr(i32)]
2465pub enum InsertOp {
2466 Append = 0,
2467 Overwrite = 1,
2468 Replace = 2,
2469}
2470impl InsertOp {
2471 pub fn as_str_name(&self) -> &'static str {
2476 match self {
2477 Self::Append => "Append",
2478 Self::Overwrite => "Overwrite",
2479 Self::Replace => "Replace",
2480 }
2481 }
2482 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2484 match value {
2485 "Append" => Some(Self::Append),
2486 "Overwrite" => Some(Self::Overwrite),
2487 "Replace" => Some(Self::Replace),
2488 _ => None,
2489 }
2490 }
2491}
2492#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2493#[repr(i32)]
2494pub enum PartitionMode {
2495 CollectLeft = 0,
2496 Partitioned = 1,
2497 Auto = 2,
2498}
2499impl PartitionMode {
2500 pub fn as_str_name(&self) -> &'static str {
2505 match self {
2506 Self::CollectLeft => "COLLECT_LEFT",
2507 Self::Partitioned => "PARTITIONED",
2508 Self::Auto => "AUTO",
2509 }
2510 }
2511 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2513 match value {
2514 "COLLECT_LEFT" => Some(Self::CollectLeft),
2515 "PARTITIONED" => Some(Self::Partitioned),
2516 "AUTO" => Some(Self::Auto),
2517 _ => None,
2518 }
2519 }
2520}
2521#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2522#[repr(i32)]
2523pub enum StreamPartitionMode {
2524 SinglePartition = 0,
2525 PartitionedExec = 1,
2526}
2527impl StreamPartitionMode {
2528 pub fn as_str_name(&self) -> &'static str {
2533 match self {
2534 Self::SinglePartition => "SINGLE_PARTITION",
2535 Self::PartitionedExec => "PARTITIONED_EXEC",
2536 }
2537 }
2538 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2540 match value {
2541 "SINGLE_PARTITION" => Some(Self::SinglePartition),
2542 "PARTITIONED_EXEC" => Some(Self::PartitionedExec),
2543 _ => None,
2544 }
2545 }
2546}
2547#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2548#[repr(i32)]
2549pub enum AggregateMode {
2550 Partial = 0,
2551 Final = 1,
2552 FinalPartitioned = 2,
2553 Single = 3,
2554 SinglePartitioned = 4,
2555 PartialReduce = 5,
2556}
2557impl AggregateMode {
2558 pub fn as_str_name(&self) -> &'static str {
2563 match self {
2564 Self::Partial => "PARTIAL",
2565 Self::Final => "FINAL",
2566 Self::FinalPartitioned => "FINAL_PARTITIONED",
2567 Self::Single => "SINGLE",
2568 Self::SinglePartitioned => "SINGLE_PARTITIONED",
2569 Self::PartialReduce => "PARTIAL_REDUCE",
2570 }
2571 }
2572 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2574 match value {
2575 "PARTIAL" => Some(Self::Partial),
2576 "FINAL" => Some(Self::Final),
2577 "FINAL_PARTITIONED" => Some(Self::FinalPartitioned),
2578 "SINGLE" => Some(Self::Single),
2579 "SINGLE_PARTITIONED" => Some(Self::SinglePartitioned),
2580 "PARTIAL_REDUCE" => Some(Self::PartialReduce),
2581 _ => None,
2582 }
2583 }
2584}
2585#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2586#[repr(i32)]
2587pub enum GenerateSeriesName {
2588 GsGenerateSeries = 0,
2589 GsRange = 1,
2590}
2591impl GenerateSeriesName {
2592 pub fn as_str_name(&self) -> &'static str {
2597 match self {
2598 Self::GsGenerateSeries => "GS_GENERATE_SERIES",
2599 Self::GsRange => "GS_RANGE",
2600 }
2601 }
2602 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2604 match value {
2605 "GS_GENERATE_SERIES" => Some(Self::GsGenerateSeries),
2606 "GS_RANGE" => Some(Self::GsRange),
2607 _ => None,
2608 }
2609 }
2610}