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(string, repeated, tag = "7")]
119 pub table_partition_cols: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
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(bool, tag = "7")]
373 pub null_equals_null: bool,
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"
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 }
1122}
1123#[derive(Clone, PartialEq, ::prost::Message)]
1124pub struct PartitionColumn {
1125 #[prost(string, tag = "1")]
1126 pub name: ::prost::alloc::string::String,
1127 #[prost(message, optional, tag = "2")]
1128 pub arrow_type: ::core::option::Option<super::datafusion_common::ArrowType>,
1129}
1130#[derive(Clone, PartialEq, ::prost::Message)]
1131pub struct FileSinkConfig {
1132 #[prost(string, tag = "1")]
1133 pub object_store_url: ::prost::alloc::string::String,
1134 #[prost(message, repeated, tag = "2")]
1135 pub file_groups: ::prost::alloc::vec::Vec<PartitionedFile>,
1136 #[prost(string, repeated, tag = "3")]
1137 pub table_paths: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1138 #[prost(message, optional, tag = "4")]
1139 pub output_schema: ::core::option::Option<super::datafusion_common::Schema>,
1140 #[prost(message, repeated, tag = "5")]
1141 pub table_partition_cols: ::prost::alloc::vec::Vec<PartitionColumn>,
1142 #[prost(bool, tag = "9")]
1143 pub keep_partition_by_columns: bool,
1144 #[prost(enumeration = "InsertOp", tag = "10")]
1145 pub insert_op: i32,
1146 #[prost(string, tag = "11")]
1147 pub file_extension: ::prost::alloc::string::String,
1148}
1149#[derive(Clone, PartialEq, ::prost::Message)]
1150pub struct JsonSink {
1151 #[prost(message, optional, tag = "1")]
1152 pub config: ::core::option::Option<FileSinkConfig>,
1153 #[prost(message, optional, tag = "2")]
1154 pub writer_options: ::core::option::Option<
1155 super::datafusion_common::JsonWriterOptions,
1156 >,
1157}
1158#[derive(Clone, PartialEq, ::prost::Message)]
1159pub struct JsonSinkExecNode {
1160 #[prost(message, optional, boxed, tag = "1")]
1161 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1162 #[prost(message, optional, tag = "2")]
1163 pub sink: ::core::option::Option<JsonSink>,
1164 #[prost(message, optional, tag = "3")]
1165 pub sink_schema: ::core::option::Option<super::datafusion_common::Schema>,
1166 #[prost(message, optional, tag = "4")]
1167 pub sort_order: ::core::option::Option<PhysicalSortExprNodeCollection>,
1168}
1169#[derive(Clone, PartialEq, ::prost::Message)]
1170pub struct CsvSink {
1171 #[prost(message, optional, tag = "1")]
1172 pub config: ::core::option::Option<FileSinkConfig>,
1173 #[prost(message, optional, tag = "2")]
1174 pub writer_options: ::core::option::Option<
1175 super::datafusion_common::CsvWriterOptions,
1176 >,
1177}
1178#[derive(Clone, PartialEq, ::prost::Message)]
1179pub struct CsvSinkExecNode {
1180 #[prost(message, optional, boxed, tag = "1")]
1181 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1182 #[prost(message, optional, tag = "2")]
1183 pub sink: ::core::option::Option<CsvSink>,
1184 #[prost(message, optional, tag = "3")]
1185 pub sink_schema: ::core::option::Option<super::datafusion_common::Schema>,
1186 #[prost(message, optional, tag = "4")]
1187 pub sort_order: ::core::option::Option<PhysicalSortExprNodeCollection>,
1188}
1189#[derive(Clone, PartialEq, ::prost::Message)]
1190pub struct ParquetSink {
1191 #[prost(message, optional, tag = "1")]
1192 pub config: ::core::option::Option<FileSinkConfig>,
1193 #[prost(message, optional, tag = "2")]
1194 pub parquet_options: ::core::option::Option<
1195 super::datafusion_common::TableParquetOptions,
1196 >,
1197}
1198#[derive(Clone, PartialEq, ::prost::Message)]
1199pub struct ParquetSinkExecNode {
1200 #[prost(message, optional, boxed, tag = "1")]
1201 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1202 #[prost(message, optional, tag = "2")]
1203 pub sink: ::core::option::Option<ParquetSink>,
1204 #[prost(message, optional, tag = "3")]
1205 pub sink_schema: ::core::option::Option<super::datafusion_common::Schema>,
1206 #[prost(message, optional, tag = "4")]
1207 pub sort_order: ::core::option::Option<PhysicalSortExprNodeCollection>,
1208}
1209#[derive(Clone, PartialEq, ::prost::Message)]
1210pub struct UnnestExecNode {
1211 #[prost(message, optional, boxed, tag = "1")]
1212 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1213 #[prost(message, optional, tag = "2")]
1214 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
1215 #[prost(message, repeated, tag = "3")]
1216 pub list_type_columns: ::prost::alloc::vec::Vec<ListUnnest>,
1217 #[prost(uint64, repeated, tag = "4")]
1218 pub struct_type_columns: ::prost::alloc::vec::Vec<u64>,
1219 #[prost(message, optional, tag = "5")]
1220 pub options: ::core::option::Option<UnnestOptions>,
1221}
1222#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1223pub struct ListUnnest {
1224 #[prost(uint32, tag = "1")]
1225 pub index_in_input_schema: u32,
1226 #[prost(uint32, tag = "2")]
1227 pub depth: u32,
1228}
1229#[derive(Clone, PartialEq, ::prost::Message)]
1230pub struct PhysicalExtensionNode {
1231 #[prost(bytes = "vec", tag = "1")]
1232 pub node: ::prost::alloc::vec::Vec<u8>,
1233 #[prost(message, repeated, tag = "2")]
1234 pub inputs: ::prost::alloc::vec::Vec<PhysicalPlanNode>,
1235}
1236#[derive(Clone, PartialEq, ::prost::Message)]
1238pub struct PhysicalExprNode {
1239 #[prost(
1240 oneof = "physical_expr_node::ExprType",
1241 tags = "1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 18, 19, 20"
1242 )]
1243 pub expr_type: ::core::option::Option<physical_expr_node::ExprType>,
1244}
1245pub mod physical_expr_node {
1247 #[derive(Clone, PartialEq, ::prost::Oneof)]
1248 pub enum ExprType {
1249 #[prost(message, tag = "1")]
1251 Column(super::PhysicalColumn),
1252 #[prost(message, tag = "2")]
1253 Literal(super::super::datafusion_common::ScalarValue),
1254 #[prost(message, tag = "3")]
1256 BinaryExpr(::prost::alloc::boxed::Box<super::PhysicalBinaryExprNode>),
1257 #[prost(message, tag = "4")]
1259 AggregateExpr(super::PhysicalAggregateExprNode),
1260 #[prost(message, tag = "5")]
1262 IsNullExpr(::prost::alloc::boxed::Box<super::PhysicalIsNull>),
1263 #[prost(message, tag = "6")]
1264 IsNotNullExpr(::prost::alloc::boxed::Box<super::PhysicalIsNotNull>),
1265 #[prost(message, tag = "7")]
1266 NotExpr(::prost::alloc::boxed::Box<super::PhysicalNot>),
1267 #[prost(message, tag = "8")]
1268 Case(::prost::alloc::boxed::Box<super::PhysicalCaseNode>),
1269 #[prost(message, tag = "9")]
1270 Cast(::prost::alloc::boxed::Box<super::PhysicalCastNode>),
1271 #[prost(message, tag = "10")]
1272 Sort(::prost::alloc::boxed::Box<super::PhysicalSortExprNode>),
1273 #[prost(message, tag = "11")]
1274 Negative(::prost::alloc::boxed::Box<super::PhysicalNegativeNode>),
1275 #[prost(message, tag = "12")]
1276 InList(::prost::alloc::boxed::Box<super::PhysicalInListNode>),
1277 #[prost(message, tag = "14")]
1279 TryCast(::prost::alloc::boxed::Box<super::PhysicalTryCastNode>),
1280 #[prost(message, tag = "15")]
1282 WindowExpr(super::PhysicalWindowExprNode),
1283 #[prost(message, tag = "16")]
1285 ScalarUdf(super::PhysicalScalarUdfNode),
1286 #[prost(message, tag = "18")]
1287 LikeExpr(::prost::alloc::boxed::Box<super::PhysicalLikeExprNode>),
1288 #[prost(message, tag = "19")]
1289 Extension(super::PhysicalExtensionExprNode),
1290 #[prost(message, tag = "20")]
1291 UnknownColumn(super::UnknownColumn),
1292 }
1293}
1294#[derive(Clone, PartialEq, ::prost::Message)]
1295pub struct PhysicalScalarUdfNode {
1296 #[prost(string, tag = "1")]
1297 pub name: ::prost::alloc::string::String,
1298 #[prost(message, repeated, tag = "2")]
1299 pub args: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1300 #[prost(bytes = "vec", optional, tag = "3")]
1301 pub fun_definition: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1302 #[prost(message, optional, tag = "4")]
1303 pub return_type: ::core::option::Option<super::datafusion_common::ArrowType>,
1304 #[prost(bool, tag = "5")]
1305 pub nullable: bool,
1306}
1307#[derive(Clone, PartialEq, ::prost::Message)]
1308pub struct PhysicalAggregateExprNode {
1309 #[prost(message, repeated, tag = "2")]
1310 pub expr: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1311 #[prost(message, repeated, tag = "5")]
1312 pub ordering_req: ::prost::alloc::vec::Vec<PhysicalSortExprNode>,
1313 #[prost(bool, tag = "3")]
1314 pub distinct: bool,
1315 #[prost(bool, tag = "6")]
1316 pub ignore_nulls: bool,
1317 #[prost(bytes = "vec", optional, tag = "7")]
1318 pub fun_definition: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1319 #[prost(oneof = "physical_aggregate_expr_node::AggregateFunction", tags = "4")]
1320 pub aggregate_function: ::core::option::Option<
1321 physical_aggregate_expr_node::AggregateFunction,
1322 >,
1323}
1324pub mod physical_aggregate_expr_node {
1326 #[derive(Clone, PartialEq, ::prost::Oneof)]
1327 pub enum AggregateFunction {
1328 #[prost(string, tag = "4")]
1329 UserDefinedAggrFunction(::prost::alloc::string::String),
1330 }
1331}
1332#[derive(Clone, PartialEq, ::prost::Message)]
1333pub struct PhysicalWindowExprNode {
1334 #[prost(message, repeated, tag = "4")]
1335 pub args: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1336 #[prost(message, repeated, tag = "5")]
1337 pub partition_by: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1338 #[prost(message, repeated, tag = "6")]
1339 pub order_by: ::prost::alloc::vec::Vec<PhysicalSortExprNode>,
1340 #[prost(message, optional, tag = "7")]
1341 pub window_frame: ::core::option::Option<WindowFrame>,
1342 #[prost(string, tag = "8")]
1343 pub name: ::prost::alloc::string::String,
1344 #[prost(bytes = "vec", optional, tag = "9")]
1345 pub fun_definition: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1346 #[prost(oneof = "physical_window_expr_node::WindowFunction", tags = "3, 10")]
1347 pub window_function: ::core::option::Option<
1348 physical_window_expr_node::WindowFunction,
1349 >,
1350}
1351pub mod physical_window_expr_node {
1353 #[derive(Clone, PartialEq, ::prost::Oneof)]
1354 pub enum WindowFunction {
1355 #[prost(string, tag = "3")]
1357 UserDefinedAggrFunction(::prost::alloc::string::String),
1358 #[prost(string, tag = "10")]
1359 UserDefinedWindowFunction(::prost::alloc::string::String),
1360 }
1361}
1362#[derive(Clone, PartialEq, ::prost::Message)]
1363pub struct PhysicalIsNull {
1364 #[prost(message, optional, boxed, tag = "1")]
1365 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1366}
1367#[derive(Clone, PartialEq, ::prost::Message)]
1368pub struct PhysicalIsNotNull {
1369 #[prost(message, optional, boxed, tag = "1")]
1370 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1371}
1372#[derive(Clone, PartialEq, ::prost::Message)]
1373pub struct PhysicalNot {
1374 #[prost(message, optional, boxed, tag = "1")]
1375 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1376}
1377#[derive(Clone, PartialEq, ::prost::Message)]
1378pub struct PhysicalAliasNode {
1379 #[prost(message, optional, tag = "1")]
1380 pub expr: ::core::option::Option<PhysicalExprNode>,
1381 #[prost(string, tag = "2")]
1382 pub alias: ::prost::alloc::string::String,
1383}
1384#[derive(Clone, PartialEq, ::prost::Message)]
1385pub struct PhysicalBinaryExprNode {
1386 #[prost(message, optional, boxed, tag = "1")]
1387 pub l: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1388 #[prost(message, optional, boxed, tag = "2")]
1389 pub r: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1390 #[prost(string, tag = "3")]
1391 pub op: ::prost::alloc::string::String,
1392}
1393#[derive(Clone, PartialEq, ::prost::Message)]
1394pub struct PhysicalDateTimeIntervalExprNode {
1395 #[prost(message, optional, tag = "1")]
1396 pub l: ::core::option::Option<PhysicalExprNode>,
1397 #[prost(message, optional, tag = "2")]
1398 pub r: ::core::option::Option<PhysicalExprNode>,
1399 #[prost(string, tag = "3")]
1400 pub op: ::prost::alloc::string::String,
1401}
1402#[derive(Clone, PartialEq, ::prost::Message)]
1403pub struct PhysicalLikeExprNode {
1404 #[prost(bool, tag = "1")]
1405 pub negated: bool,
1406 #[prost(bool, tag = "2")]
1407 pub case_insensitive: bool,
1408 #[prost(message, optional, boxed, tag = "3")]
1409 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1410 #[prost(message, optional, boxed, tag = "4")]
1411 pub pattern: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1412}
1413#[derive(Clone, PartialEq, ::prost::Message)]
1414pub struct PhysicalSortExprNode {
1415 #[prost(message, optional, boxed, tag = "1")]
1416 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1417 #[prost(bool, tag = "2")]
1418 pub asc: bool,
1419 #[prost(bool, tag = "3")]
1420 pub nulls_first: bool,
1421}
1422#[derive(Clone, PartialEq, ::prost::Message)]
1423pub struct PhysicalWhenThen {
1424 #[prost(message, optional, tag = "1")]
1425 pub when_expr: ::core::option::Option<PhysicalExprNode>,
1426 #[prost(message, optional, tag = "2")]
1427 pub then_expr: ::core::option::Option<PhysicalExprNode>,
1428}
1429#[derive(Clone, PartialEq, ::prost::Message)]
1430pub struct PhysicalInListNode {
1431 #[prost(message, optional, boxed, tag = "1")]
1432 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1433 #[prost(message, repeated, tag = "2")]
1434 pub list: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1435 #[prost(bool, tag = "3")]
1436 pub negated: bool,
1437}
1438#[derive(Clone, PartialEq, ::prost::Message)]
1439pub struct PhysicalCaseNode {
1440 #[prost(message, optional, boxed, tag = "1")]
1441 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1442 #[prost(message, repeated, tag = "2")]
1443 pub when_then_expr: ::prost::alloc::vec::Vec<PhysicalWhenThen>,
1444 #[prost(message, optional, boxed, tag = "3")]
1445 pub else_expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1446}
1447#[derive(Clone, PartialEq, ::prost::Message)]
1448pub struct PhysicalTryCastNode {
1449 #[prost(message, optional, boxed, tag = "1")]
1450 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1451 #[prost(message, optional, tag = "2")]
1452 pub arrow_type: ::core::option::Option<super::datafusion_common::ArrowType>,
1453}
1454#[derive(Clone, PartialEq, ::prost::Message)]
1455pub struct PhysicalCastNode {
1456 #[prost(message, optional, boxed, tag = "1")]
1457 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1458 #[prost(message, optional, tag = "2")]
1459 pub arrow_type: ::core::option::Option<super::datafusion_common::ArrowType>,
1460}
1461#[derive(Clone, PartialEq, ::prost::Message)]
1462pub struct PhysicalNegativeNode {
1463 #[prost(message, optional, boxed, tag = "1")]
1464 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1465}
1466#[derive(Clone, PartialEq, ::prost::Message)]
1467pub struct PhysicalExtensionExprNode {
1468 #[prost(bytes = "vec", tag = "1")]
1469 pub expr: ::prost::alloc::vec::Vec<u8>,
1470 #[prost(message, repeated, tag = "2")]
1471 pub inputs: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1472}
1473#[derive(Clone, PartialEq, ::prost::Message)]
1474pub struct FilterExecNode {
1475 #[prost(message, optional, boxed, tag = "1")]
1476 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1477 #[prost(message, optional, tag = "2")]
1478 pub expr: ::core::option::Option<PhysicalExprNode>,
1479 #[prost(uint32, tag = "3")]
1480 pub default_filter_selectivity: u32,
1481 #[prost(uint32, repeated, tag = "9")]
1482 pub projection: ::prost::alloc::vec::Vec<u32>,
1483}
1484#[derive(Clone, PartialEq, ::prost::Message)]
1485pub struct FileGroup {
1486 #[prost(message, repeated, tag = "1")]
1487 pub files: ::prost::alloc::vec::Vec<PartitionedFile>,
1488}
1489#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1490pub struct ScanLimit {
1491 #[prost(uint32, tag = "1")]
1493 pub limit: u32,
1494}
1495#[derive(Clone, PartialEq, ::prost::Message)]
1496pub struct PhysicalSortExprNodeCollection {
1497 #[prost(message, repeated, tag = "1")]
1498 pub physical_sort_expr_nodes: ::prost::alloc::vec::Vec<PhysicalSortExprNode>,
1499}
1500#[derive(Clone, PartialEq, ::prost::Message)]
1501pub struct FileScanExecConf {
1502 #[prost(message, repeated, tag = "1")]
1503 pub file_groups: ::prost::alloc::vec::Vec<FileGroup>,
1504 #[prost(message, optional, tag = "2")]
1505 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
1506 #[prost(uint32, repeated, tag = "4")]
1507 pub projection: ::prost::alloc::vec::Vec<u32>,
1508 #[prost(message, optional, tag = "5")]
1509 pub limit: ::core::option::Option<ScanLimit>,
1510 #[prost(message, optional, tag = "6")]
1511 pub statistics: ::core::option::Option<super::datafusion_common::Statistics>,
1512 #[prost(string, repeated, tag = "7")]
1513 pub table_partition_cols: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1514 #[prost(string, tag = "8")]
1515 pub object_store_url: ::prost::alloc::string::String,
1516 #[prost(message, repeated, tag = "9")]
1517 pub output_ordering: ::prost::alloc::vec::Vec<PhysicalSortExprNodeCollection>,
1518 #[prost(message, optional, tag = "11")]
1519 pub constraints: ::core::option::Option<super::datafusion_common::Constraints>,
1520 #[prost(uint64, optional, tag = "12")]
1521 pub batch_size: ::core::option::Option<u64>,
1522}
1523#[derive(Clone, PartialEq, ::prost::Message)]
1524pub struct ParquetScanExecNode {
1525 #[prost(message, optional, tag = "1")]
1526 pub base_conf: ::core::option::Option<FileScanExecConf>,
1527 #[prost(message, optional, tag = "3")]
1528 pub predicate: ::core::option::Option<PhysicalExprNode>,
1529 #[prost(message, optional, tag = "4")]
1530 pub parquet_options: ::core::option::Option<
1531 super::datafusion_common::TableParquetOptions,
1532 >,
1533}
1534#[derive(Clone, PartialEq, ::prost::Message)]
1535pub struct CsvScanExecNode {
1536 #[prost(message, optional, tag = "1")]
1537 pub base_conf: ::core::option::Option<FileScanExecConf>,
1538 #[prost(bool, tag = "2")]
1539 pub has_header: bool,
1540 #[prost(string, tag = "3")]
1541 pub delimiter: ::prost::alloc::string::String,
1542 #[prost(string, tag = "4")]
1543 pub quote: ::prost::alloc::string::String,
1544 #[prost(bool, tag = "7")]
1545 pub newlines_in_values: bool,
1546 #[prost(oneof = "csv_scan_exec_node::OptionalEscape", tags = "5")]
1547 pub optional_escape: ::core::option::Option<csv_scan_exec_node::OptionalEscape>,
1548 #[prost(oneof = "csv_scan_exec_node::OptionalComment", tags = "6")]
1549 pub optional_comment: ::core::option::Option<csv_scan_exec_node::OptionalComment>,
1550}
1551pub mod csv_scan_exec_node {
1553 #[derive(Clone, PartialEq, ::prost::Oneof)]
1554 pub enum OptionalEscape {
1555 #[prost(string, tag = "5")]
1556 Escape(::prost::alloc::string::String),
1557 }
1558 #[derive(Clone, PartialEq, ::prost::Oneof)]
1559 pub enum OptionalComment {
1560 #[prost(string, tag = "6")]
1561 Comment(::prost::alloc::string::String),
1562 }
1563}
1564#[derive(Clone, PartialEq, ::prost::Message)]
1565pub struct JsonScanExecNode {
1566 #[prost(message, optional, tag = "1")]
1567 pub base_conf: ::core::option::Option<FileScanExecConf>,
1568}
1569#[derive(Clone, PartialEq, ::prost::Message)]
1570pub struct AvroScanExecNode {
1571 #[prost(message, optional, tag = "1")]
1572 pub base_conf: ::core::option::Option<FileScanExecConf>,
1573}
1574#[derive(Clone, PartialEq, ::prost::Message)]
1575pub struct HashJoinExecNode {
1576 #[prost(message, optional, boxed, tag = "1")]
1577 pub left: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1578 #[prost(message, optional, boxed, tag = "2")]
1579 pub right: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1580 #[prost(message, repeated, tag = "3")]
1581 pub on: ::prost::alloc::vec::Vec<JoinOn>,
1582 #[prost(enumeration = "super::datafusion_common::JoinType", tag = "4")]
1583 pub join_type: i32,
1584 #[prost(enumeration = "PartitionMode", tag = "6")]
1585 pub partition_mode: i32,
1586 #[prost(bool, tag = "7")]
1587 pub null_equals_null: bool,
1588 #[prost(message, optional, tag = "8")]
1589 pub filter: ::core::option::Option<JoinFilter>,
1590 #[prost(uint32, repeated, tag = "9")]
1591 pub projection: ::prost::alloc::vec::Vec<u32>,
1592}
1593#[derive(Clone, PartialEq, ::prost::Message)]
1594pub struct SymmetricHashJoinExecNode {
1595 #[prost(message, optional, boxed, tag = "1")]
1596 pub left: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1597 #[prost(message, optional, boxed, tag = "2")]
1598 pub right: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1599 #[prost(message, repeated, tag = "3")]
1600 pub on: ::prost::alloc::vec::Vec<JoinOn>,
1601 #[prost(enumeration = "super::datafusion_common::JoinType", tag = "4")]
1602 pub join_type: i32,
1603 #[prost(enumeration = "StreamPartitionMode", tag = "6")]
1604 pub partition_mode: i32,
1605 #[prost(bool, tag = "7")]
1606 pub null_equals_null: bool,
1607 #[prost(message, optional, tag = "8")]
1608 pub filter: ::core::option::Option<JoinFilter>,
1609 #[prost(message, repeated, tag = "9")]
1610 pub left_sort_exprs: ::prost::alloc::vec::Vec<PhysicalSortExprNode>,
1611 #[prost(message, repeated, tag = "10")]
1612 pub right_sort_exprs: ::prost::alloc::vec::Vec<PhysicalSortExprNode>,
1613}
1614#[derive(Clone, PartialEq, ::prost::Message)]
1615pub struct InterleaveExecNode {
1616 #[prost(message, repeated, tag = "1")]
1617 pub inputs: ::prost::alloc::vec::Vec<PhysicalPlanNode>,
1618}
1619#[derive(Clone, PartialEq, ::prost::Message)]
1620pub struct UnionExecNode {
1621 #[prost(message, repeated, tag = "1")]
1622 pub inputs: ::prost::alloc::vec::Vec<PhysicalPlanNode>,
1623}
1624#[derive(Clone, PartialEq, ::prost::Message)]
1625pub struct ExplainExecNode {
1626 #[prost(message, optional, tag = "1")]
1627 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
1628 #[prost(message, repeated, tag = "2")]
1629 pub stringified_plans: ::prost::alloc::vec::Vec<StringifiedPlan>,
1630 #[prost(bool, tag = "3")]
1631 pub verbose: bool,
1632}
1633#[derive(Clone, PartialEq, ::prost::Message)]
1634pub struct AnalyzeExecNode {
1635 #[prost(bool, tag = "1")]
1636 pub verbose: bool,
1637 #[prost(bool, tag = "2")]
1638 pub show_statistics: bool,
1639 #[prost(message, optional, boxed, tag = "3")]
1640 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1641 #[prost(message, optional, tag = "4")]
1642 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
1643}
1644#[derive(Clone, PartialEq, ::prost::Message)]
1645pub struct CrossJoinExecNode {
1646 #[prost(message, optional, boxed, tag = "1")]
1647 pub left: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1648 #[prost(message, optional, boxed, tag = "2")]
1649 pub right: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1650}
1651#[derive(Clone, PartialEq, ::prost::Message)]
1652pub struct PhysicalColumn {
1653 #[prost(string, tag = "1")]
1654 pub name: ::prost::alloc::string::String,
1655 #[prost(uint32, tag = "2")]
1656 pub index: u32,
1657}
1658#[derive(Clone, PartialEq, ::prost::Message)]
1659pub struct UnknownColumn {
1660 #[prost(string, tag = "1")]
1661 pub name: ::prost::alloc::string::String,
1662}
1663#[derive(Clone, PartialEq, ::prost::Message)]
1664pub struct JoinOn {
1665 #[prost(message, optional, tag = "1")]
1666 pub left: ::core::option::Option<PhysicalExprNode>,
1667 #[prost(message, optional, tag = "2")]
1668 pub right: ::core::option::Option<PhysicalExprNode>,
1669}
1670#[derive(Clone, PartialEq, ::prost::Message)]
1671pub struct EmptyExecNode {
1672 #[prost(message, optional, tag = "1")]
1673 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
1674}
1675#[derive(Clone, PartialEq, ::prost::Message)]
1676pub struct PlaceholderRowExecNode {
1677 #[prost(message, optional, tag = "1")]
1678 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
1679}
1680#[derive(Clone, PartialEq, ::prost::Message)]
1681pub struct ProjectionExecNode {
1682 #[prost(message, optional, boxed, tag = "1")]
1683 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1684 #[prost(message, repeated, tag = "2")]
1685 pub expr: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1686 #[prost(string, repeated, tag = "3")]
1687 pub expr_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1688}
1689#[derive(Clone, PartialEq, ::prost::Message)]
1690pub struct PartiallySortedInputOrderMode {
1691 #[prost(uint64, repeated, tag = "6")]
1692 pub columns: ::prost::alloc::vec::Vec<u64>,
1693}
1694#[derive(Clone, PartialEq, ::prost::Message)]
1695pub struct WindowAggExecNode {
1696 #[prost(message, optional, boxed, tag = "1")]
1697 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1698 #[prost(message, repeated, tag = "2")]
1699 pub window_expr: ::prost::alloc::vec::Vec<PhysicalWindowExprNode>,
1700 #[prost(message, repeated, tag = "5")]
1701 pub partition_keys: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1702 #[prost(oneof = "window_agg_exec_node::InputOrderMode", tags = "7, 8, 9")]
1704 pub input_order_mode: ::core::option::Option<window_agg_exec_node::InputOrderMode>,
1705}
1706pub mod window_agg_exec_node {
1708 #[derive(Clone, PartialEq, ::prost::Oneof)]
1710 pub enum InputOrderMode {
1711 #[prost(message, tag = "7")]
1712 Linear(super::super::datafusion_common::EmptyMessage),
1713 #[prost(message, tag = "8")]
1714 PartiallySorted(super::PartiallySortedInputOrderMode),
1715 #[prost(message, tag = "9")]
1716 Sorted(super::super::datafusion_common::EmptyMessage),
1717 }
1718}
1719#[derive(Clone, PartialEq, ::prost::Message)]
1720pub struct MaybeFilter {
1721 #[prost(message, optional, tag = "1")]
1722 pub expr: ::core::option::Option<PhysicalExprNode>,
1723}
1724#[derive(Clone, PartialEq, ::prost::Message)]
1725pub struct MaybePhysicalSortExprs {
1726 #[prost(message, repeated, tag = "1")]
1727 pub sort_expr: ::prost::alloc::vec::Vec<PhysicalSortExprNode>,
1728}
1729#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1730pub struct AggLimit {
1731 #[prost(uint64, tag = "1")]
1733 pub limit: u64,
1734}
1735#[derive(Clone, PartialEq, ::prost::Message)]
1736pub struct AggregateExecNode {
1737 #[prost(message, repeated, tag = "1")]
1738 pub group_expr: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1739 #[prost(message, repeated, tag = "2")]
1740 pub aggr_expr: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1741 #[prost(enumeration = "AggregateMode", tag = "3")]
1742 pub mode: i32,
1743 #[prost(message, optional, boxed, tag = "4")]
1744 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1745 #[prost(string, repeated, tag = "5")]
1746 pub group_expr_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1747 #[prost(string, repeated, tag = "6")]
1748 pub aggr_expr_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1749 #[prost(message, optional, tag = "7")]
1751 pub input_schema: ::core::option::Option<super::datafusion_common::Schema>,
1752 #[prost(message, repeated, tag = "8")]
1753 pub null_expr: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1754 #[prost(bool, repeated, tag = "9")]
1755 pub groups: ::prost::alloc::vec::Vec<bool>,
1756 #[prost(message, repeated, tag = "10")]
1757 pub filter_expr: ::prost::alloc::vec::Vec<MaybeFilter>,
1758 #[prost(message, optional, tag = "11")]
1759 pub limit: ::core::option::Option<AggLimit>,
1760}
1761#[derive(Clone, PartialEq, ::prost::Message)]
1762pub struct GlobalLimitExecNode {
1763 #[prost(message, optional, boxed, tag = "1")]
1764 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1765 #[prost(uint32, tag = "2")]
1767 pub skip: u32,
1768 #[prost(int64, tag = "3")]
1770 pub fetch: i64,
1771}
1772#[derive(Clone, PartialEq, ::prost::Message)]
1773pub struct LocalLimitExecNode {
1774 #[prost(message, optional, boxed, tag = "1")]
1775 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1776 #[prost(uint32, tag = "2")]
1777 pub fetch: u32,
1778}
1779#[derive(Clone, PartialEq, ::prost::Message)]
1780pub struct SortExecNode {
1781 #[prost(message, optional, boxed, tag = "1")]
1782 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1783 #[prost(message, repeated, tag = "2")]
1784 pub expr: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1785 #[prost(int64, tag = "3")]
1787 pub fetch: i64,
1788 #[prost(bool, tag = "4")]
1789 pub preserve_partitioning: bool,
1790}
1791#[derive(Clone, PartialEq, ::prost::Message)]
1792pub struct SortPreservingMergeExecNode {
1793 #[prost(message, optional, boxed, tag = "1")]
1794 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1795 #[prost(message, repeated, tag = "2")]
1796 pub expr: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1797 #[prost(int64, tag = "3")]
1799 pub fetch: i64,
1800}
1801#[derive(Clone, PartialEq, ::prost::Message)]
1802pub struct NestedLoopJoinExecNode {
1803 #[prost(message, optional, boxed, tag = "1")]
1804 pub left: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1805 #[prost(message, optional, boxed, tag = "2")]
1806 pub right: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1807 #[prost(enumeration = "super::datafusion_common::JoinType", tag = "3")]
1808 pub join_type: i32,
1809 #[prost(message, optional, tag = "4")]
1810 pub filter: ::core::option::Option<JoinFilter>,
1811 #[prost(uint32, repeated, tag = "5")]
1812 pub projection: ::prost::alloc::vec::Vec<u32>,
1813}
1814#[derive(Clone, PartialEq, ::prost::Message)]
1815pub struct CoalesceBatchesExecNode {
1816 #[prost(message, optional, boxed, tag = "1")]
1817 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1818 #[prost(uint32, tag = "2")]
1819 pub target_batch_size: u32,
1820 #[prost(uint32, optional, tag = "3")]
1821 pub fetch: ::core::option::Option<u32>,
1822}
1823#[derive(Clone, PartialEq, ::prost::Message)]
1824pub struct CoalescePartitionsExecNode {
1825 #[prost(message, optional, boxed, tag = "1")]
1826 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1827}
1828#[derive(Clone, PartialEq, ::prost::Message)]
1829pub struct PhysicalHashRepartition {
1830 #[prost(message, repeated, tag = "1")]
1831 pub hash_expr: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1832 #[prost(uint64, tag = "2")]
1833 pub partition_count: u64,
1834}
1835#[derive(Clone, PartialEq, ::prost::Message)]
1836pub struct RepartitionExecNode {
1837 #[prost(message, optional, boxed, tag = "1")]
1838 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1839 #[prost(message, optional, tag = "5")]
1845 pub partitioning: ::core::option::Option<Partitioning>,
1846}
1847#[derive(Clone, PartialEq, ::prost::Message)]
1848pub struct Partitioning {
1849 #[prost(oneof = "partitioning::PartitionMethod", tags = "1, 2, 3")]
1850 pub partition_method: ::core::option::Option<partitioning::PartitionMethod>,
1851}
1852pub mod partitioning {
1854 #[derive(Clone, PartialEq, ::prost::Oneof)]
1855 pub enum PartitionMethod {
1856 #[prost(uint64, tag = "1")]
1857 RoundRobin(u64),
1858 #[prost(message, tag = "2")]
1859 Hash(super::PhysicalHashRepartition),
1860 #[prost(uint64, tag = "3")]
1861 Unknown(u64),
1862 }
1863}
1864#[derive(Clone, PartialEq, ::prost::Message)]
1865pub struct JoinFilter {
1866 #[prost(message, optional, tag = "1")]
1867 pub expression: ::core::option::Option<PhysicalExprNode>,
1868 #[prost(message, repeated, tag = "2")]
1869 pub column_indices: ::prost::alloc::vec::Vec<ColumnIndex>,
1870 #[prost(message, optional, tag = "3")]
1871 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
1872}
1873#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1874pub struct ColumnIndex {
1875 #[prost(uint32, tag = "1")]
1876 pub index: u32,
1877 #[prost(enumeration = "super::datafusion_common::JoinSide", tag = "2")]
1878 pub side: i32,
1879}
1880#[derive(Clone, PartialEq, ::prost::Message)]
1881pub struct PartitionedFile {
1882 #[prost(string, tag = "1")]
1883 pub path: ::prost::alloc::string::String,
1884 #[prost(uint64, tag = "2")]
1885 pub size: u64,
1886 #[prost(uint64, tag = "3")]
1887 pub last_modified_ns: u64,
1888 #[prost(message, repeated, tag = "4")]
1889 pub partition_values: ::prost::alloc::vec::Vec<
1890 super::datafusion_common::ScalarValue,
1891 >,
1892 #[prost(message, optional, tag = "5")]
1893 pub range: ::core::option::Option<FileRange>,
1894 #[prost(message, optional, tag = "6")]
1895 pub statistics: ::core::option::Option<super::datafusion_common::Statistics>,
1896}
1897#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1898pub struct FileRange {
1899 #[prost(int64, tag = "1")]
1900 pub start: i64,
1901 #[prost(int64, tag = "2")]
1902 pub end: i64,
1903}
1904#[derive(Clone, PartialEq, ::prost::Message)]
1905pub struct PartitionStats {
1906 #[prost(int64, tag = "1")]
1907 pub num_rows: i64,
1908 #[prost(int64, tag = "2")]
1909 pub num_batches: i64,
1910 #[prost(int64, tag = "3")]
1911 pub num_bytes: i64,
1912 #[prost(message, repeated, tag = "4")]
1913 pub column_stats: ::prost::alloc::vec::Vec<super::datafusion_common::ColumnStats>,
1914}
1915#[derive(Clone, PartialEq, ::prost::Message)]
1916pub struct RecursiveQueryNode {
1917 #[prost(string, tag = "1")]
1918 pub name: ::prost::alloc::string::String,
1919 #[prost(message, optional, boxed, tag = "2")]
1920 pub static_term: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
1921 #[prost(message, optional, boxed, tag = "3")]
1922 pub recursive_term: ::core::option::Option<
1923 ::prost::alloc::boxed::Box<LogicalPlanNode>,
1924 >,
1925 #[prost(bool, tag = "4")]
1926 pub is_distinct: bool,
1927}
1928#[derive(Clone, PartialEq, ::prost::Message)]
1929pub struct CteWorkTableScanNode {
1930 #[prost(string, tag = "1")]
1931 pub name: ::prost::alloc::string::String,
1932 #[prost(message, optional, tag = "2")]
1933 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
1934}
1935#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1936#[repr(i32)]
1937pub enum WindowFrameUnits {
1938 Rows = 0,
1939 Range = 1,
1940 Groups = 2,
1941}
1942impl WindowFrameUnits {
1943 pub fn as_str_name(&self) -> &'static str {
1948 match self {
1949 Self::Rows => "ROWS",
1950 Self::Range => "RANGE",
1951 Self::Groups => "GROUPS",
1952 }
1953 }
1954 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1956 match value {
1957 "ROWS" => Some(Self::Rows),
1958 "RANGE" => Some(Self::Range),
1959 "GROUPS" => Some(Self::Groups),
1960 _ => None,
1961 }
1962 }
1963}
1964#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1965#[repr(i32)]
1966pub enum WindowFrameBoundType {
1967 CurrentRow = 0,
1968 Preceding = 1,
1969 Following = 2,
1970}
1971impl WindowFrameBoundType {
1972 pub fn as_str_name(&self) -> &'static str {
1977 match self {
1978 Self::CurrentRow => "CURRENT_ROW",
1979 Self::Preceding => "PRECEDING",
1980 Self::Following => "FOLLOWING",
1981 }
1982 }
1983 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1985 match value {
1986 "CURRENT_ROW" => Some(Self::CurrentRow),
1987 "PRECEDING" => Some(Self::Preceding),
1988 "FOLLOWING" => Some(Self::Following),
1989 _ => None,
1990 }
1991 }
1992}
1993#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1994#[repr(i32)]
1995pub enum DateUnit {
1996 Day = 0,
1997 DateMillisecond = 1,
1998}
1999impl DateUnit {
2000 pub fn as_str_name(&self) -> &'static str {
2005 match self {
2006 Self::Day => "Day",
2007 Self::DateMillisecond => "DateMillisecond",
2008 }
2009 }
2010 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2012 match value {
2013 "Day" => Some(Self::Day),
2014 "DateMillisecond" => Some(Self::DateMillisecond),
2015 _ => None,
2016 }
2017 }
2018}
2019#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2020#[repr(i32)]
2021pub enum InsertOp {
2022 Append = 0,
2023 Overwrite = 1,
2024 Replace = 2,
2025}
2026impl InsertOp {
2027 pub fn as_str_name(&self) -> &'static str {
2032 match self {
2033 Self::Append => "Append",
2034 Self::Overwrite => "Overwrite",
2035 Self::Replace => "Replace",
2036 }
2037 }
2038 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2040 match value {
2041 "Append" => Some(Self::Append),
2042 "Overwrite" => Some(Self::Overwrite),
2043 "Replace" => Some(Self::Replace),
2044 _ => None,
2045 }
2046 }
2047}
2048#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2049#[repr(i32)]
2050pub enum PartitionMode {
2051 CollectLeft = 0,
2052 Partitioned = 1,
2053 Auto = 2,
2054}
2055impl PartitionMode {
2056 pub fn as_str_name(&self) -> &'static str {
2061 match self {
2062 Self::CollectLeft => "COLLECT_LEFT",
2063 Self::Partitioned => "PARTITIONED",
2064 Self::Auto => "AUTO",
2065 }
2066 }
2067 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2069 match value {
2070 "COLLECT_LEFT" => Some(Self::CollectLeft),
2071 "PARTITIONED" => Some(Self::Partitioned),
2072 "AUTO" => Some(Self::Auto),
2073 _ => None,
2074 }
2075 }
2076}
2077#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2078#[repr(i32)]
2079pub enum StreamPartitionMode {
2080 SinglePartition = 0,
2081 PartitionedExec = 1,
2082}
2083impl StreamPartitionMode {
2084 pub fn as_str_name(&self) -> &'static str {
2089 match self {
2090 Self::SinglePartition => "SINGLE_PARTITION",
2091 Self::PartitionedExec => "PARTITIONED_EXEC",
2092 }
2093 }
2094 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2096 match value {
2097 "SINGLE_PARTITION" => Some(Self::SinglePartition),
2098 "PARTITIONED_EXEC" => Some(Self::PartitionedExec),
2099 _ => None,
2100 }
2101 }
2102}
2103#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2104#[repr(i32)]
2105pub enum AggregateMode {
2106 Partial = 0,
2107 Final = 1,
2108 FinalPartitioned = 2,
2109 Single = 3,
2110 SinglePartitioned = 4,
2111}
2112impl AggregateMode {
2113 pub fn as_str_name(&self) -> &'static str {
2118 match self {
2119 Self::Partial => "PARTIAL",
2120 Self::Final => "FINAL",
2121 Self::FinalPartitioned => "FINAL_PARTITIONED",
2122 Self::Single => "SINGLE",
2123 Self::SinglePartitioned => "SINGLE_PARTITIONED",
2124 }
2125 }
2126 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2128 match value {
2129 "PARTIAL" => Some(Self::Partial),
2130 "FINAL" => Some(Self::Final),
2131 "FINAL_PARTITIONED" => Some(Self::FinalPartitioned),
2132 "SINGLE" => Some(Self::Single),
2133 "SINGLE_PARTITIONED" => Some(Self::SinglePartitioned),
2134 _ => None,
2135 }
2136 }
2137}