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"
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 }
1158}
1159#[derive(Clone, PartialEq, ::prost::Message)]
1160pub struct PartitionColumn {
1161 #[prost(string, tag = "1")]
1162 pub name: ::prost::alloc::string::String,
1163 #[prost(message, optional, tag = "2")]
1164 pub arrow_type: ::core::option::Option<super::datafusion_common::ArrowType>,
1165}
1166#[derive(Clone, PartialEq, ::prost::Message)]
1167pub struct FileSinkConfig {
1168 #[prost(string, tag = "1")]
1169 pub object_store_url: ::prost::alloc::string::String,
1170 #[prost(message, repeated, tag = "2")]
1171 pub file_groups: ::prost::alloc::vec::Vec<PartitionedFile>,
1172 #[prost(string, repeated, tag = "3")]
1173 pub table_paths: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1174 #[prost(message, optional, tag = "4")]
1175 pub output_schema: ::core::option::Option<super::datafusion_common::Schema>,
1176 #[prost(message, repeated, tag = "5")]
1177 pub table_partition_cols: ::prost::alloc::vec::Vec<PartitionColumn>,
1178 #[prost(bool, tag = "9")]
1179 pub keep_partition_by_columns: bool,
1180 #[prost(enumeration = "InsertOp", tag = "10")]
1181 pub insert_op: i32,
1182 #[prost(string, tag = "11")]
1183 pub file_extension: ::prost::alloc::string::String,
1184}
1185#[derive(Clone, PartialEq, ::prost::Message)]
1186pub struct JsonSink {
1187 #[prost(message, optional, tag = "1")]
1188 pub config: ::core::option::Option<FileSinkConfig>,
1189 #[prost(message, optional, tag = "2")]
1190 pub writer_options: ::core::option::Option<
1191 super::datafusion_common::JsonWriterOptions,
1192 >,
1193}
1194#[derive(Clone, PartialEq, ::prost::Message)]
1195pub struct JsonSinkExecNode {
1196 #[prost(message, optional, boxed, tag = "1")]
1197 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1198 #[prost(message, optional, tag = "2")]
1199 pub sink: ::core::option::Option<JsonSink>,
1200 #[prost(message, optional, tag = "3")]
1201 pub sink_schema: ::core::option::Option<super::datafusion_common::Schema>,
1202 #[prost(message, optional, tag = "4")]
1203 pub sort_order: ::core::option::Option<PhysicalSortExprNodeCollection>,
1204}
1205#[derive(Clone, PartialEq, ::prost::Message)]
1206pub struct CsvSink {
1207 #[prost(message, optional, tag = "1")]
1208 pub config: ::core::option::Option<FileSinkConfig>,
1209 #[prost(message, optional, tag = "2")]
1210 pub writer_options: ::core::option::Option<
1211 super::datafusion_common::CsvWriterOptions,
1212 >,
1213}
1214#[derive(Clone, PartialEq, ::prost::Message)]
1215pub struct CsvSinkExecNode {
1216 #[prost(message, optional, boxed, tag = "1")]
1217 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1218 #[prost(message, optional, tag = "2")]
1219 pub sink: ::core::option::Option<CsvSink>,
1220 #[prost(message, optional, tag = "3")]
1221 pub sink_schema: ::core::option::Option<super::datafusion_common::Schema>,
1222 #[prost(message, optional, tag = "4")]
1223 pub sort_order: ::core::option::Option<PhysicalSortExprNodeCollection>,
1224}
1225#[derive(Clone, PartialEq, ::prost::Message)]
1226pub struct ParquetSink {
1227 #[prost(message, optional, tag = "1")]
1228 pub config: ::core::option::Option<FileSinkConfig>,
1229 #[prost(message, optional, tag = "2")]
1230 pub parquet_options: ::core::option::Option<
1231 super::datafusion_common::TableParquetOptions,
1232 >,
1233}
1234#[derive(Clone, PartialEq, ::prost::Message)]
1235pub struct ParquetSinkExecNode {
1236 #[prost(message, optional, boxed, tag = "1")]
1237 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1238 #[prost(message, optional, tag = "2")]
1239 pub sink: ::core::option::Option<ParquetSink>,
1240 #[prost(message, optional, tag = "3")]
1241 pub sink_schema: ::core::option::Option<super::datafusion_common::Schema>,
1242 #[prost(message, optional, tag = "4")]
1243 pub sort_order: ::core::option::Option<PhysicalSortExprNodeCollection>,
1244}
1245#[derive(Clone, PartialEq, ::prost::Message)]
1246pub struct UnnestExecNode {
1247 #[prost(message, optional, boxed, tag = "1")]
1248 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1249 #[prost(message, optional, tag = "2")]
1250 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
1251 #[prost(message, repeated, tag = "3")]
1252 pub list_type_columns: ::prost::alloc::vec::Vec<ListUnnest>,
1253 #[prost(uint64, repeated, tag = "4")]
1254 pub struct_type_columns: ::prost::alloc::vec::Vec<u64>,
1255 #[prost(message, optional, tag = "5")]
1256 pub options: ::core::option::Option<UnnestOptions>,
1257}
1258#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1259pub struct ListUnnest {
1260 #[prost(uint32, tag = "1")]
1261 pub index_in_input_schema: u32,
1262 #[prost(uint32, tag = "2")]
1263 pub depth: u32,
1264}
1265#[derive(Clone, PartialEq, ::prost::Message)]
1266pub struct PhysicalExtensionNode {
1267 #[prost(bytes = "vec", tag = "1")]
1268 pub node: ::prost::alloc::vec::Vec<u8>,
1269 #[prost(message, repeated, tag = "2")]
1270 pub inputs: ::prost::alloc::vec::Vec<PhysicalPlanNode>,
1271}
1272#[derive(Clone, PartialEq, ::prost::Message)]
1274pub struct PhysicalExprNode {
1275 #[prost(
1276 oneof = "physical_expr_node::ExprType",
1277 tags = "1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 18, 19, 20"
1278 )]
1279 pub expr_type: ::core::option::Option<physical_expr_node::ExprType>,
1280}
1281pub mod physical_expr_node {
1283 #[derive(Clone, PartialEq, ::prost::Oneof)]
1284 pub enum ExprType {
1285 #[prost(message, tag = "1")]
1287 Column(super::PhysicalColumn),
1288 #[prost(message, tag = "2")]
1289 Literal(super::super::datafusion_common::ScalarValue),
1290 #[prost(message, tag = "3")]
1292 BinaryExpr(::prost::alloc::boxed::Box<super::PhysicalBinaryExprNode>),
1293 #[prost(message, tag = "4")]
1295 AggregateExpr(super::PhysicalAggregateExprNode),
1296 #[prost(message, tag = "5")]
1298 IsNullExpr(::prost::alloc::boxed::Box<super::PhysicalIsNull>),
1299 #[prost(message, tag = "6")]
1300 IsNotNullExpr(::prost::alloc::boxed::Box<super::PhysicalIsNotNull>),
1301 #[prost(message, tag = "7")]
1302 NotExpr(::prost::alloc::boxed::Box<super::PhysicalNot>),
1303 #[prost(message, tag = "8")]
1304 Case(::prost::alloc::boxed::Box<super::PhysicalCaseNode>),
1305 #[prost(message, tag = "9")]
1306 Cast(::prost::alloc::boxed::Box<super::PhysicalCastNode>),
1307 #[prost(message, tag = "10")]
1308 Sort(::prost::alloc::boxed::Box<super::PhysicalSortExprNode>),
1309 #[prost(message, tag = "11")]
1310 Negative(::prost::alloc::boxed::Box<super::PhysicalNegativeNode>),
1311 #[prost(message, tag = "12")]
1312 InList(::prost::alloc::boxed::Box<super::PhysicalInListNode>),
1313 #[prost(message, tag = "14")]
1315 TryCast(::prost::alloc::boxed::Box<super::PhysicalTryCastNode>),
1316 #[prost(message, tag = "15")]
1318 WindowExpr(super::PhysicalWindowExprNode),
1319 #[prost(message, tag = "16")]
1321 ScalarUdf(super::PhysicalScalarUdfNode),
1322 #[prost(message, tag = "18")]
1323 LikeExpr(::prost::alloc::boxed::Box<super::PhysicalLikeExprNode>),
1324 #[prost(message, tag = "19")]
1325 Extension(super::PhysicalExtensionExprNode),
1326 #[prost(message, tag = "20")]
1327 UnknownColumn(super::UnknownColumn),
1328 }
1329}
1330#[derive(Clone, PartialEq, ::prost::Message)]
1331pub struct PhysicalScalarUdfNode {
1332 #[prost(string, tag = "1")]
1333 pub name: ::prost::alloc::string::String,
1334 #[prost(message, repeated, tag = "2")]
1335 pub args: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1336 #[prost(bytes = "vec", optional, tag = "3")]
1337 pub fun_definition: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1338 #[prost(message, optional, tag = "4")]
1339 pub return_type: ::core::option::Option<super::datafusion_common::ArrowType>,
1340 #[prost(bool, tag = "5")]
1341 pub nullable: bool,
1342 #[prost(string, tag = "6")]
1343 pub return_field_name: ::prost::alloc::string::String,
1344}
1345#[derive(Clone, PartialEq, ::prost::Message)]
1346pub struct PhysicalAggregateExprNode {
1347 #[prost(message, repeated, tag = "2")]
1348 pub expr: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1349 #[prost(message, repeated, tag = "5")]
1350 pub ordering_req: ::prost::alloc::vec::Vec<PhysicalSortExprNode>,
1351 #[prost(bool, tag = "3")]
1352 pub distinct: bool,
1353 #[prost(bool, tag = "6")]
1354 pub ignore_nulls: bool,
1355 #[prost(bytes = "vec", optional, tag = "7")]
1356 pub fun_definition: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1357 #[prost(string, tag = "8")]
1358 pub human_display: ::prost::alloc::string::String,
1359 #[prost(oneof = "physical_aggregate_expr_node::AggregateFunction", tags = "4")]
1360 pub aggregate_function: ::core::option::Option<
1361 physical_aggregate_expr_node::AggregateFunction,
1362 >,
1363}
1364pub mod physical_aggregate_expr_node {
1366 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
1367 pub enum AggregateFunction {
1368 #[prost(string, tag = "4")]
1369 UserDefinedAggrFunction(::prost::alloc::string::String),
1370 }
1371}
1372#[derive(Clone, PartialEq, ::prost::Message)]
1373pub struct PhysicalWindowExprNode {
1374 #[prost(message, repeated, tag = "4")]
1375 pub args: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1376 #[prost(message, repeated, tag = "5")]
1377 pub partition_by: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1378 #[prost(message, repeated, tag = "6")]
1379 pub order_by: ::prost::alloc::vec::Vec<PhysicalSortExprNode>,
1380 #[prost(message, optional, tag = "7")]
1381 pub window_frame: ::core::option::Option<WindowFrame>,
1382 #[prost(string, tag = "8")]
1383 pub name: ::prost::alloc::string::String,
1384 #[prost(bytes = "vec", optional, tag = "9")]
1385 pub fun_definition: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1386 #[prost(bool, tag = "11")]
1387 pub ignore_nulls: bool,
1388 #[prost(bool, tag = "12")]
1389 pub distinct: bool,
1390 #[prost(oneof = "physical_window_expr_node::WindowFunction", tags = "3, 10")]
1391 pub window_function: ::core::option::Option<
1392 physical_window_expr_node::WindowFunction,
1393 >,
1394}
1395pub mod physical_window_expr_node {
1397 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
1398 pub enum WindowFunction {
1399 #[prost(string, tag = "3")]
1401 UserDefinedAggrFunction(::prost::alloc::string::String),
1402 #[prost(string, tag = "10")]
1403 UserDefinedWindowFunction(::prost::alloc::string::String),
1404 }
1405}
1406#[derive(Clone, PartialEq, ::prost::Message)]
1407pub struct PhysicalIsNull {
1408 #[prost(message, optional, boxed, tag = "1")]
1409 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1410}
1411#[derive(Clone, PartialEq, ::prost::Message)]
1412pub struct PhysicalIsNotNull {
1413 #[prost(message, optional, boxed, tag = "1")]
1414 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1415}
1416#[derive(Clone, PartialEq, ::prost::Message)]
1417pub struct PhysicalNot {
1418 #[prost(message, optional, boxed, tag = "1")]
1419 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1420}
1421#[derive(Clone, PartialEq, ::prost::Message)]
1422pub struct PhysicalAliasNode {
1423 #[prost(message, optional, tag = "1")]
1424 pub expr: ::core::option::Option<PhysicalExprNode>,
1425 #[prost(string, tag = "2")]
1426 pub alias: ::prost::alloc::string::String,
1427}
1428#[derive(Clone, PartialEq, ::prost::Message)]
1429pub struct PhysicalBinaryExprNode {
1430 #[prost(message, optional, boxed, tag = "1")]
1431 pub l: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1432 #[prost(message, optional, boxed, tag = "2")]
1433 pub r: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1434 #[prost(string, tag = "3")]
1435 pub op: ::prost::alloc::string::String,
1436}
1437#[derive(Clone, PartialEq, ::prost::Message)]
1438pub struct PhysicalDateTimeIntervalExprNode {
1439 #[prost(message, optional, tag = "1")]
1440 pub l: ::core::option::Option<PhysicalExprNode>,
1441 #[prost(message, optional, tag = "2")]
1442 pub r: ::core::option::Option<PhysicalExprNode>,
1443 #[prost(string, tag = "3")]
1444 pub op: ::prost::alloc::string::String,
1445}
1446#[derive(Clone, PartialEq, ::prost::Message)]
1447pub struct PhysicalLikeExprNode {
1448 #[prost(bool, tag = "1")]
1449 pub negated: bool,
1450 #[prost(bool, tag = "2")]
1451 pub case_insensitive: bool,
1452 #[prost(message, optional, boxed, tag = "3")]
1453 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1454 #[prost(message, optional, boxed, tag = "4")]
1455 pub pattern: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1456}
1457#[derive(Clone, PartialEq, ::prost::Message)]
1458pub struct PhysicalSortExprNode {
1459 #[prost(message, optional, boxed, tag = "1")]
1460 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1461 #[prost(bool, tag = "2")]
1462 pub asc: bool,
1463 #[prost(bool, tag = "3")]
1464 pub nulls_first: bool,
1465}
1466#[derive(Clone, PartialEq, ::prost::Message)]
1467pub struct PhysicalWhenThen {
1468 #[prost(message, optional, tag = "1")]
1469 pub when_expr: ::core::option::Option<PhysicalExprNode>,
1470 #[prost(message, optional, tag = "2")]
1471 pub then_expr: ::core::option::Option<PhysicalExprNode>,
1472}
1473#[derive(Clone, PartialEq, ::prost::Message)]
1474pub struct PhysicalInListNode {
1475 #[prost(message, optional, boxed, tag = "1")]
1476 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1477 #[prost(message, repeated, tag = "2")]
1478 pub list: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1479 #[prost(bool, tag = "3")]
1480 pub negated: bool,
1481}
1482#[derive(Clone, PartialEq, ::prost::Message)]
1483pub struct PhysicalCaseNode {
1484 #[prost(message, optional, boxed, tag = "1")]
1485 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1486 #[prost(message, repeated, tag = "2")]
1487 pub when_then_expr: ::prost::alloc::vec::Vec<PhysicalWhenThen>,
1488 #[prost(message, optional, boxed, tag = "3")]
1489 pub else_expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1490}
1491#[derive(Clone, PartialEq, ::prost::Message)]
1492pub struct PhysicalTryCastNode {
1493 #[prost(message, optional, boxed, tag = "1")]
1494 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1495 #[prost(message, optional, tag = "2")]
1496 pub arrow_type: ::core::option::Option<super::datafusion_common::ArrowType>,
1497}
1498#[derive(Clone, PartialEq, ::prost::Message)]
1499pub struct PhysicalCastNode {
1500 #[prost(message, optional, boxed, tag = "1")]
1501 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1502 #[prost(message, optional, tag = "2")]
1503 pub arrow_type: ::core::option::Option<super::datafusion_common::ArrowType>,
1504}
1505#[derive(Clone, PartialEq, ::prost::Message)]
1506pub struct PhysicalNegativeNode {
1507 #[prost(message, optional, boxed, tag = "1")]
1508 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1509}
1510#[derive(Clone, PartialEq, ::prost::Message)]
1511pub struct PhysicalExtensionExprNode {
1512 #[prost(bytes = "vec", tag = "1")]
1513 pub expr: ::prost::alloc::vec::Vec<u8>,
1514 #[prost(message, repeated, tag = "2")]
1515 pub inputs: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1516}
1517#[derive(Clone, PartialEq, ::prost::Message)]
1518pub struct FilterExecNode {
1519 #[prost(message, optional, boxed, tag = "1")]
1520 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1521 #[prost(message, optional, tag = "2")]
1522 pub expr: ::core::option::Option<PhysicalExprNode>,
1523 #[prost(uint32, tag = "3")]
1524 pub default_filter_selectivity: u32,
1525 #[prost(uint32, repeated, tag = "9")]
1526 pub projection: ::prost::alloc::vec::Vec<u32>,
1527}
1528#[derive(Clone, PartialEq, ::prost::Message)]
1529pub struct FileGroup {
1530 #[prost(message, repeated, tag = "1")]
1531 pub files: ::prost::alloc::vec::Vec<PartitionedFile>,
1532}
1533#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1534pub struct ScanLimit {
1535 #[prost(uint32, tag = "1")]
1537 pub limit: u32,
1538}
1539#[derive(Clone, PartialEq, ::prost::Message)]
1540pub struct PhysicalSortExprNodeCollection {
1541 #[prost(message, repeated, tag = "1")]
1542 pub physical_sort_expr_nodes: ::prost::alloc::vec::Vec<PhysicalSortExprNode>,
1543}
1544#[derive(Clone, PartialEq, ::prost::Message)]
1545pub struct FileScanExecConf {
1546 #[prost(message, repeated, tag = "1")]
1547 pub file_groups: ::prost::alloc::vec::Vec<FileGroup>,
1548 #[prost(message, optional, tag = "2")]
1549 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
1550 #[prost(uint32, repeated, tag = "4")]
1551 pub projection: ::prost::alloc::vec::Vec<u32>,
1552 #[prost(message, optional, tag = "5")]
1553 pub limit: ::core::option::Option<ScanLimit>,
1554 #[prost(message, optional, tag = "6")]
1555 pub statistics: ::core::option::Option<super::datafusion_common::Statistics>,
1556 #[prost(string, repeated, tag = "7")]
1557 pub table_partition_cols: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1558 #[prost(string, tag = "8")]
1559 pub object_store_url: ::prost::alloc::string::String,
1560 #[prost(message, repeated, tag = "9")]
1561 pub output_ordering: ::prost::alloc::vec::Vec<PhysicalSortExprNodeCollection>,
1562 #[prost(message, optional, tag = "11")]
1563 pub constraints: ::core::option::Option<super::datafusion_common::Constraints>,
1564 #[prost(uint64, optional, tag = "12")]
1565 pub batch_size: ::core::option::Option<u64>,
1566}
1567#[derive(Clone, PartialEq, ::prost::Message)]
1568pub struct ParquetScanExecNode {
1569 #[prost(message, optional, tag = "1")]
1570 pub base_conf: ::core::option::Option<FileScanExecConf>,
1571 #[prost(message, optional, tag = "3")]
1572 pub predicate: ::core::option::Option<PhysicalExprNode>,
1573 #[prost(message, optional, tag = "4")]
1574 pub parquet_options: ::core::option::Option<
1575 super::datafusion_common::TableParquetOptions,
1576 >,
1577}
1578#[derive(Clone, PartialEq, ::prost::Message)]
1579pub struct CsvScanExecNode {
1580 #[prost(message, optional, tag = "1")]
1581 pub base_conf: ::core::option::Option<FileScanExecConf>,
1582 #[prost(bool, tag = "2")]
1583 pub has_header: bool,
1584 #[prost(string, tag = "3")]
1585 pub delimiter: ::prost::alloc::string::String,
1586 #[prost(string, tag = "4")]
1587 pub quote: ::prost::alloc::string::String,
1588 #[prost(bool, tag = "7")]
1589 pub newlines_in_values: bool,
1590 #[prost(bool, tag = "8")]
1591 pub truncate_rows: bool,
1592 #[prost(oneof = "csv_scan_exec_node::OptionalEscape", tags = "5")]
1593 pub optional_escape: ::core::option::Option<csv_scan_exec_node::OptionalEscape>,
1594 #[prost(oneof = "csv_scan_exec_node::OptionalComment", tags = "6")]
1595 pub optional_comment: ::core::option::Option<csv_scan_exec_node::OptionalComment>,
1596}
1597pub mod csv_scan_exec_node {
1599 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
1600 pub enum OptionalEscape {
1601 #[prost(string, tag = "5")]
1602 Escape(::prost::alloc::string::String),
1603 }
1604 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
1605 pub enum OptionalComment {
1606 #[prost(string, tag = "6")]
1607 Comment(::prost::alloc::string::String),
1608 }
1609}
1610#[derive(Clone, PartialEq, ::prost::Message)]
1611pub struct JsonScanExecNode {
1612 #[prost(message, optional, tag = "1")]
1613 pub base_conf: ::core::option::Option<FileScanExecConf>,
1614}
1615#[derive(Clone, PartialEq, ::prost::Message)]
1616pub struct AvroScanExecNode {
1617 #[prost(message, optional, tag = "1")]
1618 pub base_conf: ::core::option::Option<FileScanExecConf>,
1619}
1620#[derive(Clone, PartialEq, ::prost::Message)]
1621pub struct MemoryScanExecNode {
1622 #[prost(bytes = "vec", repeated, tag = "1")]
1623 pub partitions: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
1624 #[prost(message, optional, tag = "2")]
1625 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
1626 #[prost(uint32, repeated, tag = "3")]
1627 pub projection: ::prost::alloc::vec::Vec<u32>,
1628 #[prost(message, repeated, tag = "4")]
1629 pub sort_information: ::prost::alloc::vec::Vec<PhysicalSortExprNodeCollection>,
1630 #[prost(bool, tag = "5")]
1631 pub show_sizes: bool,
1632 #[prost(uint32, optional, tag = "6")]
1633 pub fetch: ::core::option::Option<u32>,
1634}
1635#[derive(Clone, PartialEq, ::prost::Message)]
1636pub struct CooperativeExecNode {
1637 #[prost(message, optional, boxed, tag = "1")]
1638 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1639}
1640#[derive(Clone, PartialEq, ::prost::Message)]
1641pub struct HashJoinExecNode {
1642 #[prost(message, optional, boxed, tag = "1")]
1643 pub left: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1644 #[prost(message, optional, boxed, tag = "2")]
1645 pub right: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1646 #[prost(message, repeated, tag = "3")]
1647 pub on: ::prost::alloc::vec::Vec<JoinOn>,
1648 #[prost(enumeration = "super::datafusion_common::JoinType", tag = "4")]
1649 pub join_type: i32,
1650 #[prost(enumeration = "PartitionMode", tag = "6")]
1651 pub partition_mode: i32,
1652 #[prost(enumeration = "super::datafusion_common::NullEquality", tag = "7")]
1653 pub null_equality: i32,
1654 #[prost(message, optional, tag = "8")]
1655 pub filter: ::core::option::Option<JoinFilter>,
1656 #[prost(uint32, repeated, tag = "9")]
1657 pub projection: ::prost::alloc::vec::Vec<u32>,
1658}
1659#[derive(Clone, PartialEq, ::prost::Message)]
1660pub struct SymmetricHashJoinExecNode {
1661 #[prost(message, optional, boxed, tag = "1")]
1662 pub left: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1663 #[prost(message, optional, boxed, tag = "2")]
1664 pub right: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1665 #[prost(message, repeated, tag = "3")]
1666 pub on: ::prost::alloc::vec::Vec<JoinOn>,
1667 #[prost(enumeration = "super::datafusion_common::JoinType", tag = "4")]
1668 pub join_type: i32,
1669 #[prost(enumeration = "StreamPartitionMode", tag = "6")]
1670 pub partition_mode: i32,
1671 #[prost(enumeration = "super::datafusion_common::NullEquality", tag = "7")]
1672 pub null_equality: i32,
1673 #[prost(message, optional, tag = "8")]
1674 pub filter: ::core::option::Option<JoinFilter>,
1675 #[prost(message, repeated, tag = "9")]
1676 pub left_sort_exprs: ::prost::alloc::vec::Vec<PhysicalSortExprNode>,
1677 #[prost(message, repeated, tag = "10")]
1678 pub right_sort_exprs: ::prost::alloc::vec::Vec<PhysicalSortExprNode>,
1679}
1680#[derive(Clone, PartialEq, ::prost::Message)]
1681pub struct InterleaveExecNode {
1682 #[prost(message, repeated, tag = "1")]
1683 pub inputs: ::prost::alloc::vec::Vec<PhysicalPlanNode>,
1684}
1685#[derive(Clone, PartialEq, ::prost::Message)]
1686pub struct UnionExecNode {
1687 #[prost(message, repeated, tag = "1")]
1688 pub inputs: ::prost::alloc::vec::Vec<PhysicalPlanNode>,
1689}
1690#[derive(Clone, PartialEq, ::prost::Message)]
1691pub struct ExplainExecNode {
1692 #[prost(message, optional, tag = "1")]
1693 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
1694 #[prost(message, repeated, tag = "2")]
1695 pub stringified_plans: ::prost::alloc::vec::Vec<StringifiedPlan>,
1696 #[prost(bool, tag = "3")]
1697 pub verbose: bool,
1698}
1699#[derive(Clone, PartialEq, ::prost::Message)]
1700pub struct AnalyzeExecNode {
1701 #[prost(bool, tag = "1")]
1702 pub verbose: bool,
1703 #[prost(bool, tag = "2")]
1704 pub show_statistics: bool,
1705 #[prost(message, optional, boxed, tag = "3")]
1706 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1707 #[prost(message, optional, tag = "4")]
1708 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
1709}
1710#[derive(Clone, PartialEq, ::prost::Message)]
1711pub struct CrossJoinExecNode {
1712 #[prost(message, optional, boxed, tag = "1")]
1713 pub left: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1714 #[prost(message, optional, boxed, tag = "2")]
1715 pub right: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1716}
1717#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1718pub struct PhysicalColumn {
1719 #[prost(string, tag = "1")]
1720 pub name: ::prost::alloc::string::String,
1721 #[prost(uint32, tag = "2")]
1722 pub index: u32,
1723}
1724#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1725pub struct UnknownColumn {
1726 #[prost(string, tag = "1")]
1727 pub name: ::prost::alloc::string::String,
1728}
1729#[derive(Clone, PartialEq, ::prost::Message)]
1730pub struct JoinOn {
1731 #[prost(message, optional, tag = "1")]
1732 pub left: ::core::option::Option<PhysicalExprNode>,
1733 #[prost(message, optional, tag = "2")]
1734 pub right: ::core::option::Option<PhysicalExprNode>,
1735}
1736#[derive(Clone, PartialEq, ::prost::Message)]
1737pub struct EmptyExecNode {
1738 #[prost(message, optional, tag = "1")]
1739 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
1740}
1741#[derive(Clone, PartialEq, ::prost::Message)]
1742pub struct PlaceholderRowExecNode {
1743 #[prost(message, optional, tag = "1")]
1744 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
1745}
1746#[derive(Clone, PartialEq, ::prost::Message)]
1747pub struct ProjectionExecNode {
1748 #[prost(message, optional, boxed, tag = "1")]
1749 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1750 #[prost(message, repeated, tag = "2")]
1751 pub expr: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1752 #[prost(string, repeated, tag = "3")]
1753 pub expr_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1754}
1755#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1756pub struct PartiallySortedInputOrderMode {
1757 #[prost(uint64, repeated, tag = "6")]
1758 pub columns: ::prost::alloc::vec::Vec<u64>,
1759}
1760#[derive(Clone, PartialEq, ::prost::Message)]
1761pub struct WindowAggExecNode {
1762 #[prost(message, optional, boxed, tag = "1")]
1763 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1764 #[prost(message, repeated, tag = "2")]
1765 pub window_expr: ::prost::alloc::vec::Vec<PhysicalWindowExprNode>,
1766 #[prost(message, repeated, tag = "5")]
1767 pub partition_keys: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1768 #[prost(oneof = "window_agg_exec_node::InputOrderMode", tags = "7, 8, 9")]
1770 pub input_order_mode: ::core::option::Option<window_agg_exec_node::InputOrderMode>,
1771}
1772pub mod window_agg_exec_node {
1774 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
1776 pub enum InputOrderMode {
1777 #[prost(message, tag = "7")]
1778 Linear(super::super::datafusion_common::EmptyMessage),
1779 #[prost(message, tag = "8")]
1780 PartiallySorted(super::PartiallySortedInputOrderMode),
1781 #[prost(message, tag = "9")]
1782 Sorted(super::super::datafusion_common::EmptyMessage),
1783 }
1784}
1785#[derive(Clone, PartialEq, ::prost::Message)]
1786pub struct MaybeFilter {
1787 #[prost(message, optional, tag = "1")]
1788 pub expr: ::core::option::Option<PhysicalExprNode>,
1789}
1790#[derive(Clone, PartialEq, ::prost::Message)]
1791pub struct MaybePhysicalSortExprs {
1792 #[prost(message, repeated, tag = "1")]
1793 pub sort_expr: ::prost::alloc::vec::Vec<PhysicalSortExprNode>,
1794}
1795#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1796pub struct AggLimit {
1797 #[prost(uint64, tag = "1")]
1799 pub limit: u64,
1800}
1801#[derive(Clone, PartialEq, ::prost::Message)]
1802pub struct AggregateExecNode {
1803 #[prost(message, repeated, tag = "1")]
1804 pub group_expr: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1805 #[prost(message, repeated, tag = "2")]
1806 pub aggr_expr: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1807 #[prost(enumeration = "AggregateMode", tag = "3")]
1808 pub mode: i32,
1809 #[prost(message, optional, boxed, tag = "4")]
1810 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1811 #[prost(string, repeated, tag = "5")]
1812 pub group_expr_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1813 #[prost(string, repeated, tag = "6")]
1814 pub aggr_expr_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1815 #[prost(message, optional, tag = "7")]
1817 pub input_schema: ::core::option::Option<super::datafusion_common::Schema>,
1818 #[prost(message, repeated, tag = "8")]
1819 pub null_expr: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1820 #[prost(bool, repeated, tag = "9")]
1821 pub groups: ::prost::alloc::vec::Vec<bool>,
1822 #[prost(message, repeated, tag = "10")]
1823 pub filter_expr: ::prost::alloc::vec::Vec<MaybeFilter>,
1824 #[prost(message, optional, tag = "11")]
1825 pub limit: ::core::option::Option<AggLimit>,
1826}
1827#[derive(Clone, PartialEq, ::prost::Message)]
1828pub struct GlobalLimitExecNode {
1829 #[prost(message, optional, boxed, tag = "1")]
1830 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1831 #[prost(uint32, tag = "2")]
1833 pub skip: u32,
1834 #[prost(int64, tag = "3")]
1836 pub fetch: i64,
1837}
1838#[derive(Clone, PartialEq, ::prost::Message)]
1839pub struct LocalLimitExecNode {
1840 #[prost(message, optional, boxed, tag = "1")]
1841 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1842 #[prost(uint32, tag = "2")]
1843 pub fetch: u32,
1844}
1845#[derive(Clone, PartialEq, ::prost::Message)]
1846pub struct SortExecNode {
1847 #[prost(message, optional, boxed, tag = "1")]
1848 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1849 #[prost(message, repeated, tag = "2")]
1850 pub expr: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1851 #[prost(int64, tag = "3")]
1853 pub fetch: i64,
1854 #[prost(bool, tag = "4")]
1855 pub preserve_partitioning: bool,
1856}
1857#[derive(Clone, PartialEq, ::prost::Message)]
1858pub struct SortPreservingMergeExecNode {
1859 #[prost(message, optional, boxed, tag = "1")]
1860 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1861 #[prost(message, repeated, tag = "2")]
1862 pub expr: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1863 #[prost(int64, tag = "3")]
1865 pub fetch: i64,
1866}
1867#[derive(Clone, PartialEq, ::prost::Message)]
1868pub struct NestedLoopJoinExecNode {
1869 #[prost(message, optional, boxed, tag = "1")]
1870 pub left: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1871 #[prost(message, optional, boxed, tag = "2")]
1872 pub right: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1873 #[prost(enumeration = "super::datafusion_common::JoinType", tag = "3")]
1874 pub join_type: i32,
1875 #[prost(message, optional, tag = "4")]
1876 pub filter: ::core::option::Option<JoinFilter>,
1877 #[prost(uint32, repeated, tag = "5")]
1878 pub projection: ::prost::alloc::vec::Vec<u32>,
1879}
1880#[derive(Clone, PartialEq, ::prost::Message)]
1881pub struct CoalesceBatchesExecNode {
1882 #[prost(message, optional, boxed, tag = "1")]
1883 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1884 #[prost(uint32, tag = "2")]
1885 pub target_batch_size: u32,
1886 #[prost(uint32, optional, tag = "3")]
1887 pub fetch: ::core::option::Option<u32>,
1888}
1889#[derive(Clone, PartialEq, ::prost::Message)]
1890pub struct CoalescePartitionsExecNode {
1891 #[prost(message, optional, boxed, tag = "1")]
1892 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1893 #[prost(uint32, optional, tag = "2")]
1894 pub fetch: ::core::option::Option<u32>,
1895}
1896#[derive(Clone, PartialEq, ::prost::Message)]
1897pub struct PhysicalHashRepartition {
1898 #[prost(message, repeated, tag = "1")]
1899 pub hash_expr: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1900 #[prost(uint64, tag = "2")]
1901 pub partition_count: u64,
1902}
1903#[derive(Clone, PartialEq, ::prost::Message)]
1904pub struct RepartitionExecNode {
1905 #[prost(message, optional, boxed, tag = "1")]
1906 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1907 #[prost(message, optional, tag = "5")]
1913 pub partitioning: ::core::option::Option<Partitioning>,
1914}
1915#[derive(Clone, PartialEq, ::prost::Message)]
1916pub struct Partitioning {
1917 #[prost(oneof = "partitioning::PartitionMethod", tags = "1, 2, 3")]
1918 pub partition_method: ::core::option::Option<partitioning::PartitionMethod>,
1919}
1920pub mod partitioning {
1922 #[derive(Clone, PartialEq, ::prost::Oneof)]
1923 pub enum PartitionMethod {
1924 #[prost(uint64, tag = "1")]
1925 RoundRobin(u64),
1926 #[prost(message, tag = "2")]
1927 Hash(super::PhysicalHashRepartition),
1928 #[prost(uint64, tag = "3")]
1929 Unknown(u64),
1930 }
1931}
1932#[derive(Clone, PartialEq, ::prost::Message)]
1933pub struct JoinFilter {
1934 #[prost(message, optional, tag = "1")]
1935 pub expression: ::core::option::Option<PhysicalExprNode>,
1936 #[prost(message, repeated, tag = "2")]
1937 pub column_indices: ::prost::alloc::vec::Vec<ColumnIndex>,
1938 #[prost(message, optional, tag = "3")]
1939 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
1940}
1941#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1942pub struct ColumnIndex {
1943 #[prost(uint32, tag = "1")]
1944 pub index: u32,
1945 #[prost(enumeration = "super::datafusion_common::JoinSide", tag = "2")]
1946 pub side: i32,
1947}
1948#[derive(Clone, PartialEq, ::prost::Message)]
1949pub struct PartitionedFile {
1950 #[prost(string, tag = "1")]
1951 pub path: ::prost::alloc::string::String,
1952 #[prost(uint64, tag = "2")]
1953 pub size: u64,
1954 #[prost(uint64, tag = "3")]
1955 pub last_modified_ns: u64,
1956 #[prost(message, repeated, tag = "4")]
1957 pub partition_values: ::prost::alloc::vec::Vec<
1958 super::datafusion_common::ScalarValue,
1959 >,
1960 #[prost(message, optional, tag = "5")]
1961 pub range: ::core::option::Option<FileRange>,
1962 #[prost(message, optional, tag = "6")]
1963 pub statistics: ::core::option::Option<super::datafusion_common::Statistics>,
1964}
1965#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1966pub struct FileRange {
1967 #[prost(int64, tag = "1")]
1968 pub start: i64,
1969 #[prost(int64, tag = "2")]
1970 pub end: i64,
1971}
1972#[derive(Clone, PartialEq, ::prost::Message)]
1973pub struct PartitionStats {
1974 #[prost(int64, tag = "1")]
1975 pub num_rows: i64,
1976 #[prost(int64, tag = "2")]
1977 pub num_batches: i64,
1978 #[prost(int64, tag = "3")]
1979 pub num_bytes: i64,
1980 #[prost(message, repeated, tag = "4")]
1981 pub column_stats: ::prost::alloc::vec::Vec<super::datafusion_common::ColumnStats>,
1982}
1983#[derive(Clone, PartialEq, ::prost::Message)]
1984pub struct RecursiveQueryNode {
1985 #[prost(string, tag = "1")]
1986 pub name: ::prost::alloc::string::String,
1987 #[prost(message, optional, boxed, tag = "2")]
1988 pub static_term: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
1989 #[prost(message, optional, boxed, tag = "3")]
1990 pub recursive_term: ::core::option::Option<
1991 ::prost::alloc::boxed::Box<LogicalPlanNode>,
1992 >,
1993 #[prost(bool, tag = "4")]
1994 pub is_distinct: bool,
1995}
1996#[derive(Clone, PartialEq, ::prost::Message)]
1997pub struct CteWorkTableScanNode {
1998 #[prost(string, tag = "1")]
1999 pub name: ::prost::alloc::string::String,
2000 #[prost(message, optional, tag = "2")]
2001 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
2002}
2003#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2004pub struct GenerateSeriesArgsContainsNull {
2005 #[prost(enumeration = "GenerateSeriesName", tag = "1")]
2006 pub name: i32,
2007}
2008#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2009pub struct GenerateSeriesArgsInt64 {
2010 #[prost(int64, tag = "1")]
2011 pub start: i64,
2012 #[prost(int64, tag = "2")]
2013 pub end: i64,
2014 #[prost(int64, tag = "3")]
2015 pub step: i64,
2016 #[prost(bool, tag = "4")]
2017 pub include_end: bool,
2018 #[prost(enumeration = "GenerateSeriesName", tag = "5")]
2019 pub name: i32,
2020}
2021#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2022pub struct GenerateSeriesArgsTimestamp {
2023 #[prost(int64, tag = "1")]
2024 pub start: i64,
2025 #[prost(int64, tag = "2")]
2026 pub end: i64,
2027 #[prost(message, optional, tag = "3")]
2028 pub step: ::core::option::Option<
2029 super::datafusion_common::IntervalMonthDayNanoValue,
2030 >,
2031 #[prost(string, optional, tag = "4")]
2032 pub tz: ::core::option::Option<::prost::alloc::string::String>,
2033 #[prost(bool, tag = "5")]
2034 pub include_end: bool,
2035 #[prost(enumeration = "GenerateSeriesName", tag = "6")]
2036 pub name: i32,
2037}
2038#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2039pub struct GenerateSeriesArgsDate {
2040 #[prost(int64, tag = "1")]
2041 pub start: i64,
2042 #[prost(int64, tag = "2")]
2043 pub end: i64,
2044 #[prost(message, optional, tag = "3")]
2045 pub step: ::core::option::Option<
2046 super::datafusion_common::IntervalMonthDayNanoValue,
2047 >,
2048 #[prost(bool, tag = "4")]
2049 pub include_end: bool,
2050 #[prost(enumeration = "GenerateSeriesName", tag = "5")]
2051 pub name: i32,
2052}
2053#[derive(Clone, PartialEq, ::prost::Message)]
2054pub struct GenerateSeriesNode {
2055 #[prost(message, optional, tag = "1")]
2056 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
2057 #[prost(uint32, tag = "2")]
2058 pub target_batch_size: u32,
2059 #[prost(oneof = "generate_series_node::Args", tags = "3, 4, 5, 6")]
2060 pub args: ::core::option::Option<generate_series_node::Args>,
2061}
2062pub mod generate_series_node {
2064 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
2065 pub enum Args {
2066 #[prost(message, tag = "3")]
2067 ContainsNull(super::GenerateSeriesArgsContainsNull),
2068 #[prost(message, tag = "4")]
2069 Int64Args(super::GenerateSeriesArgsInt64),
2070 #[prost(message, tag = "5")]
2071 TimestampArgs(super::GenerateSeriesArgsTimestamp),
2072 #[prost(message, tag = "6")]
2073 DateArgs(super::GenerateSeriesArgsDate),
2074 }
2075}
2076#[derive(Clone, PartialEq, ::prost::Message)]
2077pub struct SortMergeJoinExecNode {
2078 #[prost(message, optional, boxed, tag = "1")]
2079 pub left: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
2080 #[prost(message, optional, boxed, tag = "2")]
2081 pub right: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
2082 #[prost(message, repeated, tag = "3")]
2083 pub on: ::prost::alloc::vec::Vec<JoinOn>,
2084 #[prost(enumeration = "super::datafusion_common::JoinType", tag = "4")]
2085 pub join_type: i32,
2086 #[prost(message, optional, tag = "5")]
2087 pub filter: ::core::option::Option<JoinFilter>,
2088 #[prost(message, repeated, tag = "6")]
2089 pub sort_options: ::prost::alloc::vec::Vec<SortExprNode>,
2090 #[prost(enumeration = "super::datafusion_common::NullEquality", tag = "7")]
2091 pub null_equality: i32,
2092}
2093#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2094#[repr(i32)]
2095pub enum WindowFrameUnits {
2096 Rows = 0,
2097 Range = 1,
2098 Groups = 2,
2099}
2100impl WindowFrameUnits {
2101 pub fn as_str_name(&self) -> &'static str {
2106 match self {
2107 Self::Rows => "ROWS",
2108 Self::Range => "RANGE",
2109 Self::Groups => "GROUPS",
2110 }
2111 }
2112 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2114 match value {
2115 "ROWS" => Some(Self::Rows),
2116 "RANGE" => Some(Self::Range),
2117 "GROUPS" => Some(Self::Groups),
2118 _ => None,
2119 }
2120 }
2121}
2122#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2123#[repr(i32)]
2124pub enum WindowFrameBoundType {
2125 CurrentRow = 0,
2126 Preceding = 1,
2127 Following = 2,
2128}
2129impl WindowFrameBoundType {
2130 pub fn as_str_name(&self) -> &'static str {
2135 match self {
2136 Self::CurrentRow => "CURRENT_ROW",
2137 Self::Preceding => "PRECEDING",
2138 Self::Following => "FOLLOWING",
2139 }
2140 }
2141 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2143 match value {
2144 "CURRENT_ROW" => Some(Self::CurrentRow),
2145 "PRECEDING" => Some(Self::Preceding),
2146 "FOLLOWING" => Some(Self::Following),
2147 _ => None,
2148 }
2149 }
2150}
2151#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2152#[repr(i32)]
2153pub enum NullTreatment {
2154 RespectNulls = 0,
2155 IgnoreNulls = 1,
2156}
2157impl NullTreatment {
2158 pub fn as_str_name(&self) -> &'static str {
2163 match self {
2164 Self::RespectNulls => "RESPECT_NULLS",
2165 Self::IgnoreNulls => "IGNORE_NULLS",
2166 }
2167 }
2168 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2170 match value {
2171 "RESPECT_NULLS" => Some(Self::RespectNulls),
2172 "IGNORE_NULLS" => Some(Self::IgnoreNulls),
2173 _ => None,
2174 }
2175 }
2176}
2177#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2178#[repr(i32)]
2179pub enum DateUnit {
2180 Day = 0,
2181 DateMillisecond = 1,
2182}
2183impl DateUnit {
2184 pub fn as_str_name(&self) -> &'static str {
2189 match self {
2190 Self::Day => "Day",
2191 Self::DateMillisecond => "DateMillisecond",
2192 }
2193 }
2194 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2196 match value {
2197 "Day" => Some(Self::Day),
2198 "DateMillisecond" => Some(Self::DateMillisecond),
2199 _ => None,
2200 }
2201 }
2202}
2203#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2204#[repr(i32)]
2205pub enum InsertOp {
2206 Append = 0,
2207 Overwrite = 1,
2208 Replace = 2,
2209}
2210impl InsertOp {
2211 pub fn as_str_name(&self) -> &'static str {
2216 match self {
2217 Self::Append => "Append",
2218 Self::Overwrite => "Overwrite",
2219 Self::Replace => "Replace",
2220 }
2221 }
2222 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2224 match value {
2225 "Append" => Some(Self::Append),
2226 "Overwrite" => Some(Self::Overwrite),
2227 "Replace" => Some(Self::Replace),
2228 _ => None,
2229 }
2230 }
2231}
2232#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2233#[repr(i32)]
2234pub enum PartitionMode {
2235 CollectLeft = 0,
2236 Partitioned = 1,
2237 Auto = 2,
2238}
2239impl PartitionMode {
2240 pub fn as_str_name(&self) -> &'static str {
2245 match self {
2246 Self::CollectLeft => "COLLECT_LEFT",
2247 Self::Partitioned => "PARTITIONED",
2248 Self::Auto => "AUTO",
2249 }
2250 }
2251 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2253 match value {
2254 "COLLECT_LEFT" => Some(Self::CollectLeft),
2255 "PARTITIONED" => Some(Self::Partitioned),
2256 "AUTO" => Some(Self::Auto),
2257 _ => None,
2258 }
2259 }
2260}
2261#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2262#[repr(i32)]
2263pub enum StreamPartitionMode {
2264 SinglePartition = 0,
2265 PartitionedExec = 1,
2266}
2267impl StreamPartitionMode {
2268 pub fn as_str_name(&self) -> &'static str {
2273 match self {
2274 Self::SinglePartition => "SINGLE_PARTITION",
2275 Self::PartitionedExec => "PARTITIONED_EXEC",
2276 }
2277 }
2278 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2280 match value {
2281 "SINGLE_PARTITION" => Some(Self::SinglePartition),
2282 "PARTITIONED_EXEC" => Some(Self::PartitionedExec),
2283 _ => None,
2284 }
2285 }
2286}
2287#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2288#[repr(i32)]
2289pub enum AggregateMode {
2290 Partial = 0,
2291 Final = 1,
2292 FinalPartitioned = 2,
2293 Single = 3,
2294 SinglePartitioned = 4,
2295}
2296impl AggregateMode {
2297 pub fn as_str_name(&self) -> &'static str {
2302 match self {
2303 Self::Partial => "PARTIAL",
2304 Self::Final => "FINAL",
2305 Self::FinalPartitioned => "FINAL_PARTITIONED",
2306 Self::Single => "SINGLE",
2307 Self::SinglePartitioned => "SINGLE_PARTITIONED",
2308 }
2309 }
2310 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2312 match value {
2313 "PARTIAL" => Some(Self::Partial),
2314 "FINAL" => Some(Self::Final),
2315 "FINAL_PARTITIONED" => Some(Self::FinalPartitioned),
2316 "SINGLE" => Some(Self::Single),
2317 "SINGLE_PARTITIONED" => Some(Self::SinglePartitioned),
2318 _ => None,
2319 }
2320 }
2321}
2322#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2323#[repr(i32)]
2324pub enum GenerateSeriesName {
2325 GsGenerateSeries = 0,
2326 GsRange = 1,
2327}
2328impl GenerateSeriesName {
2329 pub fn as_str_name(&self) -> &'static str {
2334 match self {
2335 Self::GsGenerateSeries => "GS_GENERATE_SERIES",
2336 Self::GsRange => "GS_RANGE",
2337 }
2338 }
2339 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2341 match value {
2342 "GS_GENERATE_SERIES" => Some(Self::GsGenerateSeries),
2343 "GS_RANGE" => Some(Self::GsRange),
2344 _ => None,
2345 }
2346 }
2347}