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