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