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