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