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"
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 }
81}
82#[derive(Clone, PartialEq, ::prost::Message)]
83pub struct LogicalExtensionNode {
84 #[prost(bytes = "vec", tag = "1")]
85 pub node: ::prost::alloc::vec::Vec<u8>,
86 #[prost(message, repeated, tag = "2")]
87 pub inputs: ::prost::alloc::vec::Vec<LogicalPlanNode>,
88}
89#[derive(Clone, PartialEq, ::prost::Message)]
90pub struct ProjectionColumns {
91 #[prost(string, repeated, tag = "1")]
92 pub columns: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
93}
94#[derive(Clone, PartialEq, ::prost::Message)]
95pub struct LogicalExprNodeCollection {
96 #[prost(message, repeated, tag = "1")]
97 pub logical_expr_nodes: ::prost::alloc::vec::Vec<LogicalExprNode>,
98}
99#[derive(Clone, PartialEq, ::prost::Message)]
100pub struct SortExprNodeCollection {
101 #[prost(message, repeated, tag = "1")]
102 pub sort_expr_nodes: ::prost::alloc::vec::Vec<SortExprNode>,
103}
104#[derive(Clone, PartialEq, ::prost::Message)]
105pub struct ListingTableScanNode {
106 #[prost(message, optional, tag = "14")]
107 pub table_name: ::core::option::Option<TableReference>,
108 #[prost(string, repeated, tag = "2")]
109 pub paths: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
110 #[prost(string, tag = "3")]
111 pub file_extension: ::prost::alloc::string::String,
112 #[prost(message, optional, tag = "4")]
113 pub projection: ::core::option::Option<ProjectionColumns>,
114 #[prost(message, optional, tag = "5")]
115 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
116 #[prost(message, repeated, tag = "6")]
117 pub filters: ::prost::alloc::vec::Vec<LogicalExprNode>,
118 #[prost(message, repeated, tag = "7")]
119 pub table_partition_cols: ::prost::alloc::vec::Vec<PartitionColumn>,
120 #[prost(bool, tag = "8")]
121 pub collect_stat: bool,
122 #[prost(uint32, tag = "9")]
123 pub target_partitions: u32,
124 #[prost(message, repeated, tag = "13")]
125 pub file_sort_order: ::prost::alloc::vec::Vec<SortExprNodeCollection>,
126 #[prost(oneof = "listing_table_scan_node::FileFormatType", tags = "10, 11, 12, 15")]
127 pub file_format_type: ::core::option::Option<
128 listing_table_scan_node::FileFormatType,
129 >,
130}
131pub mod listing_table_scan_node {
133 #[derive(Clone, PartialEq, ::prost::Oneof)]
134 pub enum FileFormatType {
135 #[prost(message, tag = "10")]
136 Csv(super::super::datafusion_common::CsvFormat),
137 #[prost(message, tag = "11")]
138 Parquet(super::super::datafusion_common::ParquetFormat),
139 #[prost(message, tag = "12")]
140 Avro(super::super::datafusion_common::AvroFormat),
141 #[prost(message, tag = "15")]
142 Json(super::super::datafusion_common::NdJsonFormat),
143 }
144}
145#[derive(Clone, PartialEq, ::prost::Message)]
146pub struct ViewTableScanNode {
147 #[prost(message, optional, tag = "6")]
148 pub table_name: ::core::option::Option<TableReference>,
149 #[prost(message, optional, boxed, tag = "2")]
150 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
151 #[prost(message, optional, tag = "3")]
152 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
153 #[prost(message, optional, tag = "4")]
154 pub projection: ::core::option::Option<ProjectionColumns>,
155 #[prost(string, tag = "5")]
156 pub definition: ::prost::alloc::string::String,
157}
158#[derive(Clone, PartialEq, ::prost::Message)]
160pub struct CustomTableScanNode {
161 #[prost(message, optional, tag = "6")]
162 pub table_name: ::core::option::Option<TableReference>,
163 #[prost(message, optional, tag = "2")]
164 pub projection: ::core::option::Option<ProjectionColumns>,
165 #[prost(message, optional, tag = "3")]
166 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
167 #[prost(message, repeated, tag = "4")]
168 pub filters: ::prost::alloc::vec::Vec<LogicalExprNode>,
169 #[prost(bytes = "vec", tag = "5")]
170 pub custom_table_data: ::prost::alloc::vec::Vec<u8>,
171}
172#[derive(Clone, PartialEq, ::prost::Message)]
173pub struct ProjectionNode {
174 #[prost(message, optional, boxed, tag = "1")]
175 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
176 #[prost(message, repeated, tag = "2")]
177 pub expr: ::prost::alloc::vec::Vec<LogicalExprNode>,
178 #[prost(oneof = "projection_node::OptionalAlias", tags = "3")]
179 pub optional_alias: ::core::option::Option<projection_node::OptionalAlias>,
180}
181pub mod projection_node {
183 #[derive(Clone, PartialEq, ::prost::Oneof)]
184 pub enum OptionalAlias {
185 #[prost(string, tag = "3")]
186 Alias(::prost::alloc::string::String),
187 }
188}
189#[derive(Clone, PartialEq, ::prost::Message)]
190pub struct SelectionNode {
191 #[prost(message, optional, boxed, tag = "1")]
192 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
193 #[prost(message, optional, tag = "2")]
194 pub expr: ::core::option::Option<LogicalExprNode>,
195}
196#[derive(Clone, PartialEq, ::prost::Message)]
197pub struct SortNode {
198 #[prost(message, optional, boxed, tag = "1")]
199 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
200 #[prost(message, repeated, tag = "2")]
201 pub expr: ::prost::alloc::vec::Vec<SortExprNode>,
202 #[prost(int64, tag = "3")]
204 pub fetch: i64,
205}
206#[derive(Clone, PartialEq, ::prost::Message)]
207pub struct RepartitionNode {
208 #[prost(message, optional, boxed, tag = "1")]
209 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
210 #[prost(oneof = "repartition_node::PartitionMethod", tags = "2, 3")]
211 pub partition_method: ::core::option::Option<repartition_node::PartitionMethod>,
212}
213pub mod repartition_node {
215 #[derive(Clone, PartialEq, ::prost::Oneof)]
216 pub enum PartitionMethod {
217 #[prost(uint64, tag = "2")]
218 RoundRobin(u64),
219 #[prost(message, tag = "3")]
220 Hash(super::HashRepartition),
221 }
222}
223#[derive(Clone, PartialEq, ::prost::Message)]
224pub struct HashRepartition {
225 #[prost(message, repeated, tag = "1")]
226 pub hash_expr: ::prost::alloc::vec::Vec<LogicalExprNode>,
227 #[prost(uint64, tag = "2")]
228 pub partition_count: u64,
229}
230#[derive(Clone, Copy, PartialEq, ::prost::Message)]
231pub struct EmptyRelationNode {
232 #[prost(bool, tag = "1")]
233 pub produce_one_row: bool,
234}
235#[derive(Clone, PartialEq, ::prost::Message)]
236pub struct CreateExternalTableNode {
237 #[prost(message, optional, tag = "9")]
238 pub name: ::core::option::Option<TableReference>,
239 #[prost(string, tag = "2")]
240 pub location: ::prost::alloc::string::String,
241 #[prost(string, tag = "3")]
242 pub file_type: ::prost::alloc::string::String,
243 #[prost(message, optional, tag = "4")]
244 pub schema: ::core::option::Option<super::datafusion_common::DfSchema>,
245 #[prost(string, repeated, tag = "5")]
246 pub table_partition_cols: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
247 #[prost(bool, tag = "6")]
248 pub if_not_exists: bool,
249 #[prost(bool, tag = "14")]
250 pub temporary: bool,
251 #[prost(string, tag = "7")]
252 pub definition: ::prost::alloc::string::String,
253 #[prost(message, repeated, tag = "10")]
254 pub order_exprs: ::prost::alloc::vec::Vec<SortExprNodeCollection>,
255 #[prost(bool, tag = "11")]
256 pub unbounded: bool,
257 #[prost(map = "string, string", tag = "8")]
258 pub options: ::std::collections::HashMap<
259 ::prost::alloc::string::String,
260 ::prost::alloc::string::String,
261 >,
262 #[prost(message, optional, tag = "12")]
263 pub constraints: ::core::option::Option<super::datafusion_common::Constraints>,
264 #[prost(map = "string, message", tag = "13")]
265 pub column_defaults: ::std::collections::HashMap<
266 ::prost::alloc::string::String,
267 LogicalExprNode,
268 >,
269}
270#[derive(Clone, PartialEq, ::prost::Message)]
271pub struct PrepareNode {
272 #[prost(string, tag = "1")]
273 pub name: ::prost::alloc::string::String,
274 #[prost(message, repeated, tag = "2")]
275 pub data_types: ::prost::alloc::vec::Vec<super::datafusion_common::ArrowType>,
276 #[prost(message, optional, boxed, tag = "3")]
277 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
278}
279#[derive(Clone, PartialEq, ::prost::Message)]
280pub struct CreateCatalogSchemaNode {
281 #[prost(string, tag = "1")]
282 pub schema_name: ::prost::alloc::string::String,
283 #[prost(bool, tag = "2")]
284 pub if_not_exists: bool,
285 #[prost(message, optional, tag = "3")]
286 pub schema: ::core::option::Option<super::datafusion_common::DfSchema>,
287}
288#[derive(Clone, PartialEq, ::prost::Message)]
289pub struct CreateCatalogNode {
290 #[prost(string, tag = "1")]
291 pub catalog_name: ::prost::alloc::string::String,
292 #[prost(bool, tag = "2")]
293 pub if_not_exists: bool,
294 #[prost(message, optional, tag = "3")]
295 pub schema: ::core::option::Option<super::datafusion_common::DfSchema>,
296}
297#[derive(Clone, PartialEq, ::prost::Message)]
298pub struct DropViewNode {
299 #[prost(message, optional, tag = "1")]
300 pub name: ::core::option::Option<TableReference>,
301 #[prost(bool, tag = "2")]
302 pub if_exists: bool,
303 #[prost(message, optional, tag = "3")]
304 pub schema: ::core::option::Option<super::datafusion_common::DfSchema>,
305}
306#[derive(Clone, PartialEq, ::prost::Message)]
307pub struct CreateViewNode {
308 #[prost(message, optional, tag = "5")]
309 pub name: ::core::option::Option<TableReference>,
310 #[prost(message, optional, boxed, tag = "2")]
311 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
312 #[prost(bool, tag = "3")]
313 pub or_replace: bool,
314 #[prost(bool, tag = "6")]
315 pub temporary: bool,
316 #[prost(string, tag = "4")]
317 pub definition: ::prost::alloc::string::String,
318}
319#[derive(Clone, PartialEq, ::prost::Message)]
322pub struct ValuesNode {
323 #[prost(uint64, tag = "1")]
324 pub n_cols: u64,
325 #[prost(message, repeated, tag = "2")]
326 pub values_list: ::prost::alloc::vec::Vec<LogicalExprNode>,
327}
328#[derive(Clone, PartialEq, ::prost::Message)]
329pub struct AnalyzeNode {
330 #[prost(message, optional, boxed, tag = "1")]
331 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
332 #[prost(bool, tag = "2")]
333 pub verbose: bool,
334}
335#[derive(Clone, PartialEq, ::prost::Message)]
336pub struct ExplainNode {
337 #[prost(message, optional, boxed, tag = "1")]
338 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
339 #[prost(bool, tag = "2")]
340 pub verbose: bool,
341}
342#[derive(Clone, PartialEq, ::prost::Message)]
343pub struct AggregateNode {
344 #[prost(message, optional, boxed, tag = "1")]
345 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
346 #[prost(message, repeated, tag = "2")]
347 pub group_expr: ::prost::alloc::vec::Vec<LogicalExprNode>,
348 #[prost(message, repeated, tag = "3")]
349 pub aggr_expr: ::prost::alloc::vec::Vec<LogicalExprNode>,
350}
351#[derive(Clone, PartialEq, ::prost::Message)]
352pub struct WindowNode {
353 #[prost(message, optional, boxed, tag = "1")]
354 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
355 #[prost(message, repeated, tag = "2")]
356 pub window_expr: ::prost::alloc::vec::Vec<LogicalExprNode>,
357}
358#[derive(Clone, PartialEq, ::prost::Message)]
359pub struct JoinNode {
360 #[prost(message, optional, boxed, tag = "1")]
361 pub left: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
362 #[prost(message, optional, boxed, tag = "2")]
363 pub right: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
364 #[prost(enumeration = "super::datafusion_common::JoinType", tag = "3")]
365 pub join_type: i32,
366 #[prost(enumeration = "super::datafusion_common::JoinConstraint", tag = "4")]
367 pub join_constraint: i32,
368 #[prost(message, repeated, tag = "5")]
369 pub left_join_key: ::prost::alloc::vec::Vec<LogicalExprNode>,
370 #[prost(message, repeated, tag = "6")]
371 pub right_join_key: ::prost::alloc::vec::Vec<LogicalExprNode>,
372 #[prost(enumeration = "super::datafusion_common::NullEquality", tag = "7")]
373 pub null_equality: i32,
374 #[prost(message, optional, tag = "8")]
375 pub filter: ::core::option::Option<LogicalExprNode>,
376}
377#[derive(Clone, PartialEq, ::prost::Message)]
378pub struct DistinctNode {
379 #[prost(message, optional, boxed, tag = "1")]
380 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
381}
382#[derive(Clone, PartialEq, ::prost::Message)]
383pub struct DistinctOnNode {
384 #[prost(message, repeated, tag = "1")]
385 pub on_expr: ::prost::alloc::vec::Vec<LogicalExprNode>,
386 #[prost(message, repeated, tag = "2")]
387 pub select_expr: ::prost::alloc::vec::Vec<LogicalExprNode>,
388 #[prost(message, repeated, tag = "3")]
389 pub sort_expr: ::prost::alloc::vec::Vec<SortExprNode>,
390 #[prost(message, optional, boxed, tag = "4")]
391 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
392}
393#[derive(Clone, PartialEq, ::prost::Message)]
394pub struct CopyToNode {
395 #[prost(message, optional, boxed, tag = "1")]
396 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
397 #[prost(string, tag = "2")]
398 pub output_url: ::prost::alloc::string::String,
399 #[prost(bytes = "vec", tag = "3")]
400 pub file_type: ::prost::alloc::vec::Vec<u8>,
401 #[prost(string, repeated, tag = "7")]
402 pub partition_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
403}
404#[derive(Clone, PartialEq, ::prost::Message)]
405pub struct DmlNode {
406 #[prost(enumeration = "dml_node::Type", tag = "1")]
407 pub dml_type: i32,
408 #[prost(message, optional, boxed, tag = "2")]
409 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
410 #[prost(message, optional, tag = "3")]
411 pub table_name: ::core::option::Option<TableReference>,
412 #[prost(message, optional, boxed, tag = "5")]
413 pub target: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
414}
415pub mod dml_node {
417 #[derive(
418 Clone,
419 Copy,
420 Debug,
421 PartialEq,
422 Eq,
423 Hash,
424 PartialOrd,
425 Ord,
426 ::prost::Enumeration
427 )]
428 #[repr(i32)]
429 pub enum Type {
430 Update = 0,
431 Delete = 1,
432 Ctas = 2,
433 InsertAppend = 3,
434 InsertOverwrite = 4,
435 InsertReplace = 5,
436 }
437 impl Type {
438 pub fn as_str_name(&self) -> &'static str {
443 match self {
444 Self::Update => "UPDATE",
445 Self::Delete => "DELETE",
446 Self::Ctas => "CTAS",
447 Self::InsertAppend => "INSERT_APPEND",
448 Self::InsertOverwrite => "INSERT_OVERWRITE",
449 Self::InsertReplace => "INSERT_REPLACE",
450 }
451 }
452 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
454 match value {
455 "UPDATE" => Some(Self::Update),
456 "DELETE" => Some(Self::Delete),
457 "CTAS" => Some(Self::Ctas),
458 "INSERT_APPEND" => Some(Self::InsertAppend),
459 "INSERT_OVERWRITE" => Some(Self::InsertOverwrite),
460 "INSERT_REPLACE" => Some(Self::InsertReplace),
461 _ => None,
462 }
463 }
464 }
465}
466#[derive(Clone, PartialEq, ::prost::Message)]
467pub struct UnnestNode {
468 #[prost(message, optional, boxed, tag = "1")]
469 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
470 #[prost(message, repeated, tag = "2")]
471 pub exec_columns: ::prost::alloc::vec::Vec<super::datafusion_common::Column>,
472 #[prost(message, repeated, tag = "3")]
473 pub list_type_columns: ::prost::alloc::vec::Vec<ColumnUnnestListItem>,
474 #[prost(uint64, repeated, tag = "4")]
475 pub struct_type_columns: ::prost::alloc::vec::Vec<u64>,
476 #[prost(uint64, repeated, tag = "5")]
477 pub dependency_indices: ::prost::alloc::vec::Vec<u64>,
478 #[prost(message, optional, tag = "6")]
479 pub schema: ::core::option::Option<super::datafusion_common::DfSchema>,
480 #[prost(message, optional, tag = "7")]
481 pub options: ::core::option::Option<UnnestOptions>,
482}
483#[derive(Clone, PartialEq, ::prost::Message)]
484pub struct ColumnUnnestListItem {
485 #[prost(uint32, tag = "1")]
486 pub input_index: u32,
487 #[prost(message, optional, tag = "2")]
488 pub recursion: ::core::option::Option<ColumnUnnestListRecursion>,
489}
490#[derive(Clone, PartialEq, ::prost::Message)]
491pub struct ColumnUnnestListRecursions {
492 #[prost(message, repeated, tag = "2")]
493 pub recursions: ::prost::alloc::vec::Vec<ColumnUnnestListRecursion>,
494}
495#[derive(Clone, PartialEq, ::prost::Message)]
496pub struct ColumnUnnestListRecursion {
497 #[prost(message, optional, tag = "1")]
498 pub output_column: ::core::option::Option<super::datafusion_common::Column>,
499 #[prost(uint32, tag = "2")]
500 pub depth: u32,
501}
502#[derive(Clone, PartialEq, ::prost::Message)]
503pub struct UnnestOptions {
504 #[prost(bool, tag = "1")]
505 pub preserve_nulls: bool,
506 #[prost(message, repeated, tag = "2")]
507 pub recursions: ::prost::alloc::vec::Vec<RecursionUnnestOption>,
508}
509#[derive(Clone, PartialEq, ::prost::Message)]
510pub struct RecursionUnnestOption {
511 #[prost(message, optional, tag = "1")]
512 pub output_column: ::core::option::Option<super::datafusion_common::Column>,
513 #[prost(message, optional, tag = "2")]
514 pub input_column: ::core::option::Option<super::datafusion_common::Column>,
515 #[prost(uint32, tag = "3")]
516 pub depth: u32,
517}
518#[derive(Clone, PartialEq, ::prost::Message)]
519pub struct UnionNode {
520 #[prost(message, repeated, tag = "1")]
521 pub inputs: ::prost::alloc::vec::Vec<LogicalPlanNode>,
522}
523#[derive(Clone, PartialEq, ::prost::Message)]
524pub struct CrossJoinNode {
525 #[prost(message, optional, boxed, tag = "1")]
526 pub left: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
527 #[prost(message, optional, boxed, tag = "2")]
528 pub right: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
529}
530#[derive(Clone, PartialEq, ::prost::Message)]
531pub struct LimitNode {
532 #[prost(message, optional, boxed, tag = "1")]
533 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
534 #[prost(int64, tag = "2")]
536 pub skip: i64,
537 #[prost(int64, tag = "3")]
539 pub fetch: i64,
540}
541#[derive(Clone, PartialEq, ::prost::Message)]
542pub struct SelectionExecNode {
543 #[prost(message, optional, tag = "1")]
544 pub expr: ::core::option::Option<LogicalExprNode>,
545}
546#[derive(Clone, PartialEq, ::prost::Message)]
547pub struct SubqueryAliasNode {
548 #[prost(message, optional, boxed, tag = "1")]
549 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
550 #[prost(message, optional, tag = "3")]
551 pub alias: ::core::option::Option<TableReference>,
552}
553#[derive(Clone, PartialEq, ::prost::Message)]
555pub struct LogicalExprNode {
556 #[prost(
557 oneof = "logical_expr_node::ExprType",
558 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"
559 )]
560 pub expr_type: ::core::option::Option<logical_expr_node::ExprType>,
561}
562pub mod logical_expr_node {
564 #[derive(Clone, PartialEq, ::prost::Oneof)]
565 pub enum ExprType {
566 #[prost(message, tag = "1")]
568 Column(super::super::datafusion_common::Column),
569 #[prost(message, tag = "2")]
571 Alias(::prost::alloc::boxed::Box<super::AliasNode>),
572 #[prost(message, tag = "3")]
573 Literal(super::super::datafusion_common::ScalarValue),
574 #[prost(message, tag = "4")]
576 BinaryExpr(super::BinaryExprNode),
577 #[prost(message, tag = "6")]
579 IsNullExpr(::prost::alloc::boxed::Box<super::IsNull>),
580 #[prost(message, tag = "7")]
581 IsNotNullExpr(::prost::alloc::boxed::Box<super::IsNotNull>),
582 #[prost(message, tag = "8")]
583 NotExpr(::prost::alloc::boxed::Box<super::Not>),
584 #[prost(message, tag = "9")]
585 Between(::prost::alloc::boxed::Box<super::BetweenNode>),
586 #[prost(message, tag = "10")]
587 Case(::prost::alloc::boxed::Box<super::CaseNode>),
588 #[prost(message, tag = "11")]
589 Cast(::prost::alloc::boxed::Box<super::CastNode>),
590 #[prost(message, tag = "13")]
591 Negative(::prost::alloc::boxed::Box<super::NegativeNode>),
592 #[prost(message, tag = "14")]
593 InList(::prost::alloc::boxed::Box<super::InListNode>),
594 #[prost(message, tag = "15")]
595 Wildcard(super::Wildcard),
596 #[prost(message, tag = "17")]
598 TryCast(::prost::alloc::boxed::Box<super::TryCastNode>),
599 #[prost(message, tag = "18")]
601 WindowExpr(super::WindowExprNode),
602 #[prost(message, tag = "19")]
604 AggregateUdfExpr(::prost::alloc::boxed::Box<super::AggregateUdfExprNode>),
605 #[prost(message, tag = "20")]
607 ScalarUdfExpr(super::ScalarUdfExprNode),
608 #[prost(message, tag = "22")]
609 GroupingSet(super::GroupingSetNode),
610 #[prost(message, tag = "23")]
611 Cube(super::CubeNode),
612 #[prost(message, tag = "24")]
613 Rollup(super::RollupNode),
614 #[prost(message, tag = "25")]
615 IsTrue(::prost::alloc::boxed::Box<super::IsTrue>),
616 #[prost(message, tag = "26")]
617 IsFalse(::prost::alloc::boxed::Box<super::IsFalse>),
618 #[prost(message, tag = "27")]
619 IsUnknown(::prost::alloc::boxed::Box<super::IsUnknown>),
620 #[prost(message, tag = "28")]
621 IsNotTrue(::prost::alloc::boxed::Box<super::IsNotTrue>),
622 #[prost(message, tag = "29")]
623 IsNotFalse(::prost::alloc::boxed::Box<super::IsNotFalse>),
624 #[prost(message, tag = "30")]
625 IsNotUnknown(::prost::alloc::boxed::Box<super::IsNotUnknown>),
626 #[prost(message, tag = "31")]
627 Like(::prost::alloc::boxed::Box<super::LikeNode>),
628 #[prost(message, tag = "32")]
629 Ilike(::prost::alloc::boxed::Box<super::ILikeNode>),
630 #[prost(message, tag = "33")]
631 SimilarTo(::prost::alloc::boxed::Box<super::SimilarToNode>),
632 #[prost(message, tag = "34")]
633 Placeholder(super::PlaceholderNode),
634 #[prost(message, tag = "35")]
635 Unnest(super::Unnest),
636 }
637}
638#[derive(Clone, PartialEq, ::prost::Message)]
639pub struct Wildcard {
640 #[prost(message, optional, tag = "1")]
641 pub qualifier: ::core::option::Option<TableReference>,
642}
643#[derive(Clone, PartialEq, ::prost::Message)]
644pub struct PlaceholderNode {
645 #[prost(string, tag = "1")]
646 pub id: ::prost::alloc::string::String,
647 #[prost(message, optional, tag = "2")]
648 pub data_type: ::core::option::Option<super::datafusion_common::ArrowType>,
649}
650#[derive(Clone, PartialEq, ::prost::Message)]
651pub struct LogicalExprList {
652 #[prost(message, repeated, tag = "1")]
653 pub expr: ::prost::alloc::vec::Vec<LogicalExprNode>,
654}
655#[derive(Clone, PartialEq, ::prost::Message)]
656pub struct GroupingSetNode {
657 #[prost(message, repeated, tag = "1")]
658 pub expr: ::prost::alloc::vec::Vec<LogicalExprList>,
659}
660#[derive(Clone, PartialEq, ::prost::Message)]
661pub struct CubeNode {
662 #[prost(message, repeated, tag = "1")]
663 pub expr: ::prost::alloc::vec::Vec<LogicalExprNode>,
664}
665#[derive(Clone, PartialEq, ::prost::Message)]
666pub struct RollupNode {
667 #[prost(message, repeated, tag = "1")]
668 pub expr: ::prost::alloc::vec::Vec<LogicalExprNode>,
669}
670#[derive(Clone, PartialEq, ::prost::Message)]
671pub struct NamedStructField {
672 #[prost(message, optional, tag = "1")]
673 pub name: ::core::option::Option<super::datafusion_common::ScalarValue>,
674}
675#[derive(Clone, PartialEq, ::prost::Message)]
676pub struct ListIndex {
677 #[prost(message, optional, tag = "1")]
678 pub key: ::core::option::Option<LogicalExprNode>,
679}
680#[derive(Clone, PartialEq, ::prost::Message)]
681pub struct ListRange {
682 #[prost(message, optional, tag = "1")]
683 pub start: ::core::option::Option<LogicalExprNode>,
684 #[prost(message, optional, tag = "2")]
685 pub stop: ::core::option::Option<LogicalExprNode>,
686 #[prost(message, optional, tag = "3")]
687 pub stride: ::core::option::Option<LogicalExprNode>,
688}
689#[derive(Clone, PartialEq, ::prost::Message)]
690pub struct IsNull {
691 #[prost(message, optional, boxed, tag = "1")]
692 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
693}
694#[derive(Clone, PartialEq, ::prost::Message)]
695pub struct IsNotNull {
696 #[prost(message, optional, boxed, tag = "1")]
697 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
698}
699#[derive(Clone, PartialEq, ::prost::Message)]
700pub struct IsTrue {
701 #[prost(message, optional, boxed, tag = "1")]
702 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
703}
704#[derive(Clone, PartialEq, ::prost::Message)]
705pub struct IsFalse {
706 #[prost(message, optional, boxed, tag = "1")]
707 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
708}
709#[derive(Clone, PartialEq, ::prost::Message)]
710pub struct IsUnknown {
711 #[prost(message, optional, boxed, tag = "1")]
712 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
713}
714#[derive(Clone, PartialEq, ::prost::Message)]
715pub struct IsNotTrue {
716 #[prost(message, optional, boxed, tag = "1")]
717 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
718}
719#[derive(Clone, PartialEq, ::prost::Message)]
720pub struct IsNotFalse {
721 #[prost(message, optional, boxed, tag = "1")]
722 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
723}
724#[derive(Clone, PartialEq, ::prost::Message)]
725pub struct IsNotUnknown {
726 #[prost(message, optional, boxed, tag = "1")]
727 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
728}
729#[derive(Clone, PartialEq, ::prost::Message)]
730pub struct Not {
731 #[prost(message, optional, boxed, tag = "1")]
732 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
733}
734#[derive(Clone, PartialEq, ::prost::Message)]
735pub struct AliasNode {
736 #[prost(message, optional, boxed, tag = "1")]
737 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
738 #[prost(string, tag = "2")]
739 pub alias: ::prost::alloc::string::String,
740 #[prost(message, repeated, tag = "3")]
741 pub relation: ::prost::alloc::vec::Vec<TableReference>,
742 #[prost(map = "string, string", tag = "4")]
743 pub metadata: ::std::collections::HashMap<
744 ::prost::alloc::string::String,
745 ::prost::alloc::string::String,
746 >,
747}
748#[derive(Clone, PartialEq, ::prost::Message)]
749pub struct BinaryExprNode {
750 #[prost(message, repeated, tag = "1")]
754 pub operands: ::prost::alloc::vec::Vec<LogicalExprNode>,
755 #[prost(string, tag = "3")]
756 pub op: ::prost::alloc::string::String,
757}
758#[derive(Clone, PartialEq, ::prost::Message)]
759pub struct NegativeNode {
760 #[prost(message, optional, boxed, tag = "1")]
761 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
762}
763#[derive(Clone, PartialEq, ::prost::Message)]
764pub struct Unnest {
765 #[prost(message, repeated, tag = "1")]
766 pub exprs: ::prost::alloc::vec::Vec<LogicalExprNode>,
767}
768#[derive(Clone, PartialEq, ::prost::Message)]
769pub struct InListNode {
770 #[prost(message, optional, boxed, tag = "1")]
771 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
772 #[prost(message, repeated, tag = "2")]
773 pub list: ::prost::alloc::vec::Vec<LogicalExprNode>,
774 #[prost(bool, tag = "3")]
775 pub negated: bool,
776}
777#[derive(Clone, PartialEq, ::prost::Message)]
778pub struct AggregateUdfExprNode {
779 #[prost(string, tag = "1")]
780 pub fun_name: ::prost::alloc::string::String,
781 #[prost(message, repeated, tag = "2")]
782 pub args: ::prost::alloc::vec::Vec<LogicalExprNode>,
783 #[prost(bool, tag = "5")]
784 pub distinct: bool,
785 #[prost(message, optional, boxed, tag = "3")]
786 pub filter: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
787 #[prost(message, repeated, tag = "4")]
788 pub order_by: ::prost::alloc::vec::Vec<SortExprNode>,
789 #[prost(bytes = "vec", optional, tag = "6")]
790 pub fun_definition: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
791}
792#[derive(Clone, PartialEq, ::prost::Message)]
793pub struct ScalarUdfExprNode {
794 #[prost(string, tag = "1")]
795 pub fun_name: ::prost::alloc::string::String,
796 #[prost(message, repeated, tag = "2")]
797 pub args: ::prost::alloc::vec::Vec<LogicalExprNode>,
798 #[prost(bytes = "vec", optional, tag = "3")]
799 pub fun_definition: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
800}
801#[derive(Clone, PartialEq, ::prost::Message)]
802pub struct WindowExprNode {
803 #[prost(message, repeated, tag = "4")]
804 pub exprs: ::prost::alloc::vec::Vec<LogicalExprNode>,
805 #[prost(message, repeated, tag = "5")]
806 pub partition_by: ::prost::alloc::vec::Vec<LogicalExprNode>,
807 #[prost(message, repeated, tag = "6")]
808 pub order_by: ::prost::alloc::vec::Vec<SortExprNode>,
809 #[prost(message, optional, tag = "8")]
811 pub window_frame: ::core::option::Option<WindowFrame>,
812 #[prost(bytes = "vec", optional, tag = "10")]
813 pub fun_definition: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
814 #[prost(oneof = "window_expr_node::WindowFunction", tags = "3, 9")]
815 pub window_function: ::core::option::Option<window_expr_node::WindowFunction>,
816}
817pub mod window_expr_node {
819 #[derive(Clone, PartialEq, ::prost::Oneof)]
820 pub enum WindowFunction {
821 #[prost(string, tag = "3")]
823 Udaf(::prost::alloc::string::String),
824 #[prost(string, tag = "9")]
825 Udwf(::prost::alloc::string::String),
826 }
827}
828#[derive(Clone, PartialEq, ::prost::Message)]
829pub struct BetweenNode {
830 #[prost(message, optional, boxed, tag = "1")]
831 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
832 #[prost(bool, tag = "2")]
833 pub negated: bool,
834 #[prost(message, optional, boxed, tag = "3")]
835 pub low: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
836 #[prost(message, optional, boxed, tag = "4")]
837 pub high: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
838}
839#[derive(Clone, PartialEq, ::prost::Message)]
840pub struct LikeNode {
841 #[prost(bool, tag = "1")]
842 pub negated: bool,
843 #[prost(message, optional, boxed, tag = "2")]
844 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
845 #[prost(message, optional, boxed, tag = "3")]
846 pub pattern: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
847 #[prost(string, tag = "4")]
848 pub escape_char: ::prost::alloc::string::String,
849}
850#[derive(Clone, PartialEq, ::prost::Message)]
851pub struct ILikeNode {
852 #[prost(bool, tag = "1")]
853 pub negated: bool,
854 #[prost(message, optional, boxed, tag = "2")]
855 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
856 #[prost(message, optional, boxed, tag = "3")]
857 pub pattern: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
858 #[prost(string, tag = "4")]
859 pub escape_char: ::prost::alloc::string::String,
860}
861#[derive(Clone, PartialEq, ::prost::Message)]
862pub struct SimilarToNode {
863 #[prost(bool, tag = "1")]
864 pub negated: bool,
865 #[prost(message, optional, boxed, tag = "2")]
866 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
867 #[prost(message, optional, boxed, tag = "3")]
868 pub pattern: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
869 #[prost(string, tag = "4")]
870 pub escape_char: ::prost::alloc::string::String,
871}
872#[derive(Clone, PartialEq, ::prost::Message)]
873pub struct CaseNode {
874 #[prost(message, optional, boxed, tag = "1")]
875 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
876 #[prost(message, repeated, tag = "2")]
877 pub when_then_expr: ::prost::alloc::vec::Vec<WhenThen>,
878 #[prost(message, optional, boxed, tag = "3")]
879 pub else_expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
880}
881#[derive(Clone, PartialEq, ::prost::Message)]
882pub struct WhenThen {
883 #[prost(message, optional, tag = "1")]
884 pub when_expr: ::core::option::Option<LogicalExprNode>,
885 #[prost(message, optional, tag = "2")]
886 pub then_expr: ::core::option::Option<LogicalExprNode>,
887}
888#[derive(Clone, PartialEq, ::prost::Message)]
889pub struct CastNode {
890 #[prost(message, optional, boxed, tag = "1")]
891 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
892 #[prost(message, optional, tag = "2")]
893 pub arrow_type: ::core::option::Option<super::datafusion_common::ArrowType>,
894}
895#[derive(Clone, PartialEq, ::prost::Message)]
896pub struct TryCastNode {
897 #[prost(message, optional, boxed, tag = "1")]
898 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
899 #[prost(message, optional, tag = "2")]
900 pub arrow_type: ::core::option::Option<super::datafusion_common::ArrowType>,
901}
902#[derive(Clone, PartialEq, ::prost::Message)]
903pub struct SortExprNode {
904 #[prost(message, optional, tag = "1")]
905 pub expr: ::core::option::Option<LogicalExprNode>,
906 #[prost(bool, tag = "2")]
907 pub asc: bool,
908 #[prost(bool, tag = "3")]
909 pub nulls_first: bool,
910}
911#[derive(Clone, PartialEq, ::prost::Message)]
912pub struct WindowFrame {
913 #[prost(enumeration = "WindowFrameUnits", tag = "1")]
914 pub window_frame_units: i32,
915 #[prost(message, optional, tag = "2")]
916 pub start_bound: ::core::option::Option<WindowFrameBound>,
917 #[prost(oneof = "window_frame::EndBound", tags = "3")]
920 pub end_bound: ::core::option::Option<window_frame::EndBound>,
921}
922pub mod window_frame {
924 #[derive(Clone, PartialEq, ::prost::Oneof)]
927 pub enum EndBound {
928 #[prost(message, tag = "3")]
929 Bound(super::WindowFrameBound),
930 }
931}
932#[derive(Clone, PartialEq, ::prost::Message)]
933pub struct WindowFrameBound {
934 #[prost(enumeration = "WindowFrameBoundType", tag = "1")]
935 pub window_frame_bound_type: i32,
936 #[prost(message, optional, tag = "2")]
937 pub bound_value: ::core::option::Option<super::datafusion_common::ScalarValue>,
938}
939#[derive(Clone, Copy, PartialEq, ::prost::Message)]
940pub struct FixedSizeBinary {
941 #[prost(int32, tag = "1")]
942 pub length: i32,
943}
944#[derive(Clone, PartialEq, ::prost::Message)]
945pub struct AnalyzedLogicalPlanType {
946 #[prost(string, tag = "1")]
947 pub analyzer_name: ::prost::alloc::string::String,
948}
949#[derive(Clone, PartialEq, ::prost::Message)]
950pub struct OptimizedLogicalPlanType {
951 #[prost(string, tag = "1")]
952 pub optimizer_name: ::prost::alloc::string::String,
953}
954#[derive(Clone, PartialEq, ::prost::Message)]
955pub struct OptimizedPhysicalPlanType {
956 #[prost(string, tag = "1")]
957 pub optimizer_name: ::prost::alloc::string::String,
958}
959#[derive(Clone, PartialEq, ::prost::Message)]
960pub struct PlanType {
961 #[prost(
962 oneof = "plan_type::PlanTypeEnum",
963 tags = "1, 7, 8, 2, 3, 4, 9, 11, 5, 6, 10, 12, 13"
964 )]
965 pub plan_type_enum: ::core::option::Option<plan_type::PlanTypeEnum>,
966}
967pub mod plan_type {
969 #[derive(Clone, PartialEq, ::prost::Oneof)]
970 pub enum PlanTypeEnum {
971 #[prost(message, tag = "1")]
972 InitialLogicalPlan(super::super::datafusion_common::EmptyMessage),
973 #[prost(message, tag = "7")]
974 AnalyzedLogicalPlan(super::AnalyzedLogicalPlanType),
975 #[prost(message, tag = "8")]
976 FinalAnalyzedLogicalPlan(super::super::datafusion_common::EmptyMessage),
977 #[prost(message, tag = "2")]
978 OptimizedLogicalPlan(super::OptimizedLogicalPlanType),
979 #[prost(message, tag = "3")]
980 FinalLogicalPlan(super::super::datafusion_common::EmptyMessage),
981 #[prost(message, tag = "4")]
982 InitialPhysicalPlan(super::super::datafusion_common::EmptyMessage),
983 #[prost(message, tag = "9")]
984 InitialPhysicalPlanWithStats(super::super::datafusion_common::EmptyMessage),
985 #[prost(message, tag = "11")]
986 InitialPhysicalPlanWithSchema(super::super::datafusion_common::EmptyMessage),
987 #[prost(message, tag = "5")]
988 OptimizedPhysicalPlan(super::OptimizedPhysicalPlanType),
989 #[prost(message, tag = "6")]
990 FinalPhysicalPlan(super::super::datafusion_common::EmptyMessage),
991 #[prost(message, tag = "10")]
992 FinalPhysicalPlanWithStats(super::super::datafusion_common::EmptyMessage),
993 #[prost(message, tag = "12")]
994 FinalPhysicalPlanWithSchema(super::super::datafusion_common::EmptyMessage),
995 #[prost(message, tag = "13")]
996 PhysicalPlanError(super::super::datafusion_common::EmptyMessage),
997 }
998}
999#[derive(Clone, PartialEq, ::prost::Message)]
1000pub struct StringifiedPlan {
1001 #[prost(message, optional, tag = "1")]
1002 pub plan_type: ::core::option::Option<PlanType>,
1003 #[prost(string, tag = "2")]
1004 pub plan: ::prost::alloc::string::String,
1005}
1006#[derive(Clone, PartialEq, ::prost::Message)]
1007pub struct BareTableReference {
1008 #[prost(string, tag = "1")]
1009 pub table: ::prost::alloc::string::String,
1010}
1011#[derive(Clone, PartialEq, ::prost::Message)]
1012pub struct PartialTableReference {
1013 #[prost(string, tag = "1")]
1014 pub schema: ::prost::alloc::string::String,
1015 #[prost(string, tag = "2")]
1016 pub table: ::prost::alloc::string::String,
1017}
1018#[derive(Clone, PartialEq, ::prost::Message)]
1019pub struct FullTableReference {
1020 #[prost(string, tag = "1")]
1021 pub catalog: ::prost::alloc::string::String,
1022 #[prost(string, tag = "2")]
1023 pub schema: ::prost::alloc::string::String,
1024 #[prost(string, tag = "3")]
1025 pub table: ::prost::alloc::string::String,
1026}
1027#[derive(Clone, PartialEq, ::prost::Message)]
1028pub struct TableReference {
1029 #[prost(oneof = "table_reference::TableReferenceEnum", tags = "1, 2, 3")]
1030 pub table_reference_enum: ::core::option::Option<
1031 table_reference::TableReferenceEnum,
1032 >,
1033}
1034pub mod table_reference {
1036 #[derive(Clone, PartialEq, ::prost::Oneof)]
1037 pub enum TableReferenceEnum {
1038 #[prost(message, tag = "1")]
1039 Bare(super::BareTableReference),
1040 #[prost(message, tag = "2")]
1041 Partial(super::PartialTableReference),
1042 #[prost(message, tag = "3")]
1043 Full(super::FullTableReference),
1044 }
1045}
1046#[derive(Clone, PartialEq, ::prost::Message)]
1048pub struct PhysicalPlanNode {
1049 #[prost(
1050 oneof = "physical_plan_node::PhysicalPlanType",
1051 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"
1052 )]
1053 pub physical_plan_type: ::core::option::Option<physical_plan_node::PhysicalPlanType>,
1054}
1055pub mod physical_plan_node {
1057 #[derive(Clone, PartialEq, ::prost::Oneof)]
1058 pub enum PhysicalPlanType {
1059 #[prost(message, tag = "1")]
1060 ParquetScan(super::ParquetScanExecNode),
1061 #[prost(message, tag = "2")]
1062 CsvScan(super::CsvScanExecNode),
1063 #[prost(message, tag = "3")]
1064 Empty(super::EmptyExecNode),
1065 #[prost(message, tag = "4")]
1066 Projection(::prost::alloc::boxed::Box<super::ProjectionExecNode>),
1067 #[prost(message, tag = "6")]
1068 GlobalLimit(::prost::alloc::boxed::Box<super::GlobalLimitExecNode>),
1069 #[prost(message, tag = "7")]
1070 LocalLimit(::prost::alloc::boxed::Box<super::LocalLimitExecNode>),
1071 #[prost(message, tag = "8")]
1072 Aggregate(::prost::alloc::boxed::Box<super::AggregateExecNode>),
1073 #[prost(message, tag = "9")]
1074 HashJoin(::prost::alloc::boxed::Box<super::HashJoinExecNode>),
1075 #[prost(message, tag = "10")]
1076 Sort(::prost::alloc::boxed::Box<super::SortExecNode>),
1077 #[prost(message, tag = "11")]
1078 CoalesceBatches(::prost::alloc::boxed::Box<super::CoalesceBatchesExecNode>),
1079 #[prost(message, tag = "12")]
1080 Filter(::prost::alloc::boxed::Box<super::FilterExecNode>),
1081 #[prost(message, tag = "13")]
1082 Merge(::prost::alloc::boxed::Box<super::CoalescePartitionsExecNode>),
1083 #[prost(message, tag = "14")]
1084 Repartition(::prost::alloc::boxed::Box<super::RepartitionExecNode>),
1085 #[prost(message, tag = "15")]
1086 Window(::prost::alloc::boxed::Box<super::WindowAggExecNode>),
1087 #[prost(message, tag = "16")]
1088 CrossJoin(::prost::alloc::boxed::Box<super::CrossJoinExecNode>),
1089 #[prost(message, tag = "17")]
1090 AvroScan(super::AvroScanExecNode),
1091 #[prost(message, tag = "18")]
1092 Extension(super::PhysicalExtensionNode),
1093 #[prost(message, tag = "19")]
1094 Union(super::UnionExecNode),
1095 #[prost(message, tag = "20")]
1096 Explain(super::ExplainExecNode),
1097 #[prost(message, tag = "21")]
1098 SortPreservingMerge(
1099 ::prost::alloc::boxed::Box<super::SortPreservingMergeExecNode>,
1100 ),
1101 #[prost(message, tag = "22")]
1102 NestedLoopJoin(::prost::alloc::boxed::Box<super::NestedLoopJoinExecNode>),
1103 #[prost(message, tag = "23")]
1104 Analyze(::prost::alloc::boxed::Box<super::AnalyzeExecNode>),
1105 #[prost(message, tag = "24")]
1106 JsonSink(::prost::alloc::boxed::Box<super::JsonSinkExecNode>),
1107 #[prost(message, tag = "25")]
1108 SymmetricHashJoin(::prost::alloc::boxed::Box<super::SymmetricHashJoinExecNode>),
1109 #[prost(message, tag = "26")]
1110 Interleave(super::InterleaveExecNode),
1111 #[prost(message, tag = "27")]
1112 PlaceholderRow(super::PlaceholderRowExecNode),
1113 #[prost(message, tag = "28")]
1114 CsvSink(::prost::alloc::boxed::Box<super::CsvSinkExecNode>),
1115 #[prost(message, tag = "29")]
1116 ParquetSink(::prost::alloc::boxed::Box<super::ParquetSinkExecNode>),
1117 #[prost(message, tag = "30")]
1118 Unnest(::prost::alloc::boxed::Box<super::UnnestExecNode>),
1119 #[prost(message, tag = "31")]
1120 JsonScan(super::JsonScanExecNode),
1121 #[prost(message, tag = "32")]
1122 Cooperative(::prost::alloc::boxed::Box<super::CooperativeExecNode>),
1123 }
1124}
1125#[derive(Clone, PartialEq, ::prost::Message)]
1126pub struct PartitionColumn {
1127 #[prost(string, tag = "1")]
1128 pub name: ::prost::alloc::string::String,
1129 #[prost(message, optional, tag = "2")]
1130 pub arrow_type: ::core::option::Option<super::datafusion_common::ArrowType>,
1131}
1132#[derive(Clone, PartialEq, ::prost::Message)]
1133pub struct FileSinkConfig {
1134 #[prost(string, tag = "1")]
1135 pub object_store_url: ::prost::alloc::string::String,
1136 #[prost(message, repeated, tag = "2")]
1137 pub file_groups: ::prost::alloc::vec::Vec<PartitionedFile>,
1138 #[prost(string, repeated, tag = "3")]
1139 pub table_paths: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1140 #[prost(message, optional, tag = "4")]
1141 pub output_schema: ::core::option::Option<super::datafusion_common::Schema>,
1142 #[prost(message, repeated, tag = "5")]
1143 pub table_partition_cols: ::prost::alloc::vec::Vec<PartitionColumn>,
1144 #[prost(bool, tag = "9")]
1145 pub keep_partition_by_columns: bool,
1146 #[prost(enumeration = "InsertOp", tag = "10")]
1147 pub insert_op: i32,
1148 #[prost(string, tag = "11")]
1149 pub file_extension: ::prost::alloc::string::String,
1150}
1151#[derive(Clone, PartialEq, ::prost::Message)]
1152pub struct JsonSink {
1153 #[prost(message, optional, tag = "1")]
1154 pub config: ::core::option::Option<FileSinkConfig>,
1155 #[prost(message, optional, tag = "2")]
1156 pub writer_options: ::core::option::Option<
1157 super::datafusion_common::JsonWriterOptions,
1158 >,
1159}
1160#[derive(Clone, PartialEq, ::prost::Message)]
1161pub struct JsonSinkExecNode {
1162 #[prost(message, optional, boxed, tag = "1")]
1163 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1164 #[prost(message, optional, tag = "2")]
1165 pub sink: ::core::option::Option<JsonSink>,
1166 #[prost(message, optional, tag = "3")]
1167 pub sink_schema: ::core::option::Option<super::datafusion_common::Schema>,
1168 #[prost(message, optional, tag = "4")]
1169 pub sort_order: ::core::option::Option<PhysicalSortExprNodeCollection>,
1170}
1171#[derive(Clone, PartialEq, ::prost::Message)]
1172pub struct CsvSink {
1173 #[prost(message, optional, tag = "1")]
1174 pub config: ::core::option::Option<FileSinkConfig>,
1175 #[prost(message, optional, tag = "2")]
1176 pub writer_options: ::core::option::Option<
1177 super::datafusion_common::CsvWriterOptions,
1178 >,
1179}
1180#[derive(Clone, PartialEq, ::prost::Message)]
1181pub struct CsvSinkExecNode {
1182 #[prost(message, optional, boxed, tag = "1")]
1183 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1184 #[prost(message, optional, tag = "2")]
1185 pub sink: ::core::option::Option<CsvSink>,
1186 #[prost(message, optional, tag = "3")]
1187 pub sink_schema: ::core::option::Option<super::datafusion_common::Schema>,
1188 #[prost(message, optional, tag = "4")]
1189 pub sort_order: ::core::option::Option<PhysicalSortExprNodeCollection>,
1190}
1191#[derive(Clone, PartialEq, ::prost::Message)]
1192pub struct ParquetSink {
1193 #[prost(message, optional, tag = "1")]
1194 pub config: ::core::option::Option<FileSinkConfig>,
1195 #[prost(message, optional, tag = "2")]
1196 pub parquet_options: ::core::option::Option<
1197 super::datafusion_common::TableParquetOptions,
1198 >,
1199}
1200#[derive(Clone, PartialEq, ::prost::Message)]
1201pub struct ParquetSinkExecNode {
1202 #[prost(message, optional, boxed, tag = "1")]
1203 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1204 #[prost(message, optional, tag = "2")]
1205 pub sink: ::core::option::Option<ParquetSink>,
1206 #[prost(message, optional, tag = "3")]
1207 pub sink_schema: ::core::option::Option<super::datafusion_common::Schema>,
1208 #[prost(message, optional, tag = "4")]
1209 pub sort_order: ::core::option::Option<PhysicalSortExprNodeCollection>,
1210}
1211#[derive(Clone, PartialEq, ::prost::Message)]
1212pub struct UnnestExecNode {
1213 #[prost(message, optional, boxed, tag = "1")]
1214 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1215 #[prost(message, optional, tag = "2")]
1216 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
1217 #[prost(message, repeated, tag = "3")]
1218 pub list_type_columns: ::prost::alloc::vec::Vec<ListUnnest>,
1219 #[prost(uint64, repeated, tag = "4")]
1220 pub struct_type_columns: ::prost::alloc::vec::Vec<u64>,
1221 #[prost(message, optional, tag = "5")]
1222 pub options: ::core::option::Option<UnnestOptions>,
1223}
1224#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1225pub struct ListUnnest {
1226 #[prost(uint32, tag = "1")]
1227 pub index_in_input_schema: u32,
1228 #[prost(uint32, tag = "2")]
1229 pub depth: u32,
1230}
1231#[derive(Clone, PartialEq, ::prost::Message)]
1232pub struct PhysicalExtensionNode {
1233 #[prost(bytes = "vec", tag = "1")]
1234 pub node: ::prost::alloc::vec::Vec<u8>,
1235 #[prost(message, repeated, tag = "2")]
1236 pub inputs: ::prost::alloc::vec::Vec<PhysicalPlanNode>,
1237}
1238#[derive(Clone, PartialEq, ::prost::Message)]
1240pub struct PhysicalExprNode {
1241 #[prost(
1242 oneof = "physical_expr_node::ExprType",
1243 tags = "1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 18, 19, 20"
1244 )]
1245 pub expr_type: ::core::option::Option<physical_expr_node::ExprType>,
1246}
1247pub mod physical_expr_node {
1249 #[derive(Clone, PartialEq, ::prost::Oneof)]
1250 pub enum ExprType {
1251 #[prost(message, tag = "1")]
1253 Column(super::PhysicalColumn),
1254 #[prost(message, tag = "2")]
1255 Literal(super::super::datafusion_common::ScalarValue),
1256 #[prost(message, tag = "3")]
1258 BinaryExpr(::prost::alloc::boxed::Box<super::PhysicalBinaryExprNode>),
1259 #[prost(message, tag = "4")]
1261 AggregateExpr(super::PhysicalAggregateExprNode),
1262 #[prost(message, tag = "5")]
1264 IsNullExpr(::prost::alloc::boxed::Box<super::PhysicalIsNull>),
1265 #[prost(message, tag = "6")]
1266 IsNotNullExpr(::prost::alloc::boxed::Box<super::PhysicalIsNotNull>),
1267 #[prost(message, tag = "7")]
1268 NotExpr(::prost::alloc::boxed::Box<super::PhysicalNot>),
1269 #[prost(message, tag = "8")]
1270 Case(::prost::alloc::boxed::Box<super::PhysicalCaseNode>),
1271 #[prost(message, tag = "9")]
1272 Cast(::prost::alloc::boxed::Box<super::PhysicalCastNode>),
1273 #[prost(message, tag = "10")]
1274 Sort(::prost::alloc::boxed::Box<super::PhysicalSortExprNode>),
1275 #[prost(message, tag = "11")]
1276 Negative(::prost::alloc::boxed::Box<super::PhysicalNegativeNode>),
1277 #[prost(message, tag = "12")]
1278 InList(::prost::alloc::boxed::Box<super::PhysicalInListNode>),
1279 #[prost(message, tag = "14")]
1281 TryCast(::prost::alloc::boxed::Box<super::PhysicalTryCastNode>),
1282 #[prost(message, tag = "15")]
1284 WindowExpr(super::PhysicalWindowExprNode),
1285 #[prost(message, tag = "16")]
1287 ScalarUdf(super::PhysicalScalarUdfNode),
1288 #[prost(message, tag = "18")]
1289 LikeExpr(::prost::alloc::boxed::Box<super::PhysicalLikeExprNode>),
1290 #[prost(message, tag = "19")]
1291 Extension(super::PhysicalExtensionExprNode),
1292 #[prost(message, tag = "20")]
1293 UnknownColumn(super::UnknownColumn),
1294 }
1295}
1296#[derive(Clone, PartialEq, ::prost::Message)]
1297pub struct PhysicalScalarUdfNode {
1298 #[prost(string, tag = "1")]
1299 pub name: ::prost::alloc::string::String,
1300 #[prost(message, repeated, tag = "2")]
1301 pub args: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1302 #[prost(bytes = "vec", optional, tag = "3")]
1303 pub fun_definition: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1304 #[prost(message, optional, tag = "4")]
1305 pub return_type: ::core::option::Option<super::datafusion_common::ArrowType>,
1306 #[prost(bool, tag = "5")]
1307 pub nullable: bool,
1308}
1309#[derive(Clone, PartialEq, ::prost::Message)]
1310pub struct PhysicalAggregateExprNode {
1311 #[prost(message, repeated, tag = "2")]
1312 pub expr: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1313 #[prost(message, repeated, tag = "5")]
1314 pub ordering_req: ::prost::alloc::vec::Vec<PhysicalSortExprNode>,
1315 #[prost(bool, tag = "3")]
1316 pub distinct: bool,
1317 #[prost(bool, tag = "6")]
1318 pub ignore_nulls: bool,
1319 #[prost(bytes = "vec", optional, tag = "7")]
1320 pub fun_definition: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1321 #[prost(oneof = "physical_aggregate_expr_node::AggregateFunction", tags = "4")]
1322 pub aggregate_function: ::core::option::Option<
1323 physical_aggregate_expr_node::AggregateFunction,
1324 >,
1325}
1326pub mod physical_aggregate_expr_node {
1328 #[derive(Clone, PartialEq, ::prost::Oneof)]
1329 pub enum AggregateFunction {
1330 #[prost(string, tag = "4")]
1331 UserDefinedAggrFunction(::prost::alloc::string::String),
1332 }
1333}
1334#[derive(Clone, PartialEq, ::prost::Message)]
1335pub struct PhysicalWindowExprNode {
1336 #[prost(message, repeated, tag = "4")]
1337 pub args: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1338 #[prost(message, repeated, tag = "5")]
1339 pub partition_by: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1340 #[prost(message, repeated, tag = "6")]
1341 pub order_by: ::prost::alloc::vec::Vec<PhysicalSortExprNode>,
1342 #[prost(message, optional, tag = "7")]
1343 pub window_frame: ::core::option::Option<WindowFrame>,
1344 #[prost(string, tag = "8")]
1345 pub name: ::prost::alloc::string::String,
1346 #[prost(bytes = "vec", optional, tag = "9")]
1347 pub fun_definition: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1348 #[prost(oneof = "physical_window_expr_node::WindowFunction", tags = "3, 10")]
1349 pub window_function: ::core::option::Option<
1350 physical_window_expr_node::WindowFunction,
1351 >,
1352}
1353pub mod physical_window_expr_node {
1355 #[derive(Clone, PartialEq, ::prost::Oneof)]
1356 pub enum WindowFunction {
1357 #[prost(string, tag = "3")]
1359 UserDefinedAggrFunction(::prost::alloc::string::String),
1360 #[prost(string, tag = "10")]
1361 UserDefinedWindowFunction(::prost::alloc::string::String),
1362 }
1363}
1364#[derive(Clone, PartialEq, ::prost::Message)]
1365pub struct PhysicalIsNull {
1366 #[prost(message, optional, boxed, tag = "1")]
1367 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1368}
1369#[derive(Clone, PartialEq, ::prost::Message)]
1370pub struct PhysicalIsNotNull {
1371 #[prost(message, optional, boxed, tag = "1")]
1372 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1373}
1374#[derive(Clone, PartialEq, ::prost::Message)]
1375pub struct PhysicalNot {
1376 #[prost(message, optional, boxed, tag = "1")]
1377 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1378}
1379#[derive(Clone, PartialEq, ::prost::Message)]
1380pub struct PhysicalAliasNode {
1381 #[prost(message, optional, tag = "1")]
1382 pub expr: ::core::option::Option<PhysicalExprNode>,
1383 #[prost(string, tag = "2")]
1384 pub alias: ::prost::alloc::string::String,
1385}
1386#[derive(Clone, PartialEq, ::prost::Message)]
1387pub struct PhysicalBinaryExprNode {
1388 #[prost(message, optional, boxed, tag = "1")]
1389 pub l: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1390 #[prost(message, optional, boxed, tag = "2")]
1391 pub r: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1392 #[prost(string, tag = "3")]
1393 pub op: ::prost::alloc::string::String,
1394}
1395#[derive(Clone, PartialEq, ::prost::Message)]
1396pub struct PhysicalDateTimeIntervalExprNode {
1397 #[prost(message, optional, tag = "1")]
1398 pub l: ::core::option::Option<PhysicalExprNode>,
1399 #[prost(message, optional, tag = "2")]
1400 pub r: ::core::option::Option<PhysicalExprNode>,
1401 #[prost(string, tag = "3")]
1402 pub op: ::prost::alloc::string::String,
1403}
1404#[derive(Clone, PartialEq, ::prost::Message)]
1405pub struct PhysicalLikeExprNode {
1406 #[prost(bool, tag = "1")]
1407 pub negated: bool,
1408 #[prost(bool, tag = "2")]
1409 pub case_insensitive: bool,
1410 #[prost(message, optional, boxed, tag = "3")]
1411 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1412 #[prost(message, optional, boxed, tag = "4")]
1413 pub pattern: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1414}
1415#[derive(Clone, PartialEq, ::prost::Message)]
1416pub struct PhysicalSortExprNode {
1417 #[prost(message, optional, boxed, tag = "1")]
1418 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1419 #[prost(bool, tag = "2")]
1420 pub asc: bool,
1421 #[prost(bool, tag = "3")]
1422 pub nulls_first: bool,
1423}
1424#[derive(Clone, PartialEq, ::prost::Message)]
1425pub struct PhysicalWhenThen {
1426 #[prost(message, optional, tag = "1")]
1427 pub when_expr: ::core::option::Option<PhysicalExprNode>,
1428 #[prost(message, optional, tag = "2")]
1429 pub then_expr: ::core::option::Option<PhysicalExprNode>,
1430}
1431#[derive(Clone, PartialEq, ::prost::Message)]
1432pub struct PhysicalInListNode {
1433 #[prost(message, optional, boxed, tag = "1")]
1434 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1435 #[prost(message, repeated, tag = "2")]
1436 pub list: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1437 #[prost(bool, tag = "3")]
1438 pub negated: bool,
1439}
1440#[derive(Clone, PartialEq, ::prost::Message)]
1441pub struct PhysicalCaseNode {
1442 #[prost(message, optional, boxed, tag = "1")]
1443 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1444 #[prost(message, repeated, tag = "2")]
1445 pub when_then_expr: ::prost::alloc::vec::Vec<PhysicalWhenThen>,
1446 #[prost(message, optional, boxed, tag = "3")]
1447 pub else_expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1448}
1449#[derive(Clone, PartialEq, ::prost::Message)]
1450pub struct PhysicalTryCastNode {
1451 #[prost(message, optional, boxed, tag = "1")]
1452 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1453 #[prost(message, optional, tag = "2")]
1454 pub arrow_type: ::core::option::Option<super::datafusion_common::ArrowType>,
1455}
1456#[derive(Clone, PartialEq, ::prost::Message)]
1457pub struct PhysicalCastNode {
1458 #[prost(message, optional, boxed, tag = "1")]
1459 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1460 #[prost(message, optional, tag = "2")]
1461 pub arrow_type: ::core::option::Option<super::datafusion_common::ArrowType>,
1462}
1463#[derive(Clone, PartialEq, ::prost::Message)]
1464pub struct PhysicalNegativeNode {
1465 #[prost(message, optional, boxed, tag = "1")]
1466 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1467}
1468#[derive(Clone, PartialEq, ::prost::Message)]
1469pub struct PhysicalExtensionExprNode {
1470 #[prost(bytes = "vec", tag = "1")]
1471 pub expr: ::prost::alloc::vec::Vec<u8>,
1472 #[prost(message, repeated, tag = "2")]
1473 pub inputs: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1474}
1475#[derive(Clone, PartialEq, ::prost::Message)]
1476pub struct FilterExecNode {
1477 #[prost(message, optional, boxed, tag = "1")]
1478 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1479 #[prost(message, optional, tag = "2")]
1480 pub expr: ::core::option::Option<PhysicalExprNode>,
1481 #[prost(uint32, tag = "3")]
1482 pub default_filter_selectivity: u32,
1483 #[prost(uint32, repeated, tag = "9")]
1484 pub projection: ::prost::alloc::vec::Vec<u32>,
1485}
1486#[derive(Clone, PartialEq, ::prost::Message)]
1487pub struct FileGroup {
1488 #[prost(message, repeated, tag = "1")]
1489 pub files: ::prost::alloc::vec::Vec<PartitionedFile>,
1490}
1491#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1492pub struct ScanLimit {
1493 #[prost(uint32, tag = "1")]
1495 pub limit: u32,
1496}
1497#[derive(Clone, PartialEq, ::prost::Message)]
1498pub struct PhysicalSortExprNodeCollection {
1499 #[prost(message, repeated, tag = "1")]
1500 pub physical_sort_expr_nodes: ::prost::alloc::vec::Vec<PhysicalSortExprNode>,
1501}
1502#[derive(Clone, PartialEq, ::prost::Message)]
1503pub struct FileScanExecConf {
1504 #[prost(message, repeated, tag = "1")]
1505 pub file_groups: ::prost::alloc::vec::Vec<FileGroup>,
1506 #[prost(message, optional, tag = "2")]
1507 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
1508 #[prost(uint32, repeated, tag = "4")]
1509 pub projection: ::prost::alloc::vec::Vec<u32>,
1510 #[prost(message, optional, tag = "5")]
1511 pub limit: ::core::option::Option<ScanLimit>,
1512 #[prost(message, optional, tag = "6")]
1513 pub statistics: ::core::option::Option<super::datafusion_common::Statistics>,
1514 #[prost(string, repeated, tag = "7")]
1515 pub table_partition_cols: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1516 #[prost(string, tag = "8")]
1517 pub object_store_url: ::prost::alloc::string::String,
1518 #[prost(message, repeated, tag = "9")]
1519 pub output_ordering: ::prost::alloc::vec::Vec<PhysicalSortExprNodeCollection>,
1520 #[prost(message, optional, tag = "11")]
1521 pub constraints: ::core::option::Option<super::datafusion_common::Constraints>,
1522 #[prost(uint64, optional, tag = "12")]
1523 pub batch_size: ::core::option::Option<u64>,
1524}
1525#[derive(Clone, PartialEq, ::prost::Message)]
1526pub struct ParquetScanExecNode {
1527 #[prost(message, optional, tag = "1")]
1528 pub base_conf: ::core::option::Option<FileScanExecConf>,
1529 #[prost(message, optional, tag = "3")]
1530 pub predicate: ::core::option::Option<PhysicalExprNode>,
1531 #[prost(message, optional, tag = "4")]
1532 pub parquet_options: ::core::option::Option<
1533 super::datafusion_common::TableParquetOptions,
1534 >,
1535}
1536#[derive(Clone, PartialEq, ::prost::Message)]
1537pub struct CsvScanExecNode {
1538 #[prost(message, optional, tag = "1")]
1539 pub base_conf: ::core::option::Option<FileScanExecConf>,
1540 #[prost(bool, tag = "2")]
1541 pub has_header: bool,
1542 #[prost(string, tag = "3")]
1543 pub delimiter: ::prost::alloc::string::String,
1544 #[prost(string, tag = "4")]
1545 pub quote: ::prost::alloc::string::String,
1546 #[prost(bool, tag = "7")]
1547 pub newlines_in_values: bool,
1548 #[prost(oneof = "csv_scan_exec_node::OptionalEscape", tags = "5")]
1549 pub optional_escape: ::core::option::Option<csv_scan_exec_node::OptionalEscape>,
1550 #[prost(oneof = "csv_scan_exec_node::OptionalComment", tags = "6")]
1551 pub optional_comment: ::core::option::Option<csv_scan_exec_node::OptionalComment>,
1552}
1553pub mod csv_scan_exec_node {
1555 #[derive(Clone, PartialEq, ::prost::Oneof)]
1556 pub enum OptionalEscape {
1557 #[prost(string, tag = "5")]
1558 Escape(::prost::alloc::string::String),
1559 }
1560 #[derive(Clone, PartialEq, ::prost::Oneof)]
1561 pub enum OptionalComment {
1562 #[prost(string, tag = "6")]
1563 Comment(::prost::alloc::string::String),
1564 }
1565}
1566#[derive(Clone, PartialEq, ::prost::Message)]
1567pub struct JsonScanExecNode {
1568 #[prost(message, optional, tag = "1")]
1569 pub base_conf: ::core::option::Option<FileScanExecConf>,
1570}
1571#[derive(Clone, PartialEq, ::prost::Message)]
1572pub struct AvroScanExecNode {
1573 #[prost(message, optional, tag = "1")]
1574 pub base_conf: ::core::option::Option<FileScanExecConf>,
1575}
1576#[derive(Clone, PartialEq, ::prost::Message)]
1577pub struct CooperativeExecNode {
1578 #[prost(message, optional, boxed, tag = "1")]
1579 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1580}
1581#[derive(Clone, PartialEq, ::prost::Message)]
1582pub struct HashJoinExecNode {
1583 #[prost(message, optional, boxed, tag = "1")]
1584 pub left: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1585 #[prost(message, optional, boxed, tag = "2")]
1586 pub right: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1587 #[prost(message, repeated, tag = "3")]
1588 pub on: ::prost::alloc::vec::Vec<JoinOn>,
1589 #[prost(enumeration = "super::datafusion_common::JoinType", tag = "4")]
1590 pub join_type: i32,
1591 #[prost(enumeration = "PartitionMode", tag = "6")]
1592 pub partition_mode: i32,
1593 #[prost(enumeration = "super::datafusion_common::NullEquality", tag = "7")]
1594 pub null_equality: i32,
1595 #[prost(message, optional, tag = "8")]
1596 pub filter: ::core::option::Option<JoinFilter>,
1597 #[prost(uint32, repeated, tag = "9")]
1598 pub projection: ::prost::alloc::vec::Vec<u32>,
1599}
1600#[derive(Clone, PartialEq, ::prost::Message)]
1601pub struct SymmetricHashJoinExecNode {
1602 #[prost(message, optional, boxed, tag = "1")]
1603 pub left: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1604 #[prost(message, optional, boxed, tag = "2")]
1605 pub right: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1606 #[prost(message, repeated, tag = "3")]
1607 pub on: ::prost::alloc::vec::Vec<JoinOn>,
1608 #[prost(enumeration = "super::datafusion_common::JoinType", tag = "4")]
1609 pub join_type: i32,
1610 #[prost(enumeration = "StreamPartitionMode", tag = "6")]
1611 pub partition_mode: i32,
1612 #[prost(enumeration = "super::datafusion_common::NullEquality", tag = "7")]
1613 pub null_equality: i32,
1614 #[prost(message, optional, tag = "8")]
1615 pub filter: ::core::option::Option<JoinFilter>,
1616 #[prost(message, repeated, tag = "9")]
1617 pub left_sort_exprs: ::prost::alloc::vec::Vec<PhysicalSortExprNode>,
1618 #[prost(message, repeated, tag = "10")]
1619 pub right_sort_exprs: ::prost::alloc::vec::Vec<PhysicalSortExprNode>,
1620}
1621#[derive(Clone, PartialEq, ::prost::Message)]
1622pub struct InterleaveExecNode {
1623 #[prost(message, repeated, tag = "1")]
1624 pub inputs: ::prost::alloc::vec::Vec<PhysicalPlanNode>,
1625}
1626#[derive(Clone, PartialEq, ::prost::Message)]
1627pub struct UnionExecNode {
1628 #[prost(message, repeated, tag = "1")]
1629 pub inputs: ::prost::alloc::vec::Vec<PhysicalPlanNode>,
1630}
1631#[derive(Clone, PartialEq, ::prost::Message)]
1632pub struct ExplainExecNode {
1633 #[prost(message, optional, tag = "1")]
1634 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
1635 #[prost(message, repeated, tag = "2")]
1636 pub stringified_plans: ::prost::alloc::vec::Vec<StringifiedPlan>,
1637 #[prost(bool, tag = "3")]
1638 pub verbose: bool,
1639}
1640#[derive(Clone, PartialEq, ::prost::Message)]
1641pub struct AnalyzeExecNode {
1642 #[prost(bool, tag = "1")]
1643 pub verbose: bool,
1644 #[prost(bool, tag = "2")]
1645 pub show_statistics: bool,
1646 #[prost(message, optional, boxed, tag = "3")]
1647 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1648 #[prost(message, optional, tag = "4")]
1649 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
1650}
1651#[derive(Clone, PartialEq, ::prost::Message)]
1652pub struct CrossJoinExecNode {
1653 #[prost(message, optional, boxed, tag = "1")]
1654 pub left: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1655 #[prost(message, optional, boxed, tag = "2")]
1656 pub right: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1657}
1658#[derive(Clone, PartialEq, ::prost::Message)]
1659pub struct PhysicalColumn {
1660 #[prost(string, tag = "1")]
1661 pub name: ::prost::alloc::string::String,
1662 #[prost(uint32, tag = "2")]
1663 pub index: u32,
1664}
1665#[derive(Clone, PartialEq, ::prost::Message)]
1666pub struct UnknownColumn {
1667 #[prost(string, tag = "1")]
1668 pub name: ::prost::alloc::string::String,
1669}
1670#[derive(Clone, PartialEq, ::prost::Message)]
1671pub struct JoinOn {
1672 #[prost(message, optional, tag = "1")]
1673 pub left: ::core::option::Option<PhysicalExprNode>,
1674 #[prost(message, optional, tag = "2")]
1675 pub right: ::core::option::Option<PhysicalExprNode>,
1676}
1677#[derive(Clone, PartialEq, ::prost::Message)]
1678pub struct EmptyExecNode {
1679 #[prost(message, optional, tag = "1")]
1680 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
1681}
1682#[derive(Clone, PartialEq, ::prost::Message)]
1683pub struct PlaceholderRowExecNode {
1684 #[prost(message, optional, tag = "1")]
1685 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
1686}
1687#[derive(Clone, PartialEq, ::prost::Message)]
1688pub struct ProjectionExecNode {
1689 #[prost(message, optional, boxed, tag = "1")]
1690 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1691 #[prost(message, repeated, tag = "2")]
1692 pub expr: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1693 #[prost(string, repeated, tag = "3")]
1694 pub expr_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1695}
1696#[derive(Clone, PartialEq, ::prost::Message)]
1697pub struct PartiallySortedInputOrderMode {
1698 #[prost(uint64, repeated, tag = "6")]
1699 pub columns: ::prost::alloc::vec::Vec<u64>,
1700}
1701#[derive(Clone, PartialEq, ::prost::Message)]
1702pub struct WindowAggExecNode {
1703 #[prost(message, optional, boxed, tag = "1")]
1704 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1705 #[prost(message, repeated, tag = "2")]
1706 pub window_expr: ::prost::alloc::vec::Vec<PhysicalWindowExprNode>,
1707 #[prost(message, repeated, tag = "5")]
1708 pub partition_keys: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1709 #[prost(oneof = "window_agg_exec_node::InputOrderMode", tags = "7, 8, 9")]
1711 pub input_order_mode: ::core::option::Option<window_agg_exec_node::InputOrderMode>,
1712}
1713pub mod window_agg_exec_node {
1715 #[derive(Clone, PartialEq, ::prost::Oneof)]
1717 pub enum InputOrderMode {
1718 #[prost(message, tag = "7")]
1719 Linear(super::super::datafusion_common::EmptyMessage),
1720 #[prost(message, tag = "8")]
1721 PartiallySorted(super::PartiallySortedInputOrderMode),
1722 #[prost(message, tag = "9")]
1723 Sorted(super::super::datafusion_common::EmptyMessage),
1724 }
1725}
1726#[derive(Clone, PartialEq, ::prost::Message)]
1727pub struct MaybeFilter {
1728 #[prost(message, optional, tag = "1")]
1729 pub expr: ::core::option::Option<PhysicalExprNode>,
1730}
1731#[derive(Clone, PartialEq, ::prost::Message)]
1732pub struct MaybePhysicalSortExprs {
1733 #[prost(message, repeated, tag = "1")]
1734 pub sort_expr: ::prost::alloc::vec::Vec<PhysicalSortExprNode>,
1735}
1736#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1737pub struct AggLimit {
1738 #[prost(uint64, tag = "1")]
1740 pub limit: u64,
1741}
1742#[derive(Clone, PartialEq, ::prost::Message)]
1743pub struct AggregateExecNode {
1744 #[prost(message, repeated, tag = "1")]
1745 pub group_expr: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1746 #[prost(message, repeated, tag = "2")]
1747 pub aggr_expr: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1748 #[prost(enumeration = "AggregateMode", tag = "3")]
1749 pub mode: i32,
1750 #[prost(message, optional, boxed, tag = "4")]
1751 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1752 #[prost(string, repeated, tag = "5")]
1753 pub group_expr_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1754 #[prost(string, repeated, tag = "6")]
1755 pub aggr_expr_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1756 #[prost(message, optional, tag = "7")]
1758 pub input_schema: ::core::option::Option<super::datafusion_common::Schema>,
1759 #[prost(message, repeated, tag = "8")]
1760 pub null_expr: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1761 #[prost(bool, repeated, tag = "9")]
1762 pub groups: ::prost::alloc::vec::Vec<bool>,
1763 #[prost(message, repeated, tag = "10")]
1764 pub filter_expr: ::prost::alloc::vec::Vec<MaybeFilter>,
1765 #[prost(message, optional, tag = "11")]
1766 pub limit: ::core::option::Option<AggLimit>,
1767}
1768#[derive(Clone, PartialEq, ::prost::Message)]
1769pub struct GlobalLimitExecNode {
1770 #[prost(message, optional, boxed, tag = "1")]
1771 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1772 #[prost(uint32, tag = "2")]
1774 pub skip: u32,
1775 #[prost(int64, tag = "3")]
1777 pub fetch: i64,
1778}
1779#[derive(Clone, PartialEq, ::prost::Message)]
1780pub struct LocalLimitExecNode {
1781 #[prost(message, optional, boxed, tag = "1")]
1782 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1783 #[prost(uint32, tag = "2")]
1784 pub fetch: u32,
1785}
1786#[derive(Clone, PartialEq, ::prost::Message)]
1787pub struct SortExecNode {
1788 #[prost(message, optional, boxed, tag = "1")]
1789 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1790 #[prost(message, repeated, tag = "2")]
1791 pub expr: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1792 #[prost(int64, tag = "3")]
1794 pub fetch: i64,
1795 #[prost(bool, tag = "4")]
1796 pub preserve_partitioning: bool,
1797}
1798#[derive(Clone, PartialEq, ::prost::Message)]
1799pub struct SortPreservingMergeExecNode {
1800 #[prost(message, optional, boxed, tag = "1")]
1801 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1802 #[prost(message, repeated, tag = "2")]
1803 pub expr: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1804 #[prost(int64, tag = "3")]
1806 pub fetch: i64,
1807}
1808#[derive(Clone, PartialEq, ::prost::Message)]
1809pub struct NestedLoopJoinExecNode {
1810 #[prost(message, optional, boxed, tag = "1")]
1811 pub left: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1812 #[prost(message, optional, boxed, tag = "2")]
1813 pub right: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1814 #[prost(enumeration = "super::datafusion_common::JoinType", tag = "3")]
1815 pub join_type: i32,
1816 #[prost(message, optional, tag = "4")]
1817 pub filter: ::core::option::Option<JoinFilter>,
1818 #[prost(uint32, repeated, tag = "5")]
1819 pub projection: ::prost::alloc::vec::Vec<u32>,
1820}
1821#[derive(Clone, PartialEq, ::prost::Message)]
1822pub struct CoalesceBatchesExecNode {
1823 #[prost(message, optional, boxed, tag = "1")]
1824 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1825 #[prost(uint32, tag = "2")]
1826 pub target_batch_size: u32,
1827 #[prost(uint32, optional, tag = "3")]
1828 pub fetch: ::core::option::Option<u32>,
1829}
1830#[derive(Clone, PartialEq, ::prost::Message)]
1831pub struct CoalescePartitionsExecNode {
1832 #[prost(message, optional, boxed, tag = "1")]
1833 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1834 #[prost(uint32, optional, tag = "2")]
1835 pub fetch: ::core::option::Option<u32>,
1836}
1837#[derive(Clone, PartialEq, ::prost::Message)]
1838pub struct PhysicalHashRepartition {
1839 #[prost(message, repeated, tag = "1")]
1840 pub hash_expr: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1841 #[prost(uint64, tag = "2")]
1842 pub partition_count: u64,
1843}
1844#[derive(Clone, PartialEq, ::prost::Message)]
1845pub struct RepartitionExecNode {
1846 #[prost(message, optional, boxed, tag = "1")]
1847 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1848 #[prost(message, optional, tag = "5")]
1854 pub partitioning: ::core::option::Option<Partitioning>,
1855}
1856#[derive(Clone, PartialEq, ::prost::Message)]
1857pub struct Partitioning {
1858 #[prost(oneof = "partitioning::PartitionMethod", tags = "1, 2, 3")]
1859 pub partition_method: ::core::option::Option<partitioning::PartitionMethod>,
1860}
1861pub mod partitioning {
1863 #[derive(Clone, PartialEq, ::prost::Oneof)]
1864 pub enum PartitionMethod {
1865 #[prost(uint64, tag = "1")]
1866 RoundRobin(u64),
1867 #[prost(message, tag = "2")]
1868 Hash(super::PhysicalHashRepartition),
1869 #[prost(uint64, tag = "3")]
1870 Unknown(u64),
1871 }
1872}
1873#[derive(Clone, PartialEq, ::prost::Message)]
1874pub struct JoinFilter {
1875 #[prost(message, optional, tag = "1")]
1876 pub expression: ::core::option::Option<PhysicalExprNode>,
1877 #[prost(message, repeated, tag = "2")]
1878 pub column_indices: ::prost::alloc::vec::Vec<ColumnIndex>,
1879 #[prost(message, optional, tag = "3")]
1880 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
1881}
1882#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1883pub struct ColumnIndex {
1884 #[prost(uint32, tag = "1")]
1885 pub index: u32,
1886 #[prost(enumeration = "super::datafusion_common::JoinSide", tag = "2")]
1887 pub side: i32,
1888}
1889#[derive(Clone, PartialEq, ::prost::Message)]
1890pub struct PartitionedFile {
1891 #[prost(string, tag = "1")]
1892 pub path: ::prost::alloc::string::String,
1893 #[prost(uint64, tag = "2")]
1894 pub size: u64,
1895 #[prost(uint64, tag = "3")]
1896 pub last_modified_ns: u64,
1897 #[prost(message, repeated, tag = "4")]
1898 pub partition_values: ::prost::alloc::vec::Vec<
1899 super::datafusion_common::ScalarValue,
1900 >,
1901 #[prost(message, optional, tag = "5")]
1902 pub range: ::core::option::Option<FileRange>,
1903 #[prost(message, optional, tag = "6")]
1904 pub statistics: ::core::option::Option<super::datafusion_common::Statistics>,
1905}
1906#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1907pub struct FileRange {
1908 #[prost(int64, tag = "1")]
1909 pub start: i64,
1910 #[prost(int64, tag = "2")]
1911 pub end: i64,
1912}
1913#[derive(Clone, PartialEq, ::prost::Message)]
1914pub struct PartitionStats {
1915 #[prost(int64, tag = "1")]
1916 pub num_rows: i64,
1917 #[prost(int64, tag = "2")]
1918 pub num_batches: i64,
1919 #[prost(int64, tag = "3")]
1920 pub num_bytes: i64,
1921 #[prost(message, repeated, tag = "4")]
1922 pub column_stats: ::prost::alloc::vec::Vec<super::datafusion_common::ColumnStats>,
1923}
1924#[derive(Clone, PartialEq, ::prost::Message)]
1925pub struct RecursiveQueryNode {
1926 #[prost(string, tag = "1")]
1927 pub name: ::prost::alloc::string::String,
1928 #[prost(message, optional, boxed, tag = "2")]
1929 pub static_term: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
1930 #[prost(message, optional, boxed, tag = "3")]
1931 pub recursive_term: ::core::option::Option<
1932 ::prost::alloc::boxed::Box<LogicalPlanNode>,
1933 >,
1934 #[prost(bool, tag = "4")]
1935 pub is_distinct: bool,
1936}
1937#[derive(Clone, PartialEq, ::prost::Message)]
1938pub struct CteWorkTableScanNode {
1939 #[prost(string, tag = "1")]
1940 pub name: ::prost::alloc::string::String,
1941 #[prost(message, optional, tag = "2")]
1942 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
1943}
1944#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1945#[repr(i32)]
1946pub enum WindowFrameUnits {
1947 Rows = 0,
1948 Range = 1,
1949 Groups = 2,
1950}
1951impl WindowFrameUnits {
1952 pub fn as_str_name(&self) -> &'static str {
1957 match self {
1958 Self::Rows => "ROWS",
1959 Self::Range => "RANGE",
1960 Self::Groups => "GROUPS",
1961 }
1962 }
1963 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1965 match value {
1966 "ROWS" => Some(Self::Rows),
1967 "RANGE" => Some(Self::Range),
1968 "GROUPS" => Some(Self::Groups),
1969 _ => None,
1970 }
1971 }
1972}
1973#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1974#[repr(i32)]
1975pub enum WindowFrameBoundType {
1976 CurrentRow = 0,
1977 Preceding = 1,
1978 Following = 2,
1979}
1980impl WindowFrameBoundType {
1981 pub fn as_str_name(&self) -> &'static str {
1986 match self {
1987 Self::CurrentRow => "CURRENT_ROW",
1988 Self::Preceding => "PRECEDING",
1989 Self::Following => "FOLLOWING",
1990 }
1991 }
1992 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1994 match value {
1995 "CURRENT_ROW" => Some(Self::CurrentRow),
1996 "PRECEDING" => Some(Self::Preceding),
1997 "FOLLOWING" => Some(Self::Following),
1998 _ => None,
1999 }
2000 }
2001}
2002#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2003#[repr(i32)]
2004pub enum DateUnit {
2005 Day = 0,
2006 DateMillisecond = 1,
2007}
2008impl DateUnit {
2009 pub fn as_str_name(&self) -> &'static str {
2014 match self {
2015 Self::Day => "Day",
2016 Self::DateMillisecond => "DateMillisecond",
2017 }
2018 }
2019 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2021 match value {
2022 "Day" => Some(Self::Day),
2023 "DateMillisecond" => Some(Self::DateMillisecond),
2024 _ => None,
2025 }
2026 }
2027}
2028#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2029#[repr(i32)]
2030pub enum InsertOp {
2031 Append = 0,
2032 Overwrite = 1,
2033 Replace = 2,
2034}
2035impl InsertOp {
2036 pub fn as_str_name(&self) -> &'static str {
2041 match self {
2042 Self::Append => "Append",
2043 Self::Overwrite => "Overwrite",
2044 Self::Replace => "Replace",
2045 }
2046 }
2047 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2049 match value {
2050 "Append" => Some(Self::Append),
2051 "Overwrite" => Some(Self::Overwrite),
2052 "Replace" => Some(Self::Replace),
2053 _ => None,
2054 }
2055 }
2056}
2057#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2058#[repr(i32)]
2059pub enum PartitionMode {
2060 CollectLeft = 0,
2061 Partitioned = 1,
2062 Auto = 2,
2063}
2064impl PartitionMode {
2065 pub fn as_str_name(&self) -> &'static str {
2070 match self {
2071 Self::CollectLeft => "COLLECT_LEFT",
2072 Self::Partitioned => "PARTITIONED",
2073 Self::Auto => "AUTO",
2074 }
2075 }
2076 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2078 match value {
2079 "COLLECT_LEFT" => Some(Self::CollectLeft),
2080 "PARTITIONED" => Some(Self::Partitioned),
2081 "AUTO" => Some(Self::Auto),
2082 _ => None,
2083 }
2084 }
2085}
2086#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2087#[repr(i32)]
2088pub enum StreamPartitionMode {
2089 SinglePartition = 0,
2090 PartitionedExec = 1,
2091}
2092impl StreamPartitionMode {
2093 pub fn as_str_name(&self) -> &'static str {
2098 match self {
2099 Self::SinglePartition => "SINGLE_PARTITION",
2100 Self::PartitionedExec => "PARTITIONED_EXEC",
2101 }
2102 }
2103 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2105 match value {
2106 "SINGLE_PARTITION" => Some(Self::SinglePartition),
2107 "PARTITIONED_EXEC" => Some(Self::PartitionedExec),
2108 _ => None,
2109 }
2110 }
2111}
2112#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2113#[repr(i32)]
2114pub enum AggregateMode {
2115 Partial = 0,
2116 Final = 1,
2117 FinalPartitioned = 2,
2118 Single = 3,
2119 SinglePartitioned = 4,
2120}
2121impl AggregateMode {
2122 pub fn as_str_name(&self) -> &'static str {
2127 match self {
2128 Self::Partial => "PARTIAL",
2129 Self::Final => "FINAL",
2130 Self::FinalPartitioned => "FINAL_PARTITIONED",
2131 Self::Single => "SINGLE",
2132 Self::SinglePartitioned => "SINGLE_PARTITIONED",
2133 }
2134 }
2135 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2137 match value {
2138 "PARTIAL" => Some(Self::Partial),
2139 "FINAL" => Some(Self::Final),
2140 "FINAL_PARTITIONED" => Some(Self::FinalPartitioned),
2141 "SINGLE" => Some(Self::Single),
2142 "SINGLE_PARTITIONED" => Some(Self::SinglePartitioned),
2143 _ => None,
2144 }
2145 }
2146}