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, 34"
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 #[prost(message, tag = "34")]
81 EmptyTableScan(super::EmptyTableScanNode),
82 }
83}
84#[derive(Clone, PartialEq, ::prost::Message)]
85pub struct LogicalExtensionNode {
86 #[prost(bytes = "vec", tag = "1")]
87 pub node: ::prost::alloc::vec::Vec<u8>,
88 #[prost(message, repeated, tag = "2")]
89 pub inputs: ::prost::alloc::vec::Vec<LogicalPlanNode>,
90}
91#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
92pub struct ProjectionColumns {
93 #[prost(string, repeated, tag = "1")]
94 pub columns: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
95}
96#[derive(Clone, PartialEq, ::prost::Message)]
97pub struct LogicalExprNodeCollection {
98 #[prost(message, repeated, tag = "1")]
99 pub logical_expr_nodes: ::prost::alloc::vec::Vec<LogicalExprNode>,
100}
101#[derive(Clone, PartialEq, ::prost::Message)]
102pub struct SortExprNodeCollection {
103 #[prost(message, repeated, tag = "1")]
104 pub sort_expr_nodes: ::prost::alloc::vec::Vec<SortExprNode>,
105}
106#[derive(Clone, PartialEq, ::prost::Message)]
107pub struct ListingTableScanNode {
108 #[prost(message, optional, tag = "14")]
109 pub table_name: ::core::option::Option<TableReference>,
110 #[prost(string, repeated, tag = "2")]
111 pub paths: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
112 #[prost(string, tag = "3")]
113 pub file_extension: ::prost::alloc::string::String,
114 #[prost(message, optional, tag = "4")]
115 pub projection: ::core::option::Option<ProjectionColumns>,
116 #[prost(message, optional, tag = "5")]
117 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
118 #[prost(message, repeated, tag = "6")]
119 pub filters: ::prost::alloc::vec::Vec<LogicalExprNode>,
120 #[prost(message, repeated, tag = "7")]
121 pub table_partition_cols: ::prost::alloc::vec::Vec<PartitionColumn>,
122 #[prost(message, repeated, tag = "13")]
123 pub file_sort_order: ::prost::alloc::vec::Vec<SortExprNodeCollection>,
124 #[prost(
125 oneof = "listing_table_scan_node::FileFormatType",
126 tags = "10, 11, 12, 15, 16"
127 )]
128 pub file_format_type: ::core::option::Option<
129 listing_table_scan_node::FileFormatType,
130 >,
131}
132pub mod listing_table_scan_node {
134 #[derive(Clone, PartialEq, ::prost::Oneof)]
135 pub enum FileFormatType {
136 #[prost(message, tag = "10")]
137 Csv(super::super::datafusion_common::CsvFormat),
138 #[prost(message, tag = "11")]
139 Parquet(super::super::datafusion_common::ParquetFormat),
140 #[prost(message, tag = "12")]
141 Avro(super::super::datafusion_common::AvroFormat),
142 #[prost(message, tag = "15")]
143 Json(super::super::datafusion_common::NdJsonFormat),
144 #[prost(message, tag = "16")]
145 Arrow(super::super::datafusion_common::ArrowFormat),
146 }
147}
148#[derive(Clone, PartialEq, ::prost::Message)]
149pub struct ViewTableScanNode {
150 #[prost(message, optional, tag = "6")]
151 pub table_name: ::core::option::Option<TableReference>,
152 #[prost(message, optional, boxed, tag = "2")]
153 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
154 #[prost(message, optional, tag = "3")]
155 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
156 #[prost(message, optional, tag = "4")]
157 pub projection: ::core::option::Option<ProjectionColumns>,
158 #[prost(string, tag = "5")]
159 pub definition: ::prost::alloc::string::String,
160}
161#[derive(Clone, PartialEq, ::prost::Message)]
163pub struct CustomTableScanNode {
164 #[prost(message, optional, tag = "6")]
165 pub table_name: ::core::option::Option<TableReference>,
166 #[prost(message, optional, tag = "2")]
167 pub projection: ::core::option::Option<ProjectionColumns>,
168 #[prost(message, optional, tag = "3")]
169 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
170 #[prost(message, repeated, tag = "4")]
171 pub filters: ::prost::alloc::vec::Vec<LogicalExprNode>,
172 #[prost(bytes = "vec", tag = "5")]
173 pub custom_table_data: ::prost::alloc::vec::Vec<u8>,
174}
175#[derive(Clone, PartialEq, ::prost::Message)]
176pub struct ProjectionNode {
177 #[prost(message, optional, boxed, tag = "1")]
178 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
179 #[prost(message, repeated, tag = "2")]
180 pub expr: ::prost::alloc::vec::Vec<LogicalExprNode>,
181 #[prost(oneof = "projection_node::OptionalAlias", tags = "3")]
182 pub optional_alias: ::core::option::Option<projection_node::OptionalAlias>,
183}
184pub mod projection_node {
186 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
187 pub enum OptionalAlias {
188 #[prost(string, tag = "3")]
189 Alias(::prost::alloc::string::String),
190 }
191}
192#[derive(Clone, PartialEq, ::prost::Message)]
193pub struct SelectionNode {
194 #[prost(message, optional, boxed, tag = "1")]
195 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
196 #[prost(message, optional, boxed, tag = "2")]
197 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
198}
199#[derive(Clone, PartialEq, ::prost::Message)]
200pub struct SortNode {
201 #[prost(message, optional, boxed, tag = "1")]
202 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
203 #[prost(message, repeated, tag = "2")]
204 pub expr: ::prost::alloc::vec::Vec<SortExprNode>,
205 #[prost(int64, tag = "3")]
207 pub fetch: i64,
208}
209#[derive(Clone, PartialEq, ::prost::Message)]
210pub struct RepartitionNode {
211 #[prost(message, optional, boxed, tag = "1")]
212 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
213 #[prost(oneof = "repartition_node::PartitionMethod", tags = "2, 3, 4")]
214 pub partition_method: ::core::option::Option<repartition_node::PartitionMethod>,
215}
216pub mod repartition_node {
218 #[derive(Clone, PartialEq, ::prost::Oneof)]
219 pub enum PartitionMethod {
220 #[prost(uint64, tag = "2")]
221 RoundRobin(u64),
222 #[prost(message, tag = "3")]
223 Hash(super::HashRepartition),
224 #[prost(message, tag = "4")]
225 Range(super::RangeRepartition),
226 }
227}
228#[derive(Clone, PartialEq, ::prost::Message)]
229pub struct RangeSplitPoint {
230 #[prost(message, repeated, tag = "1")]
231 pub value: ::prost::alloc::vec::Vec<super::datafusion_common::ScalarValue>,
232}
233#[derive(Clone, PartialEq, ::prost::Message)]
234pub struct RangeRepartition {
235 #[prost(message, repeated, tag = "1")]
236 pub sort_expr: ::prost::alloc::vec::Vec<SortExprNode>,
237 #[prost(message, repeated, tag = "2")]
238 pub split_point: ::prost::alloc::vec::Vec<RangeSplitPoint>,
239}
240#[derive(Clone, PartialEq, ::prost::Message)]
241pub struct HashRepartition {
242 #[prost(message, repeated, tag = "1")]
243 pub hash_expr: ::prost::alloc::vec::Vec<LogicalExprNode>,
244 #[prost(uint64, tag = "2")]
245 pub partition_count: u64,
246}
247#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
248pub struct EmptyRelationNode {
249 #[prost(bool, tag = "1")]
250 pub produce_one_row: bool,
251}
252#[derive(Clone, PartialEq, ::prost::Message)]
253pub struct CreateExternalTableNode {
254 #[prost(message, optional, tag = "9")]
255 pub name: ::core::option::Option<TableReference>,
256 #[prost(string, tag = "2")]
258 pub location: ::prost::alloc::string::String,
259 #[prost(string, repeated, tag = "16")]
260 pub locations: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
261 #[prost(string, tag = "3")]
262 pub file_type: ::prost::alloc::string::String,
263 #[prost(message, optional, tag = "4")]
264 pub schema: ::core::option::Option<super::datafusion_common::DfSchema>,
265 #[prost(string, repeated, tag = "5")]
266 pub table_partition_cols: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
267 #[prost(bool, tag = "6")]
268 pub if_not_exists: bool,
269 #[prost(bool, tag = "15")]
270 pub or_replace: bool,
271 #[prost(bool, tag = "14")]
272 pub temporary: bool,
273 #[prost(string, tag = "7")]
274 pub definition: ::prost::alloc::string::String,
275 #[prost(message, repeated, tag = "10")]
276 pub order_exprs: ::prost::alloc::vec::Vec<SortExprNodeCollection>,
277 #[prost(bool, tag = "11")]
278 pub unbounded: bool,
279 #[prost(map = "string, string", tag = "8")]
280 pub options: ::std::collections::HashMap<
281 ::prost::alloc::string::String,
282 ::prost::alloc::string::String,
283 >,
284 #[prost(message, optional, tag = "12")]
285 pub constraints: ::core::option::Option<super::datafusion_common::Constraints>,
286 #[prost(map = "string, message", tag = "13")]
287 pub column_defaults: ::std::collections::HashMap<
288 ::prost::alloc::string::String,
289 LogicalExprNode,
290 >,
291}
292#[derive(Clone, PartialEq, ::prost::Message)]
293pub struct PrepareNode {
294 #[prost(string, tag = "1")]
295 pub name: ::prost::alloc::string::String,
296 #[prost(message, repeated, tag = "2")]
299 pub data_types: ::prost::alloc::vec::Vec<super::datafusion_common::ArrowType>,
300 #[prost(message, optional, boxed, tag = "3")]
301 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
302 #[prost(message, repeated, tag = "4")]
303 pub fields: ::prost::alloc::vec::Vec<super::datafusion_common::Field>,
304}
305#[derive(Clone, PartialEq, ::prost::Message)]
306pub struct CreateCatalogSchemaNode {
307 #[prost(string, tag = "1")]
308 pub schema_name: ::prost::alloc::string::String,
309 #[prost(bool, tag = "2")]
310 pub if_not_exists: bool,
311 #[prost(message, optional, tag = "3")]
312 pub schema: ::core::option::Option<super::datafusion_common::DfSchema>,
313}
314#[derive(Clone, PartialEq, ::prost::Message)]
315pub struct CreateCatalogNode {
316 #[prost(string, tag = "1")]
317 pub catalog_name: ::prost::alloc::string::String,
318 #[prost(bool, tag = "2")]
319 pub if_not_exists: bool,
320 #[prost(message, optional, tag = "3")]
321 pub schema: ::core::option::Option<super::datafusion_common::DfSchema>,
322}
323#[derive(Clone, PartialEq, ::prost::Message)]
324pub struct DropViewNode {
325 #[prost(message, optional, tag = "1")]
326 pub name: ::core::option::Option<TableReference>,
327 #[prost(bool, tag = "2")]
328 pub if_exists: bool,
329 #[prost(message, optional, tag = "3")]
330 pub schema: ::core::option::Option<super::datafusion_common::DfSchema>,
331}
332#[derive(Clone, PartialEq, ::prost::Message)]
333pub struct CreateViewNode {
334 #[prost(message, optional, tag = "5")]
335 pub name: ::core::option::Option<TableReference>,
336 #[prost(message, optional, boxed, tag = "2")]
337 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
338 #[prost(bool, tag = "3")]
339 pub or_replace: bool,
340 #[prost(bool, tag = "6")]
341 pub temporary: bool,
342 #[prost(string, tag = "4")]
343 pub definition: ::prost::alloc::string::String,
344}
345#[derive(Clone, PartialEq, ::prost::Message)]
348pub struct ValuesNode {
349 #[prost(uint64, tag = "1")]
350 pub n_cols: u64,
351 #[prost(message, repeated, tag = "2")]
352 pub values_list: ::prost::alloc::vec::Vec<LogicalExprNode>,
353}
354#[derive(Clone, PartialEq, ::prost::Message)]
355pub struct AnalyzeNode {
356 #[prost(message, optional, boxed, tag = "1")]
357 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
358 #[prost(bool, tag = "2")]
359 pub verbose: bool,
360 #[prost(enumeration = "super::datafusion_common::MetricType", optional, tag = "3")]
363 pub analyze_level: ::core::option::Option<i32>,
364 #[prost(message, optional, tag = "4")]
367 pub analyze_categories: ::core::option::Option<
368 super::datafusion_common::ExplainAnalyzeCategoriesNode,
369 >,
370 #[prost(enumeration = "super::datafusion_common::ExplainFormat", tag = "5")]
371 pub format: i32,
372}
373#[derive(Clone, PartialEq, ::prost::Message)]
374pub struct ExplainNode {
375 #[prost(message, optional, boxed, tag = "1")]
376 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
377 #[prost(bool, tag = "2")]
378 pub verbose: bool,
379 #[prost(enumeration = "super::datafusion_common::ExplainFormat", tag = "3")]
380 pub format: i32,
381 #[prost(bool, optional, tag = "4")]
384 pub show_statistics: ::core::option::Option<bool>,
385}
386#[derive(Clone, PartialEq, ::prost::Message)]
387pub struct AggregateNode {
388 #[prost(message, optional, boxed, tag = "1")]
389 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
390 #[prost(message, repeated, tag = "2")]
391 pub group_expr: ::prost::alloc::vec::Vec<LogicalExprNode>,
392 #[prost(message, repeated, tag = "3")]
393 pub aggr_expr: ::prost::alloc::vec::Vec<LogicalExprNode>,
394}
395#[derive(Clone, PartialEq, ::prost::Message)]
396pub struct WindowNode {
397 #[prost(message, optional, boxed, tag = "1")]
398 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
399 #[prost(message, repeated, tag = "2")]
400 pub window_expr: ::prost::alloc::vec::Vec<LogicalExprNode>,
401}
402#[derive(Clone, PartialEq, ::prost::Message)]
403pub struct JoinNode {
404 #[prost(message, optional, boxed, tag = "1")]
405 pub left: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
406 #[prost(message, optional, boxed, tag = "2")]
407 pub right: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
408 #[prost(enumeration = "super::datafusion_common::JoinType", tag = "3")]
409 pub join_type: i32,
410 #[prost(enumeration = "super::datafusion_common::JoinConstraint", tag = "4")]
411 pub join_constraint: i32,
412 #[prost(message, repeated, tag = "5")]
413 pub left_join_key: ::prost::alloc::vec::Vec<LogicalExprNode>,
414 #[prost(message, repeated, tag = "6")]
415 pub right_join_key: ::prost::alloc::vec::Vec<LogicalExprNode>,
416 #[prost(enumeration = "super::datafusion_common::NullEquality", tag = "7")]
417 pub null_equality: i32,
418 #[prost(message, optional, boxed, tag = "8")]
419 pub filter: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
420 #[prost(bool, tag = "9")]
421 pub null_aware: bool,
422}
423#[derive(Clone, PartialEq, ::prost::Message)]
424pub struct DistinctNode {
425 #[prost(message, optional, boxed, tag = "1")]
426 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
427}
428#[derive(Clone, PartialEq, ::prost::Message)]
429pub struct DistinctOnNode {
430 #[prost(message, repeated, tag = "1")]
431 pub on_expr: ::prost::alloc::vec::Vec<LogicalExprNode>,
432 #[prost(message, repeated, tag = "2")]
433 pub select_expr: ::prost::alloc::vec::Vec<LogicalExprNode>,
434 #[prost(message, repeated, tag = "3")]
435 pub sort_expr: ::prost::alloc::vec::Vec<SortExprNode>,
436 #[prost(message, optional, boxed, tag = "4")]
437 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
438}
439#[derive(Clone, PartialEq, ::prost::Message)]
440pub struct CopyToNode {
441 #[prost(message, optional, boxed, tag = "1")]
442 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
443 #[prost(string, tag = "2")]
444 pub output_url: ::prost::alloc::string::String,
445 #[prost(bytes = "vec", tag = "3")]
446 pub file_type: ::prost::alloc::vec::Vec<u8>,
447 #[prost(string, repeated, tag = "7")]
448 pub partition_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
449}
450#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
453pub struct FileFormatProto {
454 #[prost(enumeration = "FileFormatKind", tag = "1")]
455 pub kind: i32,
456 #[prost(bytes = "vec", tag = "2")]
457 pub encoded_file_format: ::prost::alloc::vec::Vec<u8>,
458}
459#[derive(Clone, PartialEq, ::prost::Message)]
460pub struct DmlNode {
461 #[prost(enumeration = "dml_node::Type", tag = "1")]
462 pub dml_type: i32,
463 #[prost(message, optional, boxed, tag = "2")]
464 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
465 #[prost(message, optional, tag = "3")]
466 pub table_name: ::core::option::Option<TableReference>,
467 #[prost(message, optional, boxed, tag = "5")]
468 pub target: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
469 #[prost(message, optional, boxed, tag = "6")]
471 pub merge_into: ::core::option::Option<::prost::alloc::boxed::Box<MergeIntoOpNode>>,
472}
473pub mod dml_node {
475 #[derive(
476 Clone,
477 Copy,
478 Debug,
479 PartialEq,
480 Eq,
481 Hash,
482 PartialOrd,
483 Ord,
484 ::prost::Enumeration
485 )]
486 #[repr(i32)]
487 pub enum Type {
488 Update = 0,
489 Delete = 1,
490 Ctas = 2,
491 InsertAppend = 3,
492 InsertOverwrite = 4,
493 InsertReplace = 5,
494 Truncate = 6,
495 MergeInto = 7,
496 }
497 impl Type {
498 pub fn as_str_name(&self) -> &'static str {
503 match self {
504 Self::Update => "UPDATE",
505 Self::Delete => "DELETE",
506 Self::Ctas => "CTAS",
507 Self::InsertAppend => "INSERT_APPEND",
508 Self::InsertOverwrite => "INSERT_OVERWRITE",
509 Self::InsertReplace => "INSERT_REPLACE",
510 Self::Truncate => "TRUNCATE",
511 Self::MergeInto => "MERGE_INTO",
512 }
513 }
514 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
516 match value {
517 "UPDATE" => Some(Self::Update),
518 "DELETE" => Some(Self::Delete),
519 "CTAS" => Some(Self::Ctas),
520 "INSERT_APPEND" => Some(Self::InsertAppend),
521 "INSERT_OVERWRITE" => Some(Self::InsertOverwrite),
522 "INSERT_REPLACE" => Some(Self::InsertReplace),
523 "TRUNCATE" => Some(Self::Truncate),
524 "MERGE_INTO" => Some(Self::MergeInto),
525 _ => None,
526 }
527 }
528 }
529}
530#[derive(Clone, PartialEq, ::prost::Message)]
532pub struct MergeIntoOpNode {
533 #[prost(message, optional, boxed, tag = "1")]
534 pub on: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
535 #[prost(message, repeated, tag = "2")]
536 pub clauses: ::prost::alloc::vec::Vec<MergeIntoClauseNode>,
537}
538#[derive(Clone, PartialEq, ::prost::Message)]
540pub struct MergeIntoClauseNode {
541 #[prost(enumeration = "merge_into_clause_node::Kind", tag = "1")]
542 pub kind: i32,
543 #[prost(message, optional, tag = "2")]
545 pub predicate: ::core::option::Option<LogicalExprNode>,
546 #[prost(message, optional, tag = "3")]
547 pub action: ::core::option::Option<MergeIntoActionNode>,
548}
549pub mod merge_into_clause_node {
551 #[derive(
552 Clone,
553 Copy,
554 Debug,
555 PartialEq,
556 Eq,
557 Hash,
558 PartialOrd,
559 Ord,
560 ::prost::Enumeration
561 )]
562 #[repr(i32)]
563 pub enum Kind {
564 Matched = 0,
565 NotMatched = 1,
566 NotMatchedByTarget = 2,
567 NotMatchedBySource = 3,
568 }
569 impl Kind {
570 pub fn as_str_name(&self) -> &'static str {
575 match self {
576 Self::Matched => "MATCHED",
577 Self::NotMatched => "NOT_MATCHED",
578 Self::NotMatchedByTarget => "NOT_MATCHED_BY_TARGET",
579 Self::NotMatchedBySource => "NOT_MATCHED_BY_SOURCE",
580 }
581 }
582 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
584 match value {
585 "MATCHED" => Some(Self::Matched),
586 "NOT_MATCHED" => Some(Self::NotMatched),
587 "NOT_MATCHED_BY_TARGET" => Some(Self::NotMatchedByTarget),
588 "NOT_MATCHED_BY_SOURCE" => Some(Self::NotMatchedBySource),
589 _ => None,
590 }
591 }
592 }
593}
594#[derive(Clone, PartialEq, ::prost::Message)]
596pub struct MergeIntoActionNode {
597 #[prost(oneof = "merge_into_action_node::Action", tags = "1, 2, 3")]
598 pub action: ::core::option::Option<merge_into_action_node::Action>,
599}
600pub mod merge_into_action_node {
602 #[derive(Clone, PartialEq, ::prost::Oneof)]
603 pub enum Action {
604 #[prost(message, tag = "1")]
605 Update(super::MergeUpdateAction),
606 #[prost(message, tag = "2")]
607 Insert(super::MergeInsertAction),
608 #[prost(message, tag = "3")]
609 Delete(super::MergeDeleteAction),
610 }
611}
612#[derive(Clone, PartialEq, ::prost::Message)]
613pub struct MergeUpdateAction {
614 #[prost(message, repeated, tag = "1")]
615 pub assignments: ::prost::alloc::vec::Vec<MergeAssignment>,
616}
617#[derive(Clone, PartialEq, ::prost::Message)]
618pub struct MergeAssignment {
619 #[prost(string, tag = "1")]
620 pub column: ::prost::alloc::string::String,
621 #[prost(message, optional, tag = "2")]
622 pub value: ::core::option::Option<LogicalExprNode>,
623}
624#[derive(Clone, PartialEq, ::prost::Message)]
625pub struct MergeInsertAction {
626 #[prost(string, repeated, tag = "1")]
628 pub columns: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
629 #[prost(message, repeated, tag = "2")]
631 pub values: ::prost::alloc::vec::Vec<LogicalExprNode>,
632}
633#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
634pub struct MergeDeleteAction {}
635#[derive(Clone, PartialEq, ::prost::Message)]
636pub struct UnnestNode {
637 #[prost(message, optional, boxed, tag = "1")]
638 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
639 #[prost(message, repeated, tag = "2")]
640 pub exec_columns: ::prost::alloc::vec::Vec<super::datafusion_common::Column>,
641 #[prost(message, repeated, tag = "3")]
642 pub list_type_columns: ::prost::alloc::vec::Vec<ColumnUnnestListItem>,
643 #[prost(uint64, repeated, tag = "4")]
644 pub struct_type_columns: ::prost::alloc::vec::Vec<u64>,
645 #[prost(uint64, repeated, tag = "5")]
646 pub dependency_indices: ::prost::alloc::vec::Vec<u64>,
647 #[prost(message, optional, tag = "6")]
648 pub schema: ::core::option::Option<super::datafusion_common::DfSchema>,
649 #[prost(message, optional, tag = "7")]
650 pub options: ::core::option::Option<UnnestOptions>,
651}
652#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
653pub struct ColumnUnnestListItem {
654 #[prost(uint32, tag = "1")]
655 pub input_index: u32,
656 #[prost(message, optional, tag = "2")]
657 pub recursion: ::core::option::Option<ColumnUnnestListRecursion>,
658}
659#[derive(Clone, PartialEq, ::prost::Message)]
660pub struct ColumnUnnestListRecursions {
661 #[prost(message, repeated, tag = "2")]
662 pub recursions: ::prost::alloc::vec::Vec<ColumnUnnestListRecursion>,
663}
664#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
665pub struct ColumnUnnestListRecursion {
666 #[prost(message, optional, tag = "1")]
667 pub output_column: ::core::option::Option<super::datafusion_common::Column>,
668 #[prost(uint32, tag = "2")]
669 pub depth: u32,
670}
671#[derive(Clone, PartialEq, ::prost::Message)]
672pub struct UnnestOptions {
673 #[prost(enumeration = "unnest_options::NullHandling", tag = "3")]
674 pub null_handling: i32,
675 #[prost(message, repeated, tag = "2")]
676 pub recursions: ::prost::alloc::vec::Vec<RecursionUnnestOption>,
677}
678pub mod unnest_options {
680 #[derive(
681 Clone,
682 Copy,
683 Debug,
684 PartialEq,
685 Eq,
686 Hash,
687 PartialOrd,
688 Ord,
689 ::prost::Enumeration
690 )]
691 #[repr(i32)]
692 pub enum NullHandling {
693 Preserve = 0,
695 Drop = 1,
697 PreserveAndExpandEmpty = 2,
700 }
701 impl NullHandling {
702 pub fn as_str_name(&self) -> &'static str {
707 match self {
708 Self::Preserve => "PRESERVE",
709 Self::Drop => "DROP",
710 Self::PreserveAndExpandEmpty => "PRESERVE_AND_EXPAND_EMPTY",
711 }
712 }
713 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
715 match value {
716 "PRESERVE" => Some(Self::Preserve),
717 "DROP" => Some(Self::Drop),
718 "PRESERVE_AND_EXPAND_EMPTY" => Some(Self::PreserveAndExpandEmpty),
719 _ => None,
720 }
721 }
722 }
723}
724#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
725pub struct RecursionUnnestOption {
726 #[prost(message, optional, tag = "1")]
727 pub output_column: ::core::option::Option<super::datafusion_common::Column>,
728 #[prost(message, optional, tag = "2")]
729 pub input_column: ::core::option::Option<super::datafusion_common::Column>,
730 #[prost(uint32, tag = "3")]
731 pub depth: u32,
732}
733#[derive(Clone, PartialEq, ::prost::Message)]
734pub struct UnionNode {
735 #[prost(message, repeated, tag = "1")]
736 pub inputs: ::prost::alloc::vec::Vec<LogicalPlanNode>,
737}
738#[derive(Clone, PartialEq, ::prost::Message)]
739pub struct CrossJoinNode {
740 #[prost(message, optional, boxed, tag = "1")]
741 pub left: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
742 #[prost(message, optional, boxed, tag = "2")]
743 pub right: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
744}
745#[derive(Clone, PartialEq, ::prost::Message)]
746pub struct LimitNode {
747 #[prost(message, optional, boxed, tag = "1")]
748 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
749 #[prost(int64, tag = "2")]
751 pub skip: i64,
752 #[prost(int64, tag = "3")]
754 pub fetch: i64,
755}
756#[derive(Clone, PartialEq, ::prost::Message)]
757pub struct SelectionExecNode {
758 #[prost(message, optional, tag = "1")]
759 pub expr: ::core::option::Option<LogicalExprNode>,
760}
761#[derive(Clone, PartialEq, ::prost::Message)]
762pub struct SubqueryAliasNode {
763 #[prost(message, optional, boxed, tag = "1")]
764 pub input: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
765 #[prost(message, optional, tag = "3")]
766 pub alias: ::core::option::Option<TableReference>,
767}
768#[derive(Clone, PartialEq, ::prost::Message)]
770pub struct LogicalExprNode {
771 #[prost(
772 oneof = "logical_expr_node::ExprType",
773 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, 36, 37, 38, 39"
774 )]
775 pub expr_type: ::core::option::Option<logical_expr_node::ExprType>,
776}
777pub mod logical_expr_node {
779 #[derive(Clone, PartialEq, ::prost::Oneof)]
780 pub enum ExprType {
781 #[prost(message, tag = "1")]
783 Column(super::super::datafusion_common::Column),
784 #[prost(message, tag = "2")]
786 Alias(::prost::alloc::boxed::Box<super::AliasNode>),
787 #[prost(message, tag = "3")]
788 Literal(super::super::datafusion_common::ScalarValue),
789 #[prost(message, tag = "4")]
791 BinaryExpr(super::BinaryExprNode),
792 #[prost(message, tag = "6")]
794 IsNullExpr(::prost::alloc::boxed::Box<super::IsNull>),
795 #[prost(message, tag = "7")]
796 IsNotNullExpr(::prost::alloc::boxed::Box<super::IsNotNull>),
797 #[prost(message, tag = "8")]
798 NotExpr(::prost::alloc::boxed::Box<super::Not>),
799 #[prost(message, tag = "9")]
800 Between(::prost::alloc::boxed::Box<super::BetweenNode>),
801 #[prost(message, tag = "10")]
802 Case(::prost::alloc::boxed::Box<super::CaseNode>),
803 #[prost(message, tag = "11")]
804 Cast(::prost::alloc::boxed::Box<super::CastNode>),
805 #[prost(message, tag = "13")]
806 Negative(::prost::alloc::boxed::Box<super::NegativeNode>),
807 #[prost(message, tag = "14")]
808 InList(::prost::alloc::boxed::Box<super::InListNode>),
809 #[prost(message, tag = "15")]
810 Wildcard(super::Wildcard),
811 #[prost(message, tag = "17")]
813 TryCast(::prost::alloc::boxed::Box<super::TryCastNode>),
814 #[prost(message, tag = "18")]
816 WindowExpr(::prost::alloc::boxed::Box<super::WindowExprNode>),
817 #[prost(message, tag = "19")]
819 AggregateUdfExpr(::prost::alloc::boxed::Box<super::AggregateUdfExprNode>),
820 #[prost(message, tag = "20")]
822 ScalarUdfExpr(super::ScalarUdfExprNode),
823 #[prost(message, tag = "22")]
824 GroupingSet(super::GroupingSetNode),
825 #[prost(message, tag = "23")]
826 Cube(super::CubeNode),
827 #[prost(message, tag = "24")]
828 Rollup(super::RollupNode),
829 #[prost(message, tag = "25")]
830 IsTrue(::prost::alloc::boxed::Box<super::IsTrue>),
831 #[prost(message, tag = "26")]
832 IsFalse(::prost::alloc::boxed::Box<super::IsFalse>),
833 #[prost(message, tag = "27")]
834 IsUnknown(::prost::alloc::boxed::Box<super::IsUnknown>),
835 #[prost(message, tag = "28")]
836 IsNotTrue(::prost::alloc::boxed::Box<super::IsNotTrue>),
837 #[prost(message, tag = "29")]
838 IsNotFalse(::prost::alloc::boxed::Box<super::IsNotFalse>),
839 #[prost(message, tag = "30")]
840 IsNotUnknown(::prost::alloc::boxed::Box<super::IsNotUnknown>),
841 #[prost(message, tag = "31")]
842 Like(::prost::alloc::boxed::Box<super::LikeNode>),
843 #[prost(message, tag = "32")]
844 Ilike(::prost::alloc::boxed::Box<super::ILikeNode>),
845 #[prost(message, tag = "33")]
846 SimilarTo(::prost::alloc::boxed::Box<super::SimilarToNode>),
847 #[prost(message, tag = "34")]
848 Placeholder(super::PlaceholderNode),
849 #[prost(message, tag = "35")]
850 Unnest(super::Unnest),
851 #[prost(message, tag = "36")]
853 ScalarSubqueryExpr(::prost::alloc::boxed::Box<super::ScalarSubqueryExprNode>),
854 #[prost(message, tag = "37")]
855 HigherOrderUdfExpr(super::HigherOrderUdfExprNode),
856 #[prost(message, tag = "38")]
857 Lambda(::prost::alloc::boxed::Box<super::Lambda>),
858 #[prost(message, tag = "39")]
859 LambdaVariable(super::LambdaVariable),
860 }
861}
862#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
863pub struct Wildcard {
864 #[prost(message, optional, tag = "1")]
865 pub qualifier: ::core::option::Option<TableReference>,
866}
867#[derive(Clone, PartialEq, ::prost::Message)]
868pub struct SubqueryNode {
869 #[prost(message, optional, boxed, tag = "1")]
870 pub subquery: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
871 #[prost(message, repeated, tag = "2")]
872 pub outer_ref_columns: ::prost::alloc::vec::Vec<LogicalExprNode>,
873}
874#[derive(Clone, PartialEq, ::prost::Message)]
875pub struct ScalarSubqueryExprNode {
876 #[prost(message, optional, boxed, tag = "1")]
877 pub subquery: ::core::option::Option<::prost::alloc::boxed::Box<SubqueryNode>>,
878}
879#[derive(Clone, PartialEq, ::prost::Message)]
880pub struct PlaceholderNode {
881 #[prost(string, tag = "1")]
882 pub id: ::prost::alloc::string::String,
883 #[prost(message, optional, tag = "2")]
886 pub data_type: ::core::option::Option<super::datafusion_common::ArrowType>,
887 #[prost(bool, optional, tag = "3")]
888 pub nullable: ::core::option::Option<bool>,
889 #[prost(map = "string, string", tag = "4")]
890 pub metadata: ::std::collections::HashMap<
891 ::prost::alloc::string::String,
892 ::prost::alloc::string::String,
893 >,
894}
895#[derive(Clone, PartialEq, ::prost::Message)]
896pub struct LogicalExprList {
897 #[prost(message, repeated, tag = "1")]
898 pub expr: ::prost::alloc::vec::Vec<LogicalExprNode>,
899}
900#[derive(Clone, PartialEq, ::prost::Message)]
901pub struct GroupingSetNode {
902 #[prost(message, repeated, tag = "1")]
903 pub expr: ::prost::alloc::vec::Vec<LogicalExprList>,
904}
905#[derive(Clone, PartialEq, ::prost::Message)]
906pub struct CubeNode {
907 #[prost(message, repeated, tag = "1")]
908 pub expr: ::prost::alloc::vec::Vec<LogicalExprNode>,
909}
910#[derive(Clone, PartialEq, ::prost::Message)]
911pub struct RollupNode {
912 #[prost(message, repeated, tag = "1")]
913 pub expr: ::prost::alloc::vec::Vec<LogicalExprNode>,
914}
915#[derive(Clone, PartialEq, ::prost::Message)]
916pub struct NamedStructField {
917 #[prost(message, optional, tag = "1")]
918 pub name: ::core::option::Option<super::datafusion_common::ScalarValue>,
919}
920#[derive(Clone, PartialEq, ::prost::Message)]
921pub struct ListIndex {
922 #[prost(message, optional, tag = "1")]
923 pub key: ::core::option::Option<LogicalExprNode>,
924}
925#[derive(Clone, PartialEq, ::prost::Message)]
926pub struct ListRange {
927 #[prost(message, optional, tag = "1")]
928 pub start: ::core::option::Option<LogicalExprNode>,
929 #[prost(message, optional, tag = "2")]
930 pub stop: ::core::option::Option<LogicalExprNode>,
931 #[prost(message, optional, tag = "3")]
932 pub stride: ::core::option::Option<LogicalExprNode>,
933}
934#[derive(Clone, PartialEq, ::prost::Message)]
935pub struct IsNull {
936 #[prost(message, optional, boxed, tag = "1")]
937 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
938}
939#[derive(Clone, PartialEq, ::prost::Message)]
940pub struct IsNotNull {
941 #[prost(message, optional, boxed, tag = "1")]
942 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
943}
944#[derive(Clone, PartialEq, ::prost::Message)]
945pub struct IsTrue {
946 #[prost(message, optional, boxed, tag = "1")]
947 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
948}
949#[derive(Clone, PartialEq, ::prost::Message)]
950pub struct IsFalse {
951 #[prost(message, optional, boxed, tag = "1")]
952 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
953}
954#[derive(Clone, PartialEq, ::prost::Message)]
955pub struct IsUnknown {
956 #[prost(message, optional, boxed, tag = "1")]
957 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
958}
959#[derive(Clone, PartialEq, ::prost::Message)]
960pub struct IsNotTrue {
961 #[prost(message, optional, boxed, tag = "1")]
962 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
963}
964#[derive(Clone, PartialEq, ::prost::Message)]
965pub struct IsNotFalse {
966 #[prost(message, optional, boxed, tag = "1")]
967 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
968}
969#[derive(Clone, PartialEq, ::prost::Message)]
970pub struct IsNotUnknown {
971 #[prost(message, optional, boxed, tag = "1")]
972 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
973}
974#[derive(Clone, PartialEq, ::prost::Message)]
975pub struct Not {
976 #[prost(message, optional, boxed, tag = "1")]
977 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
978}
979#[derive(Clone, PartialEq, ::prost::Message)]
980pub struct AliasNode {
981 #[prost(message, optional, boxed, tag = "1")]
982 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
983 #[prost(string, tag = "2")]
984 pub alias: ::prost::alloc::string::String,
985 #[prost(message, repeated, tag = "3")]
986 pub relation: ::prost::alloc::vec::Vec<TableReference>,
987 #[prost(map = "string, string", tag = "4")]
988 pub metadata: ::std::collections::HashMap<
989 ::prost::alloc::string::String,
990 ::prost::alloc::string::String,
991 >,
992}
993#[derive(Clone, PartialEq, ::prost::Message)]
994pub struct BinaryExprNode {
995 #[prost(message, repeated, tag = "1")]
999 pub operands: ::prost::alloc::vec::Vec<LogicalExprNode>,
1000 #[prost(string, tag = "3")]
1001 pub op: ::prost::alloc::string::String,
1002}
1003#[derive(Clone, PartialEq, ::prost::Message)]
1004pub struct NegativeNode {
1005 #[prost(message, optional, boxed, tag = "1")]
1006 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
1007}
1008#[derive(Clone, PartialEq, ::prost::Message)]
1009pub struct Unnest {
1010 #[prost(message, repeated, tag = "1")]
1011 pub exprs: ::prost::alloc::vec::Vec<LogicalExprNode>,
1012 #[prost(bool, tag = "2")]
1015 pub outer: bool,
1016}
1017#[derive(Clone, PartialEq, ::prost::Message)]
1018pub struct InListNode {
1019 #[prost(message, optional, boxed, tag = "1")]
1020 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
1021 #[prost(message, repeated, tag = "2")]
1022 pub list: ::prost::alloc::vec::Vec<LogicalExprNode>,
1023 #[prost(bool, tag = "3")]
1024 pub negated: bool,
1025}
1026#[derive(Clone, PartialEq, ::prost::Message)]
1027pub struct AggregateUdfExprNode {
1028 #[prost(string, tag = "1")]
1029 pub fun_name: ::prost::alloc::string::String,
1030 #[prost(message, repeated, tag = "2")]
1031 pub args: ::prost::alloc::vec::Vec<LogicalExprNode>,
1032 #[prost(bool, tag = "5")]
1033 pub distinct: bool,
1034 #[prost(message, optional, boxed, tag = "3")]
1035 pub filter: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
1036 #[prost(message, repeated, tag = "4")]
1037 pub order_by: ::prost::alloc::vec::Vec<SortExprNode>,
1038 #[prost(bytes = "vec", optional, tag = "6")]
1039 pub fun_definition: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1040 #[prost(enumeration = "NullTreatment", optional, tag = "7")]
1041 pub null_treatment: ::core::option::Option<i32>,
1042}
1043#[derive(Clone, PartialEq, ::prost::Message)]
1044pub struct ScalarUdfExprNode {
1045 #[prost(string, tag = "1")]
1046 pub fun_name: ::prost::alloc::string::String,
1047 #[prost(message, repeated, tag = "2")]
1048 pub args: ::prost::alloc::vec::Vec<LogicalExprNode>,
1049 #[prost(bytes = "vec", optional, tag = "3")]
1050 pub fun_definition: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1051}
1052#[derive(Clone, PartialEq, ::prost::Message)]
1053pub struct HigherOrderUdfExprNode {
1054 #[prost(string, tag = "1")]
1055 pub fun_name: ::prost::alloc::string::String,
1056 #[prost(message, repeated, tag = "2")]
1057 pub args: ::prost::alloc::vec::Vec<LogicalExprNode>,
1058 #[prost(bytes = "vec", optional, tag = "3")]
1059 pub fun_definition: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1060}
1061#[derive(Clone, PartialEq, ::prost::Message)]
1062pub struct Lambda {
1063 #[prost(string, repeated, tag = "1")]
1064 pub params: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1065 #[prost(message, optional, boxed, tag = "2")]
1066 pub body: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
1067}
1068#[derive(Clone, PartialEq, ::prost::Message)]
1069pub struct LambdaVariable {
1070 #[prost(string, tag = "1")]
1071 pub name: ::prost::alloc::string::String,
1072 #[prost(message, optional, tag = "2")]
1073 pub field: ::core::option::Option<super::datafusion_common::Field>,
1074}
1075#[derive(Clone, PartialEq, ::prost::Message)]
1076pub struct WindowExprNode {
1077 #[prost(message, repeated, tag = "4")]
1078 pub exprs: ::prost::alloc::vec::Vec<LogicalExprNode>,
1079 #[prost(message, repeated, tag = "5")]
1080 pub partition_by: ::prost::alloc::vec::Vec<LogicalExprNode>,
1081 #[prost(message, repeated, tag = "6")]
1082 pub order_by: ::prost::alloc::vec::Vec<SortExprNode>,
1083 #[prost(message, optional, tag = "8")]
1085 pub window_frame: ::core::option::Option<WindowFrame>,
1086 #[prost(bytes = "vec", optional, tag = "10")]
1087 pub fun_definition: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1088 #[prost(enumeration = "NullTreatment", optional, tag = "11")]
1089 pub null_treatment: ::core::option::Option<i32>,
1090 #[prost(bool, tag = "12")]
1091 pub distinct: bool,
1092 #[prost(message, optional, boxed, tag = "13")]
1093 pub filter: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
1094 #[prost(oneof = "window_expr_node::WindowFunction", tags = "3, 9")]
1095 pub window_function: ::core::option::Option<window_expr_node::WindowFunction>,
1096}
1097pub mod window_expr_node {
1099 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
1100 pub enum WindowFunction {
1101 #[prost(string, tag = "3")]
1103 Udaf(::prost::alloc::string::String),
1104 #[prost(string, tag = "9")]
1105 Udwf(::prost::alloc::string::String),
1106 }
1107}
1108#[derive(Clone, PartialEq, ::prost::Message)]
1109pub struct BetweenNode {
1110 #[prost(message, optional, boxed, tag = "1")]
1111 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
1112 #[prost(bool, tag = "2")]
1113 pub negated: bool,
1114 #[prost(message, optional, boxed, tag = "3")]
1115 pub low: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
1116 #[prost(message, optional, boxed, tag = "4")]
1117 pub high: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
1118}
1119#[derive(Clone, PartialEq, ::prost::Message)]
1120pub struct LikeNode {
1121 #[prost(bool, tag = "1")]
1122 pub negated: bool,
1123 #[prost(message, optional, boxed, tag = "2")]
1124 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
1125 #[prost(message, optional, boxed, tag = "3")]
1126 pub pattern: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
1127 #[prost(string, tag = "4")]
1128 pub escape_char: ::prost::alloc::string::String,
1129}
1130#[derive(Clone, PartialEq, ::prost::Message)]
1131pub struct ILikeNode {
1132 #[prost(bool, tag = "1")]
1133 pub negated: bool,
1134 #[prost(message, optional, boxed, tag = "2")]
1135 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
1136 #[prost(message, optional, boxed, tag = "3")]
1137 pub pattern: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
1138 #[prost(string, tag = "4")]
1139 pub escape_char: ::prost::alloc::string::String,
1140}
1141#[derive(Clone, PartialEq, ::prost::Message)]
1142pub struct SimilarToNode {
1143 #[prost(bool, tag = "1")]
1144 pub negated: bool,
1145 #[prost(message, optional, boxed, tag = "2")]
1146 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
1147 #[prost(message, optional, boxed, tag = "3")]
1148 pub pattern: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
1149 #[prost(string, tag = "4")]
1150 pub escape_char: ::prost::alloc::string::String,
1151}
1152#[derive(Clone, PartialEq, ::prost::Message)]
1153pub struct CaseNode {
1154 #[prost(message, optional, boxed, tag = "1")]
1155 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
1156 #[prost(message, repeated, tag = "2")]
1157 pub when_then_expr: ::prost::alloc::vec::Vec<WhenThen>,
1158 #[prost(message, optional, boxed, tag = "3")]
1159 pub else_expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
1160}
1161#[derive(Clone, PartialEq, ::prost::Message)]
1162pub struct WhenThen {
1163 #[prost(message, optional, tag = "1")]
1164 pub when_expr: ::core::option::Option<LogicalExprNode>,
1165 #[prost(message, optional, tag = "2")]
1166 pub then_expr: ::core::option::Option<LogicalExprNode>,
1167}
1168#[derive(Clone, PartialEq, ::prost::Message)]
1169pub struct CastNode {
1170 #[prost(message, optional, boxed, tag = "1")]
1171 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
1172 #[prost(message, optional, tag = "2")]
1173 pub arrow_type: ::core::option::Option<super::datafusion_common::ArrowType>,
1174 #[prost(map = "string, string", tag = "3")]
1175 pub metadata: ::std::collections::HashMap<
1176 ::prost::alloc::string::String,
1177 ::prost::alloc::string::String,
1178 >,
1179 #[prost(bool, optional, tag = "4")]
1180 pub nullable: ::core::option::Option<bool>,
1181}
1182#[derive(Clone, PartialEq, ::prost::Message)]
1183pub struct TryCastNode {
1184 #[prost(message, optional, boxed, tag = "1")]
1185 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<LogicalExprNode>>,
1186 #[prost(message, optional, tag = "2")]
1187 pub arrow_type: ::core::option::Option<super::datafusion_common::ArrowType>,
1188 #[prost(map = "string, string", tag = "3")]
1189 pub metadata: ::std::collections::HashMap<
1190 ::prost::alloc::string::String,
1191 ::prost::alloc::string::String,
1192 >,
1193 #[prost(bool, optional, tag = "4")]
1194 pub nullable: ::core::option::Option<bool>,
1195}
1196#[derive(Clone, PartialEq, ::prost::Message)]
1197pub struct SortExprNode {
1198 #[prost(message, optional, tag = "1")]
1199 pub expr: ::core::option::Option<LogicalExprNode>,
1200 #[prost(bool, tag = "2")]
1201 pub asc: bool,
1202 #[prost(bool, tag = "3")]
1203 pub nulls_first: bool,
1204}
1205#[derive(Clone, PartialEq, ::prost::Message)]
1206pub struct WindowFrame {
1207 #[prost(enumeration = "WindowFrameUnits", tag = "1")]
1208 pub window_frame_units: i32,
1209 #[prost(message, optional, tag = "2")]
1210 pub start_bound: ::core::option::Option<WindowFrameBound>,
1211 #[prost(oneof = "window_frame::EndBound", tags = "3")]
1214 pub end_bound: ::core::option::Option<window_frame::EndBound>,
1215}
1216pub mod window_frame {
1218 #[derive(Clone, PartialEq, ::prost::Oneof)]
1221 pub enum EndBound {
1222 #[prost(message, tag = "3")]
1223 Bound(super::WindowFrameBound),
1224 }
1225}
1226#[derive(Clone, PartialEq, ::prost::Message)]
1227pub struct WindowFrameBound {
1228 #[prost(enumeration = "WindowFrameBoundType", tag = "1")]
1229 pub window_frame_bound_type: i32,
1230 #[prost(message, optional, tag = "2")]
1231 pub bound_value: ::core::option::Option<super::datafusion_common::ScalarValue>,
1232}
1233#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1234pub struct FixedSizeBinary {
1235 #[prost(int32, tag = "1")]
1236 pub length: i32,
1237}
1238#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1239pub struct AnalyzedLogicalPlanType {
1240 #[prost(string, tag = "1")]
1241 pub analyzer_name: ::prost::alloc::string::String,
1242}
1243#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1244pub struct OptimizedLogicalPlanType {
1245 #[prost(string, tag = "1")]
1246 pub optimizer_name: ::prost::alloc::string::String,
1247}
1248#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1249pub struct OptimizedPhysicalPlanType {
1250 #[prost(string, tag = "1")]
1251 pub optimizer_name: ::prost::alloc::string::String,
1252}
1253#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1254pub struct PlanType {
1255 #[prost(
1256 oneof = "plan_type::PlanTypeEnum",
1257 tags = "1, 7, 8, 2, 3, 4, 9, 11, 5, 6, 10, 12, 13"
1258 )]
1259 pub plan_type_enum: ::core::option::Option<plan_type::PlanTypeEnum>,
1260}
1261pub mod plan_type {
1263 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
1264 pub enum PlanTypeEnum {
1265 #[prost(message, tag = "1")]
1266 InitialLogicalPlan(super::super::datafusion_common::EmptyMessage),
1267 #[prost(message, tag = "7")]
1268 AnalyzedLogicalPlan(super::AnalyzedLogicalPlanType),
1269 #[prost(message, tag = "8")]
1270 FinalAnalyzedLogicalPlan(super::super::datafusion_common::EmptyMessage),
1271 #[prost(message, tag = "2")]
1272 OptimizedLogicalPlan(super::OptimizedLogicalPlanType),
1273 #[prost(message, tag = "3")]
1274 FinalLogicalPlan(super::super::datafusion_common::EmptyMessage),
1275 #[prost(message, tag = "4")]
1276 InitialPhysicalPlan(super::super::datafusion_common::EmptyMessage),
1277 #[prost(message, tag = "9")]
1278 InitialPhysicalPlanWithStats(super::super::datafusion_common::EmptyMessage),
1279 #[prost(message, tag = "11")]
1280 InitialPhysicalPlanWithSchema(super::super::datafusion_common::EmptyMessage),
1281 #[prost(message, tag = "5")]
1282 OptimizedPhysicalPlan(super::OptimizedPhysicalPlanType),
1283 #[prost(message, tag = "6")]
1284 FinalPhysicalPlan(super::super::datafusion_common::EmptyMessage),
1285 #[prost(message, tag = "10")]
1286 FinalPhysicalPlanWithStats(super::super::datafusion_common::EmptyMessage),
1287 #[prost(message, tag = "12")]
1288 FinalPhysicalPlanWithSchema(super::super::datafusion_common::EmptyMessage),
1289 #[prost(message, tag = "13")]
1290 PhysicalPlanError(super::super::datafusion_common::EmptyMessage),
1291 }
1292}
1293#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1294pub struct StringifiedPlan {
1295 #[prost(message, optional, tag = "1")]
1296 pub plan_type: ::core::option::Option<PlanType>,
1297 #[prost(string, tag = "2")]
1298 pub plan: ::prost::alloc::string::String,
1299}
1300#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1301pub struct BareTableReference {
1302 #[prost(string, tag = "1")]
1303 pub table: ::prost::alloc::string::String,
1304}
1305#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1306pub struct PartialTableReference {
1307 #[prost(string, tag = "1")]
1308 pub schema: ::prost::alloc::string::String,
1309 #[prost(string, tag = "2")]
1310 pub table: ::prost::alloc::string::String,
1311}
1312#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1313pub struct FullTableReference {
1314 #[prost(string, tag = "1")]
1315 pub catalog: ::prost::alloc::string::String,
1316 #[prost(string, tag = "2")]
1317 pub schema: ::prost::alloc::string::String,
1318 #[prost(string, tag = "3")]
1319 pub table: ::prost::alloc::string::String,
1320}
1321#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1322pub struct TableReference {
1323 #[prost(oneof = "table_reference::TableReferenceEnum", tags = "1, 2, 3")]
1324 pub table_reference_enum: ::core::option::Option<
1325 table_reference::TableReferenceEnum,
1326 >,
1327}
1328pub mod table_reference {
1330 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
1331 pub enum TableReferenceEnum {
1332 #[prost(message, tag = "1")]
1333 Bare(super::BareTableReference),
1334 #[prost(message, tag = "2")]
1335 Partial(super::PartialTableReference),
1336 #[prost(message, tag = "3")]
1337 Full(super::FullTableReference),
1338 }
1339}
1340#[derive(Clone, PartialEq, ::prost::Message)]
1342pub struct PhysicalPlanNode {
1343 #[prost(
1344 oneof = "physical_plan_node::PhysicalPlanType",
1345 tags = "1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39"
1346 )]
1347 pub physical_plan_type: ::core::option::Option<physical_plan_node::PhysicalPlanType>,
1348}
1349pub mod physical_plan_node {
1351 #[derive(Clone, PartialEq, ::prost::Oneof)]
1352 pub enum PhysicalPlanType {
1353 #[prost(message, tag = "1")]
1354 ParquetScan(super::ParquetScanExecNode),
1355 #[prost(message, tag = "2")]
1356 CsvScan(super::CsvScanExecNode),
1357 #[prost(message, tag = "3")]
1358 Empty(super::EmptyExecNode),
1359 #[prost(message, tag = "4")]
1360 Projection(::prost::alloc::boxed::Box<super::ProjectionExecNode>),
1361 #[prost(message, tag = "6")]
1362 GlobalLimit(::prost::alloc::boxed::Box<super::GlobalLimitExecNode>),
1363 #[prost(message, tag = "7")]
1364 LocalLimit(::prost::alloc::boxed::Box<super::LocalLimitExecNode>),
1365 #[prost(message, tag = "8")]
1366 Aggregate(::prost::alloc::boxed::Box<super::AggregateExecNode>),
1367 #[prost(message, tag = "9")]
1368 HashJoin(::prost::alloc::boxed::Box<super::HashJoinExecNode>),
1369 #[prost(message, tag = "10")]
1370 Sort(::prost::alloc::boxed::Box<super::SortExecNode>),
1371 #[prost(message, tag = "11")]
1372 CoalesceBatches(::prost::alloc::boxed::Box<super::CoalesceBatchesExecNode>),
1373 #[prost(message, tag = "12")]
1374 Filter(::prost::alloc::boxed::Box<super::FilterExecNode>),
1375 #[prost(message, tag = "13")]
1376 Merge(::prost::alloc::boxed::Box<super::CoalescePartitionsExecNode>),
1377 #[prost(message, tag = "14")]
1378 Repartition(::prost::alloc::boxed::Box<super::RepartitionExecNode>),
1379 #[prost(message, tag = "15")]
1380 Window(::prost::alloc::boxed::Box<super::WindowAggExecNode>),
1381 #[prost(message, tag = "16")]
1382 CrossJoin(::prost::alloc::boxed::Box<super::CrossJoinExecNode>),
1383 #[prost(message, tag = "17")]
1384 AvroScan(super::AvroScanExecNode),
1385 #[prost(message, tag = "18")]
1386 Extension(super::PhysicalExtensionNode),
1387 #[prost(message, tag = "19")]
1388 Union(super::UnionExecNode),
1389 #[prost(message, tag = "20")]
1390 Explain(super::ExplainExecNode),
1391 #[prost(message, tag = "21")]
1392 SortPreservingMerge(
1393 ::prost::alloc::boxed::Box<super::SortPreservingMergeExecNode>,
1394 ),
1395 #[prost(message, tag = "22")]
1396 NestedLoopJoin(::prost::alloc::boxed::Box<super::NestedLoopJoinExecNode>),
1397 #[prost(message, tag = "23")]
1398 Analyze(::prost::alloc::boxed::Box<super::AnalyzeExecNode>),
1399 #[prost(message, tag = "24")]
1400 JsonSink(::prost::alloc::boxed::Box<super::JsonSinkExecNode>),
1401 #[prost(message, tag = "25")]
1402 SymmetricHashJoin(::prost::alloc::boxed::Box<super::SymmetricHashJoinExecNode>),
1403 #[prost(message, tag = "26")]
1404 Interleave(super::InterleaveExecNode),
1405 #[prost(message, tag = "27")]
1406 PlaceholderRow(super::PlaceholderRowExecNode),
1407 #[prost(message, tag = "28")]
1408 CsvSink(::prost::alloc::boxed::Box<super::CsvSinkExecNode>),
1409 #[prost(message, tag = "29")]
1410 ParquetSink(::prost::alloc::boxed::Box<super::ParquetSinkExecNode>),
1411 #[prost(message, tag = "30")]
1412 Unnest(::prost::alloc::boxed::Box<super::UnnestExecNode>),
1413 #[prost(message, tag = "31")]
1414 JsonScan(super::JsonScanExecNode),
1415 #[prost(message, tag = "32")]
1416 Cooperative(::prost::alloc::boxed::Box<super::CooperativeExecNode>),
1417 #[prost(message, tag = "33")]
1418 GenerateSeries(super::GenerateSeriesNode),
1419 #[prost(message, tag = "34")]
1420 SortMergeJoin(::prost::alloc::boxed::Box<super::SortMergeJoinExecNode>),
1421 #[prost(message, tag = "35")]
1422 MemoryScan(super::MemoryScanExecNode),
1423 #[prost(message, tag = "36")]
1424 AsyncFunc(::prost::alloc::boxed::Box<super::AsyncFuncExecNode>),
1425 #[prost(message, tag = "37")]
1426 Buffer(::prost::alloc::boxed::Box<super::BufferExecNode>),
1427 #[prost(message, tag = "38")]
1428 ArrowScan(super::ArrowScanExecNode),
1429 #[prost(message, tag = "39")]
1430 ScalarSubquery(::prost::alloc::boxed::Box<super::ScalarSubqueryExecNode>),
1431 }
1432}
1433#[derive(Clone, PartialEq, ::prost::Message)]
1434pub struct PartitionColumn {
1435 #[prost(string, tag = "1")]
1436 pub name: ::prost::alloc::string::String,
1437 #[prost(message, optional, tag = "2")]
1438 pub arrow_type: ::core::option::Option<super::datafusion_common::ArrowType>,
1439}
1440#[derive(Clone, PartialEq, ::prost::Message)]
1441pub struct FileSinkConfig {
1442 #[prost(string, tag = "1")]
1443 pub object_store_url: ::prost::alloc::string::String,
1444 #[prost(message, repeated, tag = "2")]
1445 pub file_groups: ::prost::alloc::vec::Vec<PartitionedFile>,
1446 #[prost(string, repeated, tag = "3")]
1447 pub table_paths: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1448 #[prost(message, optional, tag = "4")]
1449 pub output_schema: ::core::option::Option<super::datafusion_common::Schema>,
1450 #[prost(message, repeated, tag = "5")]
1451 pub table_partition_cols: ::prost::alloc::vec::Vec<PartitionColumn>,
1452 #[prost(bool, tag = "9")]
1453 pub keep_partition_by_columns: bool,
1454 #[prost(enumeration = "InsertOp", tag = "10")]
1455 pub insert_op: i32,
1456 #[prost(string, tag = "11")]
1457 pub file_extension: ::prost::alloc::string::String,
1458 #[prost(enumeration = "FileOutputMode", tag = "12")]
1460 pub file_output_mode: i32,
1461}
1462#[derive(Clone, PartialEq, ::prost::Message)]
1463pub struct JsonSink {
1464 #[prost(message, optional, tag = "1")]
1465 pub config: ::core::option::Option<FileSinkConfig>,
1466 #[prost(message, optional, tag = "2")]
1467 pub writer_options: ::core::option::Option<
1468 super::datafusion_common::JsonWriterOptions,
1469 >,
1470}
1471#[derive(Clone, PartialEq, ::prost::Message)]
1472pub struct JsonSinkExecNode {
1473 #[prost(message, optional, boxed, tag = "1")]
1474 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1475 #[prost(message, optional, tag = "2")]
1476 pub sink: ::core::option::Option<JsonSink>,
1477 #[prost(message, optional, tag = "3")]
1478 pub sink_schema: ::core::option::Option<super::datafusion_common::Schema>,
1479 #[prost(message, optional, tag = "4")]
1480 pub sort_order: ::core::option::Option<PhysicalSortExprNodeCollection>,
1481}
1482#[derive(Clone, PartialEq, ::prost::Message)]
1483pub struct CsvSink {
1484 #[prost(message, optional, tag = "1")]
1485 pub config: ::core::option::Option<FileSinkConfig>,
1486 #[prost(message, optional, tag = "2")]
1487 pub writer_options: ::core::option::Option<
1488 super::datafusion_common::CsvWriterOptions,
1489 >,
1490}
1491#[derive(Clone, PartialEq, ::prost::Message)]
1492pub struct CsvSinkExecNode {
1493 #[prost(message, optional, boxed, tag = "1")]
1494 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1495 #[prost(message, optional, tag = "2")]
1496 pub sink: ::core::option::Option<CsvSink>,
1497 #[prost(message, optional, tag = "3")]
1498 pub sink_schema: ::core::option::Option<super::datafusion_common::Schema>,
1499 #[prost(message, optional, tag = "4")]
1500 pub sort_order: ::core::option::Option<PhysicalSortExprNodeCollection>,
1501}
1502#[derive(Clone, PartialEq, ::prost::Message)]
1503pub struct ParquetSink {
1504 #[prost(message, optional, tag = "1")]
1505 pub config: ::core::option::Option<FileSinkConfig>,
1506 #[prost(message, optional, tag = "2")]
1507 pub parquet_options: ::core::option::Option<
1508 super::datafusion_common::TableParquetOptions,
1509 >,
1510}
1511#[derive(Clone, PartialEq, ::prost::Message)]
1512pub struct ParquetSinkExecNode {
1513 #[prost(message, optional, boxed, tag = "1")]
1514 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1515 #[prost(message, optional, tag = "2")]
1516 pub sink: ::core::option::Option<ParquetSink>,
1517 #[prost(message, optional, tag = "3")]
1518 pub sink_schema: ::core::option::Option<super::datafusion_common::Schema>,
1519 #[prost(message, optional, tag = "4")]
1520 pub sort_order: ::core::option::Option<PhysicalSortExprNodeCollection>,
1521}
1522#[derive(Clone, PartialEq, ::prost::Message)]
1523pub struct UnnestExecNode {
1524 #[prost(message, optional, boxed, tag = "1")]
1525 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1526 #[prost(message, optional, tag = "2")]
1527 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
1528 #[prost(message, repeated, tag = "3")]
1529 pub list_type_columns: ::prost::alloc::vec::Vec<ListUnnest>,
1530 #[prost(uint64, repeated, tag = "4")]
1531 pub struct_type_columns: ::prost::alloc::vec::Vec<u64>,
1532 #[prost(message, optional, tag = "5")]
1533 pub options: ::core::option::Option<UnnestOptions>,
1534}
1535#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1536pub struct ListUnnest {
1537 #[prost(uint32, tag = "1")]
1538 pub index_in_input_schema: u32,
1539 #[prost(uint32, tag = "2")]
1540 pub depth: u32,
1541}
1542#[derive(Clone, PartialEq, ::prost::Message)]
1543pub struct PhysicalExtensionNode {
1544 #[prost(bytes = "vec", tag = "1")]
1545 pub node: ::prost::alloc::vec::Vec<u8>,
1546 #[prost(message, repeated, tag = "2")]
1547 pub inputs: ::prost::alloc::vec::Vec<PhysicalPlanNode>,
1548}
1549#[derive(Clone, PartialEq, ::prost::Message)]
1551pub struct PhysicalExprNode {
1552 #[prost(uint64, optional, tag = "30")]
1557 pub expr_id: ::core::option::Option<u64>,
1558 #[prost(
1559 oneof = "physical_expr_node::ExprType",
1560 tags = "1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27"
1561 )]
1562 pub expr_type: ::core::option::Option<physical_expr_node::ExprType>,
1563}
1564pub mod physical_expr_node {
1566 #[derive(Clone, PartialEq, ::prost::Oneof)]
1567 pub enum ExprType {
1568 #[prost(message, tag = "1")]
1570 Column(super::PhysicalColumn),
1571 #[prost(message, tag = "2")]
1572 Literal(super::super::datafusion_common::ScalarValue),
1573 #[prost(message, tag = "3")]
1575 BinaryExpr(::prost::alloc::boxed::Box<super::PhysicalBinaryExprNode>),
1576 #[prost(message, tag = "4")]
1578 AggregateExpr(super::PhysicalAggregateExprNode),
1579 #[prost(message, tag = "5")]
1581 IsNullExpr(::prost::alloc::boxed::Box<super::PhysicalIsNull>),
1582 #[prost(message, tag = "6")]
1583 IsNotNullExpr(::prost::alloc::boxed::Box<super::PhysicalIsNotNull>),
1584 #[prost(message, tag = "7")]
1585 NotExpr(::prost::alloc::boxed::Box<super::PhysicalNot>),
1586 #[prost(message, tag = "8")]
1587 Case(::prost::alloc::boxed::Box<super::PhysicalCaseNode>),
1588 #[prost(message, tag = "9")]
1589 Cast(::prost::alloc::boxed::Box<super::PhysicalCastNode>),
1590 #[prost(message, tag = "10")]
1591 Sort(::prost::alloc::boxed::Box<super::PhysicalSortExprNode>),
1592 #[prost(message, tag = "11")]
1593 Negative(::prost::alloc::boxed::Box<super::PhysicalNegativeNode>),
1594 #[prost(message, tag = "12")]
1595 InList(::prost::alloc::boxed::Box<super::PhysicalInListNode>),
1596 #[prost(message, tag = "14")]
1598 TryCast(::prost::alloc::boxed::Box<super::PhysicalTryCastNode>),
1599 #[prost(message, tag = "15")]
1601 WindowExpr(super::PhysicalWindowExprNode),
1602 #[prost(message, tag = "16")]
1604 ScalarUdf(super::PhysicalScalarUdfNode),
1605 #[prost(message, tag = "18")]
1606 LikeExpr(::prost::alloc::boxed::Box<super::PhysicalLikeExprNode>),
1607 #[prost(message, tag = "19")]
1608 Extension(super::PhysicalExtensionExprNode),
1609 #[prost(message, tag = "20")]
1610 UnknownColumn(super::UnknownColumn),
1611 #[prost(message, tag = "21")]
1612 HashExpr(super::PhysicalHashExprNode),
1613 #[prost(message, tag = "22")]
1614 ScalarSubquery(super::PhysicalScalarSubqueryExprNode),
1615 #[prost(message, tag = "23")]
1616 DynamicFilter(::prost::alloc::boxed::Box<super::PhysicalDynamicFilterNode>),
1617 #[prost(message, tag = "24")]
1618 HigherOrderUdf(super::PhysicalHigherOrderUdfNode),
1619 #[prost(message, tag = "25")]
1620 Lambda(::prost::alloc::boxed::Box<super::PhysicalLambdaExprNode>),
1621 #[prost(message, tag = "26")]
1622 LambdaVariable(super::PhysicalLambdaVariableExprNode),
1623 #[prost(message, tag = "27")]
1624 RangeExpr(super::PhysicalRangeExprNode),
1625 }
1626}
1627#[derive(Clone, PartialEq, ::prost::Message)]
1628pub struct PhysicalDynamicFilterNode {
1629 #[prost(message, repeated, tag = "1")]
1630 pub children: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1631 #[prost(message, repeated, tag = "2")]
1632 pub remapped_children: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1633 #[prost(uint64, tag = "3")]
1634 pub generation: u64,
1635 #[prost(message, optional, boxed, tag = "4")]
1636 pub inner_expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1637 #[prost(bool, tag = "5")]
1638 pub is_complete: bool,
1639}
1640#[derive(Clone, PartialEq, ::prost::Message)]
1641pub struct PhysicalScalarUdfNode {
1642 #[prost(string, tag = "1")]
1643 pub name: ::prost::alloc::string::String,
1644 #[prost(message, repeated, tag = "2")]
1645 pub args: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1646 #[prost(bytes = "vec", optional, tag = "3")]
1647 pub fun_definition: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1648 #[prost(message, optional, tag = "4")]
1649 pub return_type: ::core::option::Option<super::datafusion_common::ArrowType>,
1650 #[prost(bool, tag = "5")]
1651 pub nullable: bool,
1652 #[prost(string, tag = "6")]
1653 pub return_field_name: ::prost::alloc::string::String,
1654}
1655#[derive(Clone, PartialEq, ::prost::Message)]
1656pub struct PhysicalHigherOrderUdfNode {
1657 #[prost(string, tag = "1")]
1658 pub name: ::prost::alloc::string::String,
1659 #[prost(message, repeated, tag = "2")]
1660 pub args: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1661 #[prost(bytes = "vec", optional, tag = "3")]
1662 pub fun_definition: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1663}
1664#[derive(Clone, PartialEq, ::prost::Message)]
1665pub struct PhysicalLambdaExprNode {
1666 #[prost(string, repeated, tag = "1")]
1667 pub params: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1668 #[prost(message, optional, boxed, tag = "2")]
1669 pub body: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1670}
1671#[derive(Clone, PartialEq, ::prost::Message)]
1672pub struct PhysicalLambdaVariableExprNode {
1673 #[prost(uint32, tag = "1")]
1674 pub index: u32,
1675 #[prost(message, optional, tag = "2")]
1676 pub field: ::core::option::Option<super::datafusion_common::Field>,
1677}
1678#[derive(Clone, PartialEq, ::prost::Message)]
1679pub struct PhysicalAggregateExprNode {
1680 #[prost(message, repeated, tag = "2")]
1681 pub expr: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1682 #[prost(message, repeated, tag = "5")]
1683 pub ordering_req: ::prost::alloc::vec::Vec<PhysicalSortExprNode>,
1684 #[prost(bool, tag = "3")]
1685 pub distinct: bool,
1686 #[prost(bool, tag = "6")]
1687 pub ignore_nulls: bool,
1688 #[prost(bytes = "vec", optional, tag = "7")]
1689 pub fun_definition: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1690 #[prost(string, tag = "8")]
1691 pub human_display: ::prost::alloc::string::String,
1692 #[prost(bool, tag = "9")]
1693 pub is_reversed: bool,
1694 #[prost(oneof = "physical_aggregate_expr_node::AggregateFunction", tags = "4")]
1695 pub aggregate_function: ::core::option::Option<
1696 physical_aggregate_expr_node::AggregateFunction,
1697 >,
1698}
1699pub mod physical_aggregate_expr_node {
1701 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
1702 pub enum AggregateFunction {
1703 #[prost(string, tag = "4")]
1704 UserDefinedAggrFunction(::prost::alloc::string::String),
1705 }
1706}
1707#[derive(Clone, PartialEq, ::prost::Message)]
1708pub struct PhysicalWindowExprNode {
1709 #[prost(message, repeated, tag = "4")]
1710 pub args: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1711 #[prost(message, repeated, tag = "5")]
1712 pub partition_by: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1713 #[prost(message, repeated, tag = "6")]
1714 pub order_by: ::prost::alloc::vec::Vec<PhysicalSortExprNode>,
1715 #[prost(message, optional, tag = "7")]
1716 pub window_frame: ::core::option::Option<WindowFrame>,
1717 #[prost(string, tag = "8")]
1718 pub name: ::prost::alloc::string::String,
1719 #[prost(bytes = "vec", optional, tag = "9")]
1720 pub fun_definition: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1721 #[prost(bool, tag = "11")]
1722 pub ignore_nulls: bool,
1723 #[prost(bool, tag = "12")]
1724 pub distinct: bool,
1725 #[prost(oneof = "physical_window_expr_node::WindowFunction", tags = "3, 10")]
1726 pub window_function: ::core::option::Option<
1727 physical_window_expr_node::WindowFunction,
1728 >,
1729}
1730pub mod physical_window_expr_node {
1732 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
1733 pub enum WindowFunction {
1734 #[prost(string, tag = "3")]
1736 UserDefinedAggrFunction(::prost::alloc::string::String),
1737 #[prost(string, tag = "10")]
1738 UserDefinedWindowFunction(::prost::alloc::string::String),
1739 }
1740}
1741#[derive(Clone, PartialEq, ::prost::Message)]
1742pub struct PhysicalIsNull {
1743 #[prost(message, optional, boxed, tag = "1")]
1744 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1745}
1746#[derive(Clone, PartialEq, ::prost::Message)]
1747pub struct PhysicalIsNotNull {
1748 #[prost(message, optional, boxed, tag = "1")]
1749 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1750}
1751#[derive(Clone, PartialEq, ::prost::Message)]
1752pub struct PhysicalNot {
1753 #[prost(message, optional, boxed, tag = "1")]
1754 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1755}
1756#[derive(Clone, PartialEq, ::prost::Message)]
1757pub struct PhysicalAliasNode {
1758 #[prost(message, optional, tag = "1")]
1759 pub expr: ::core::option::Option<PhysicalExprNode>,
1760 #[prost(string, tag = "2")]
1761 pub alias: ::prost::alloc::string::String,
1762}
1763#[derive(Clone, PartialEq, ::prost::Message)]
1764pub struct PhysicalBinaryExprNode {
1765 #[prost(message, optional, boxed, tag = "1")]
1766 pub l: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1767 #[prost(message, optional, boxed, tag = "2")]
1768 pub r: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1769 #[prost(string, tag = "3")]
1770 pub op: ::prost::alloc::string::String,
1771 #[prost(message, repeated, tag = "4")]
1774 pub operands: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1775}
1776#[derive(Clone, PartialEq, ::prost::Message)]
1777pub struct PhysicalDateTimeIntervalExprNode {
1778 #[prost(message, optional, tag = "1")]
1779 pub l: ::core::option::Option<PhysicalExprNode>,
1780 #[prost(message, optional, tag = "2")]
1781 pub r: ::core::option::Option<PhysicalExprNode>,
1782 #[prost(string, tag = "3")]
1783 pub op: ::prost::alloc::string::String,
1784}
1785#[derive(Clone, PartialEq, ::prost::Message)]
1786pub struct PhysicalLikeExprNode {
1787 #[prost(bool, tag = "1")]
1788 pub negated: bool,
1789 #[prost(bool, tag = "2")]
1790 pub case_insensitive: bool,
1791 #[prost(message, optional, boxed, tag = "3")]
1792 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1793 #[prost(message, optional, boxed, tag = "4")]
1794 pub pattern: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1795}
1796#[derive(Clone, PartialEq, ::prost::Message)]
1797pub struct PhysicalSortExprNode {
1798 #[prost(message, optional, boxed, tag = "1")]
1799 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1800 #[prost(bool, tag = "2")]
1801 pub asc: bool,
1802 #[prost(bool, tag = "3")]
1803 pub nulls_first: bool,
1804}
1805#[derive(Clone, PartialEq, ::prost::Message)]
1806pub struct PhysicalWhenThen {
1807 #[prost(message, optional, tag = "1")]
1808 pub when_expr: ::core::option::Option<PhysicalExprNode>,
1809 #[prost(message, optional, tag = "2")]
1810 pub then_expr: ::core::option::Option<PhysicalExprNode>,
1811}
1812#[derive(Clone, PartialEq, ::prost::Message)]
1813pub struct PhysicalInListNode {
1814 #[prost(message, optional, boxed, tag = "1")]
1815 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1816 #[prost(message, repeated, tag = "2")]
1817 pub list: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1818 #[prost(bool, tag = "3")]
1819 pub negated: bool,
1820}
1821#[derive(Clone, PartialEq, ::prost::Message)]
1822pub struct PhysicalCaseNode {
1823 #[prost(message, optional, boxed, tag = "1")]
1824 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1825 #[prost(message, repeated, tag = "2")]
1826 pub when_then_expr: ::prost::alloc::vec::Vec<PhysicalWhenThen>,
1827 #[prost(message, optional, boxed, tag = "3")]
1828 pub else_expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1829}
1830#[derive(Clone, PartialEq, ::prost::Message)]
1831pub struct PhysicalTryCastNode {
1832 #[prost(message, optional, boxed, tag = "1")]
1833 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1834 #[prost(message, optional, tag = "2")]
1835 pub arrow_type: ::core::option::Option<super::datafusion_common::ArrowType>,
1836}
1837#[derive(Clone, PartialEq, ::prost::Message)]
1838pub struct PhysicalCastNode {
1839 #[prost(message, optional, boxed, tag = "1")]
1840 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1841 #[prost(message, optional, tag = "2")]
1842 pub arrow_type: ::core::option::Option<super::datafusion_common::ArrowType>,
1843}
1844#[derive(Clone, PartialEq, ::prost::Message)]
1845pub struct PhysicalNegativeNode {
1846 #[prost(message, optional, boxed, tag = "1")]
1847 pub expr: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalExprNode>>,
1848}
1849#[derive(Clone, PartialEq, ::prost::Message)]
1850pub struct PhysicalExtensionExprNode {
1851 #[prost(bytes = "vec", tag = "1")]
1852 pub expr: ::prost::alloc::vec::Vec<u8>,
1853 #[prost(message, repeated, tag = "2")]
1854 pub inputs: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1855}
1856#[derive(Clone, PartialEq, ::prost::Message)]
1857pub struct PhysicalHashExprNode {
1858 #[prost(message, repeated, tag = "1")]
1859 pub on_columns: ::prost::alloc::vec::Vec<PhysicalExprNode>,
1860 #[prost(uint64, tag = "2")]
1861 pub seed0: u64,
1862 #[prost(string, tag = "6")]
1863 pub description: ::prost::alloc::string::String,
1864}
1865#[derive(Clone, PartialEq, ::prost::Message)]
1866pub struct PhysicalRangeExprNode {
1867 #[prost(message, repeated, tag = "1")]
1868 pub sort_expr: ::prost::alloc::vec::Vec<PhysicalSortExprNode>,
1869 #[prost(message, repeated, tag = "2")]
1870 pub split_point: ::prost::alloc::vec::Vec<PhysicalRangeSplitPoint>,
1871}
1872#[derive(Clone, PartialEq, ::prost::Message)]
1873pub struct FilterExecNode {
1874 #[prost(message, optional, boxed, tag = "1")]
1875 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
1876 #[prost(message, optional, tag = "2")]
1877 pub expr: ::core::option::Option<PhysicalExprNode>,
1878 #[prost(uint32, tag = "3")]
1879 pub default_filter_selectivity: u32,
1880 #[prost(uint32, repeated, tag = "9")]
1881 pub projection: ::prost::alloc::vec::Vec<u32>,
1882 #[prost(uint32, tag = "10")]
1883 pub batch_size: u32,
1884 #[prost(uint32, optional, tag = "11")]
1885 pub fetch: ::core::option::Option<u32>,
1886}
1887#[derive(Clone, PartialEq, ::prost::Message)]
1888pub struct FileGroup {
1889 #[prost(message, repeated, tag = "1")]
1890 pub files: ::prost::alloc::vec::Vec<PartitionedFile>,
1891}
1892#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1893pub struct ScanLimit {
1894 #[prost(uint32, tag = "1")]
1896 pub limit: u32,
1897}
1898#[derive(Clone, PartialEq, ::prost::Message)]
1899pub struct PhysicalSortExprNodeCollection {
1900 #[prost(message, repeated, tag = "1")]
1901 pub physical_sort_expr_nodes: ::prost::alloc::vec::Vec<PhysicalSortExprNode>,
1902}
1903#[derive(Clone, PartialEq, ::prost::Message)]
1904pub struct ProjectionExpr {
1905 #[prost(string, tag = "1")]
1906 pub alias: ::prost::alloc::string::String,
1907 #[prost(message, optional, tag = "2")]
1908 pub expr: ::core::option::Option<PhysicalExprNode>,
1909}
1910#[derive(Clone, PartialEq, ::prost::Message)]
1911pub struct ProjectionExprs {
1912 #[prost(message, repeated, tag = "1")]
1913 pub projections: ::prost::alloc::vec::Vec<ProjectionExpr>,
1914}
1915#[derive(Clone, PartialEq, ::prost::Message)]
1916pub struct FileScanExecConf {
1917 #[prost(message, repeated, tag = "1")]
1918 pub file_groups: ::prost::alloc::vec::Vec<FileGroup>,
1919 #[prost(message, optional, tag = "2")]
1920 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
1921 #[prost(uint32, repeated, tag = "4")]
1922 pub projection: ::prost::alloc::vec::Vec<u32>,
1923 #[prost(message, optional, tag = "5")]
1924 pub limit: ::core::option::Option<ScanLimit>,
1925 #[prost(message, optional, tag = "6")]
1926 pub statistics: ::core::option::Option<super::datafusion_common::Statistics>,
1927 #[prost(string, repeated, tag = "7")]
1928 pub table_partition_cols: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1929 #[prost(string, tag = "8")]
1930 pub object_store_url: ::prost::alloc::string::String,
1931 #[prost(message, repeated, tag = "9")]
1932 pub output_ordering: ::prost::alloc::vec::Vec<PhysicalSortExprNodeCollection>,
1933 #[prost(message, optional, tag = "11")]
1934 pub constraints: ::core::option::Option<super::datafusion_common::Constraints>,
1935 #[prost(uint64, optional, tag = "12")]
1936 pub batch_size: ::core::option::Option<u64>,
1937 #[prost(message, optional, tag = "13")]
1938 pub projection_exprs: ::core::option::Option<ProjectionExprs>,
1939 #[prost(message, optional, tag = "15")]
1940 pub output_partitioning: ::core::option::Option<Partitioning>,
1941}
1942#[derive(Clone, PartialEq, ::prost::Message)]
1943pub struct ParquetScanExecNode {
1944 #[prost(message, optional, tag = "1")]
1945 pub base_conf: ::core::option::Option<FileScanExecConf>,
1946 #[prost(message, optional, tag = "3")]
1947 pub predicate: ::core::option::Option<PhysicalExprNode>,
1948 #[prost(message, optional, tag = "4")]
1949 pub parquet_options: ::core::option::Option<
1950 super::datafusion_common::TableParquetOptions,
1951 >,
1952}
1953#[derive(Clone, PartialEq, ::prost::Message)]
1954pub struct CsvScanExecNode {
1955 #[prost(message, optional, tag = "1")]
1956 pub base_conf: ::core::option::Option<FileScanExecConf>,
1957 #[prost(bool, tag = "2")]
1958 pub has_header: bool,
1959 #[prost(string, tag = "3")]
1960 pub delimiter: ::prost::alloc::string::String,
1961 #[prost(string, tag = "4")]
1962 pub quote: ::prost::alloc::string::String,
1963 #[prost(bool, tag = "7")]
1964 pub newlines_in_values: bool,
1965 #[prost(bool, tag = "8")]
1966 pub truncate_rows: bool,
1967 #[prost(oneof = "csv_scan_exec_node::OptionalEscape", tags = "5")]
1968 pub optional_escape: ::core::option::Option<csv_scan_exec_node::OptionalEscape>,
1969 #[prost(oneof = "csv_scan_exec_node::OptionalComment", tags = "6")]
1970 pub optional_comment: ::core::option::Option<csv_scan_exec_node::OptionalComment>,
1971}
1972pub mod csv_scan_exec_node {
1974 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
1975 pub enum OptionalEscape {
1976 #[prost(string, tag = "5")]
1977 Escape(::prost::alloc::string::String),
1978 }
1979 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
1980 pub enum OptionalComment {
1981 #[prost(string, tag = "6")]
1982 Comment(::prost::alloc::string::String),
1983 }
1984}
1985#[derive(Clone, PartialEq, ::prost::Message)]
1986pub struct JsonScanExecNode {
1987 #[prost(message, optional, tag = "1")]
1988 pub base_conf: ::core::option::Option<FileScanExecConf>,
1989}
1990#[derive(Clone, PartialEq, ::prost::Message)]
1991pub struct AvroScanExecNode {
1992 #[prost(message, optional, tag = "1")]
1993 pub base_conf: ::core::option::Option<FileScanExecConf>,
1994}
1995#[derive(Clone, PartialEq, ::prost::Message)]
1996pub struct ArrowScanExecNode {
1997 #[prost(message, optional, tag = "1")]
1998 pub base_conf: ::core::option::Option<FileScanExecConf>,
1999}
2000#[derive(Clone, PartialEq, ::prost::Message)]
2001pub struct MemoryScanExecNode {
2002 #[prost(bytes = "vec", repeated, tag = "1")]
2003 pub partitions: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
2004 #[prost(message, optional, tag = "2")]
2005 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
2006 #[prost(uint32, repeated, tag = "3")]
2007 pub projection: ::prost::alloc::vec::Vec<u32>,
2008 #[prost(message, repeated, tag = "4")]
2009 pub sort_information: ::prost::alloc::vec::Vec<PhysicalSortExprNodeCollection>,
2010 #[prost(bool, tag = "5")]
2011 pub show_sizes: bool,
2012 #[prost(uint32, optional, tag = "6")]
2013 pub fetch: ::core::option::Option<u32>,
2014}
2015#[derive(Clone, PartialEq, ::prost::Message)]
2016pub struct CooperativeExecNode {
2017 #[prost(message, optional, boxed, tag = "1")]
2018 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
2019}
2020#[derive(Clone, PartialEq, ::prost::Message)]
2021pub struct HashJoinExecNode {
2022 #[prost(message, optional, boxed, tag = "1")]
2023 pub left: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
2024 #[prost(message, optional, boxed, tag = "2")]
2025 pub right: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
2026 #[prost(message, repeated, tag = "3")]
2027 pub on: ::prost::alloc::vec::Vec<JoinOn>,
2028 #[prost(enumeration = "super::datafusion_common::JoinType", tag = "4")]
2029 pub join_type: i32,
2030 #[prost(enumeration = "PartitionMode", tag = "6")]
2031 pub partition_mode: i32,
2032 #[prost(enumeration = "super::datafusion_common::NullEquality", tag = "7")]
2033 pub null_equality: i32,
2034 #[prost(message, optional, tag = "8")]
2035 pub filter: ::core::option::Option<JoinFilter>,
2036 #[prost(uint32, repeated, tag = "9")]
2037 pub projection: ::prost::alloc::vec::Vec<u32>,
2038 #[prost(bool, tag = "10")]
2039 pub null_aware: bool,
2040 #[prost(message, optional, tag = "11")]
2042 pub dynamic_filter: ::core::option::Option<PhysicalExprNode>,
2043 #[prost(uint64, optional, tag = "12")]
2051 pub fetch: ::core::option::Option<u64>,
2052}
2053#[derive(Clone, PartialEq, ::prost::Message)]
2054pub struct SymmetricHashJoinExecNode {
2055 #[prost(message, optional, boxed, tag = "1")]
2056 pub left: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
2057 #[prost(message, optional, boxed, tag = "2")]
2058 pub right: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
2059 #[prost(message, repeated, tag = "3")]
2060 pub on: ::prost::alloc::vec::Vec<JoinOn>,
2061 #[prost(enumeration = "super::datafusion_common::JoinType", tag = "4")]
2062 pub join_type: i32,
2063 #[prost(enumeration = "StreamPartitionMode", tag = "6")]
2064 pub partition_mode: i32,
2065 #[prost(enumeration = "super::datafusion_common::NullEquality", tag = "7")]
2066 pub null_equality: i32,
2067 #[prost(message, optional, tag = "8")]
2068 pub filter: ::core::option::Option<JoinFilter>,
2069 #[prost(message, repeated, tag = "9")]
2070 pub left_sort_exprs: ::prost::alloc::vec::Vec<PhysicalSortExprNode>,
2071 #[prost(message, repeated, tag = "10")]
2072 pub right_sort_exprs: ::prost::alloc::vec::Vec<PhysicalSortExprNode>,
2073}
2074#[derive(Clone, PartialEq, ::prost::Message)]
2075pub struct InterleaveExecNode {
2076 #[prost(message, repeated, tag = "1")]
2077 pub inputs: ::prost::alloc::vec::Vec<PhysicalPlanNode>,
2078}
2079#[derive(Clone, PartialEq, ::prost::Message)]
2080pub struct UnionExecNode {
2081 #[prost(message, repeated, tag = "1")]
2082 pub inputs: ::prost::alloc::vec::Vec<PhysicalPlanNode>,
2083}
2084#[derive(Clone, PartialEq, ::prost::Message)]
2085pub struct ExplainExecNode {
2086 #[prost(message, optional, tag = "1")]
2087 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
2088 #[prost(message, repeated, tag = "2")]
2089 pub stringified_plans: ::prost::alloc::vec::Vec<StringifiedPlan>,
2090 #[prost(bool, tag = "3")]
2091 pub verbose: bool,
2092}
2093#[derive(Clone, PartialEq, ::prost::Message)]
2094pub struct AnalyzeExecNode {
2095 #[prost(bool, tag = "1")]
2096 pub verbose: bool,
2097 #[prost(bool, tag = "2")]
2098 pub show_statistics: bool,
2099 #[prost(message, optional, boxed, tag = "3")]
2100 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
2101 #[prost(message, optional, tag = "4")]
2102 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
2103 #[prost(bool, tag = "5")]
2106 pub has_metric_categories: bool,
2107 #[prost(string, repeated, tag = "6")]
2108 pub metric_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2109 #[prost(enumeration = "super::datafusion_common::ExplainFormat", tag = "7")]
2110 pub format: i32,
2111}
2112#[derive(Clone, PartialEq, ::prost::Message)]
2113pub struct CrossJoinExecNode {
2114 #[prost(message, optional, boxed, tag = "1")]
2115 pub left: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
2116 #[prost(message, optional, boxed, tag = "2")]
2117 pub right: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
2118}
2119#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2120pub struct PhysicalColumn {
2121 #[prost(string, tag = "1")]
2122 pub name: ::prost::alloc::string::String,
2123 #[prost(uint32, tag = "2")]
2124 pub index: u32,
2125}
2126#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2127pub struct UnknownColumn {
2128 #[prost(string, tag = "1")]
2129 pub name: ::prost::alloc::string::String,
2130}
2131#[derive(Clone, PartialEq, ::prost::Message)]
2132pub struct JoinOn {
2133 #[prost(message, optional, tag = "1")]
2134 pub left: ::core::option::Option<PhysicalExprNode>,
2135 #[prost(message, optional, tag = "2")]
2136 pub right: ::core::option::Option<PhysicalExprNode>,
2137}
2138#[derive(Clone, PartialEq, ::prost::Message)]
2139pub struct EmptyExecNode {
2140 #[prost(message, optional, tag = "1")]
2141 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
2142 #[prost(uint32, tag = "2")]
2145 pub partitions: u32,
2146}
2147#[derive(Clone, PartialEq, ::prost::Message)]
2148pub struct PlaceholderRowExecNode {
2149 #[prost(message, optional, tag = "1")]
2150 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
2151 #[prost(uint32, tag = "2")]
2154 pub partitions: u32,
2155}
2156#[derive(Clone, PartialEq, ::prost::Message)]
2157pub struct ProjectionExecNode {
2158 #[prost(message, optional, boxed, tag = "1")]
2159 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
2160 #[prost(message, repeated, tag = "2")]
2161 pub expr: ::prost::alloc::vec::Vec<PhysicalExprNode>,
2162 #[prost(string, repeated, tag = "3")]
2163 pub expr_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2164}
2165#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2166pub struct PartiallySortedInputOrderMode {
2167 #[prost(uint64, repeated, tag = "6")]
2168 pub columns: ::prost::alloc::vec::Vec<u64>,
2169}
2170#[derive(Clone, PartialEq, ::prost::Message)]
2171pub struct WindowAggExecNode {
2172 #[prost(message, optional, boxed, tag = "1")]
2173 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
2174 #[prost(message, repeated, tag = "2")]
2175 pub window_expr: ::prost::alloc::vec::Vec<PhysicalWindowExprNode>,
2176 #[prost(message, repeated, tag = "5")]
2177 pub partition_keys: ::prost::alloc::vec::Vec<PhysicalExprNode>,
2178 #[prost(oneof = "window_agg_exec_node::InputOrderMode", tags = "7, 8, 9")]
2180 pub input_order_mode: ::core::option::Option<window_agg_exec_node::InputOrderMode>,
2181}
2182pub mod window_agg_exec_node {
2184 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
2186 pub enum InputOrderMode {
2187 #[prost(message, tag = "7")]
2188 Linear(super::super::datafusion_common::EmptyMessage),
2189 #[prost(message, tag = "8")]
2190 PartiallySorted(super::PartiallySortedInputOrderMode),
2191 #[prost(message, tag = "9")]
2192 Sorted(super::super::datafusion_common::EmptyMessage),
2193 }
2194}
2195#[derive(Clone, PartialEq, ::prost::Message)]
2196pub struct MaybeFilter {
2197 #[prost(message, optional, tag = "1")]
2198 pub expr: ::core::option::Option<PhysicalExprNode>,
2199}
2200#[derive(Clone, PartialEq, ::prost::Message)]
2201pub struct MaybePhysicalSortExprs {
2202 #[prost(message, repeated, tag = "1")]
2203 pub sort_expr: ::prost::alloc::vec::Vec<PhysicalSortExprNode>,
2204}
2205#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2206pub struct AggLimit {
2207 #[prost(uint64, tag = "1")]
2209 pub limit: u64,
2210 #[prost(bool, optional, tag = "2")]
2212 pub descending: ::core::option::Option<bool>,
2213}
2214#[derive(Clone, PartialEq, ::prost::Message)]
2215pub struct AggregateExecNode {
2216 #[prost(message, repeated, tag = "1")]
2217 pub group_expr: ::prost::alloc::vec::Vec<PhysicalExprNode>,
2218 #[prost(message, repeated, tag = "2")]
2219 pub aggr_expr: ::prost::alloc::vec::Vec<PhysicalExprNode>,
2220 #[prost(enumeration = "AggregateMode", tag = "3")]
2221 pub mode: i32,
2222 #[prost(message, optional, boxed, tag = "4")]
2223 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
2224 #[prost(string, repeated, tag = "5")]
2225 pub group_expr_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2226 #[prost(string, repeated, tag = "6")]
2227 pub aggr_expr_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2228 #[prost(message, optional, tag = "7")]
2230 pub input_schema: ::core::option::Option<super::datafusion_common::Schema>,
2231 #[prost(message, repeated, tag = "8")]
2232 pub null_expr: ::prost::alloc::vec::Vec<PhysicalExprNode>,
2233 #[prost(bool, repeated, tag = "9")]
2234 pub groups: ::prost::alloc::vec::Vec<bool>,
2235 #[prost(message, repeated, tag = "10")]
2236 pub filter_expr: ::prost::alloc::vec::Vec<MaybeFilter>,
2237 #[prost(message, optional, tag = "11")]
2238 pub limit: ::core::option::Option<AggLimit>,
2239 #[prost(bool, tag = "12")]
2240 pub has_grouping_set: bool,
2241 #[prost(message, optional, tag = "13")]
2243 pub dynamic_filter: ::core::option::Option<PhysicalExprNode>,
2244 #[prost(message, optional, tag = "14")]
2246 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
2247}
2248#[derive(Clone, PartialEq, ::prost::Message)]
2249pub struct GlobalLimitExecNode {
2250 #[prost(message, optional, boxed, tag = "1")]
2251 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
2252 #[prost(uint32, tag = "2")]
2254 pub skip: u32,
2255 #[prost(int64, tag = "3")]
2257 pub fetch: i64,
2258 #[prost(message, repeated, tag = "4")]
2260 pub required_ordering: ::prost::alloc::vec::Vec<PhysicalSortExprNode>,
2261}
2262#[derive(Clone, PartialEq, ::prost::Message)]
2263pub struct LocalLimitExecNode {
2264 #[prost(message, optional, boxed, tag = "1")]
2265 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
2266 #[prost(uint32, tag = "2")]
2267 pub fetch: u32,
2268 #[prost(message, repeated, tag = "3")]
2270 pub required_ordering: ::prost::alloc::vec::Vec<PhysicalSortExprNode>,
2271}
2272#[derive(Clone, PartialEq, ::prost::Message)]
2273pub struct SortExecNode {
2274 #[prost(message, optional, boxed, tag = "1")]
2275 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
2276 #[prost(message, repeated, tag = "2")]
2277 pub expr: ::prost::alloc::vec::Vec<PhysicalExprNode>,
2278 #[prost(int64, tag = "3")]
2280 pub fetch: i64,
2281 #[prost(bool, tag = "4")]
2282 pub preserve_partitioning: bool,
2283 #[prost(message, optional, tag = "5")]
2285 pub dynamic_filter: ::core::option::Option<PhysicalExprNode>,
2286}
2287#[derive(Clone, PartialEq, ::prost::Message)]
2288pub struct SortPreservingMergeExecNode {
2289 #[prost(message, optional, boxed, tag = "1")]
2290 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
2291 #[prost(message, repeated, tag = "2")]
2292 pub expr: ::prost::alloc::vec::Vec<PhysicalExprNode>,
2293 #[prost(int64, tag = "3")]
2295 pub fetch: i64,
2296}
2297#[derive(Clone, PartialEq, ::prost::Message)]
2298pub struct NestedLoopJoinExecNode {
2299 #[prost(message, optional, boxed, tag = "1")]
2300 pub left: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
2301 #[prost(message, optional, boxed, tag = "2")]
2302 pub right: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
2303 #[prost(enumeration = "super::datafusion_common::JoinType", tag = "3")]
2304 pub join_type: i32,
2305 #[prost(message, optional, tag = "4")]
2306 pub filter: ::core::option::Option<JoinFilter>,
2307 #[prost(uint32, repeated, tag = "5")]
2308 pub projection: ::prost::alloc::vec::Vec<u32>,
2309}
2310#[derive(Clone, PartialEq, ::prost::Message)]
2311pub struct CoalesceBatchesExecNode {
2312 #[prost(message, optional, boxed, tag = "1")]
2313 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
2314 #[prost(uint32, tag = "2")]
2315 pub target_batch_size: u32,
2316 #[prost(uint32, optional, tag = "3")]
2317 pub fetch: ::core::option::Option<u32>,
2318}
2319#[derive(Clone, PartialEq, ::prost::Message)]
2320pub struct CoalescePartitionsExecNode {
2321 #[prost(message, optional, boxed, tag = "1")]
2322 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
2323 #[prost(uint32, optional, tag = "2")]
2324 pub fetch: ::core::option::Option<u32>,
2325}
2326#[derive(Clone, PartialEq, ::prost::Message)]
2327pub struct PhysicalHashRepartition {
2328 #[prost(message, repeated, tag = "1")]
2329 pub hash_expr: ::prost::alloc::vec::Vec<PhysicalExprNode>,
2330 #[prost(uint64, tag = "2")]
2331 pub partition_count: u64,
2332}
2333#[derive(Clone, PartialEq, ::prost::Message)]
2334pub struct PhysicalRangePartitioning {
2335 #[prost(message, repeated, tag = "1")]
2336 pub sort_expr: ::prost::alloc::vec::Vec<PhysicalSortExprNode>,
2337 #[prost(message, repeated, tag = "2")]
2338 pub split_point: ::prost::alloc::vec::Vec<PhysicalRangeSplitPoint>,
2339}
2340#[derive(Clone, PartialEq, ::prost::Message)]
2341pub struct PhysicalRangeSplitPoint {
2342 #[prost(message, repeated, tag = "1")]
2343 pub value: ::prost::alloc::vec::Vec<super::datafusion_common::ScalarValue>,
2344}
2345#[derive(Clone, PartialEq, ::prost::Message)]
2346pub struct RepartitionExecNode {
2347 #[prost(message, optional, boxed, tag = "1")]
2348 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
2349 #[prost(message, optional, tag = "5")]
2355 pub partitioning: ::core::option::Option<Partitioning>,
2356 #[prost(bool, tag = "6")]
2357 pub preserve_order: bool,
2358}
2359#[derive(Clone, PartialEq, ::prost::Message)]
2360pub struct Partitioning {
2361 #[prost(oneof = "partitioning::PartitionMethod", tags = "1, 2, 3, 4")]
2362 pub partition_method: ::core::option::Option<partitioning::PartitionMethod>,
2363}
2364pub mod partitioning {
2366 #[derive(Clone, PartialEq, ::prost::Oneof)]
2367 pub enum PartitionMethod {
2368 #[prost(uint64, tag = "1")]
2369 RoundRobin(u64),
2370 #[prost(message, tag = "2")]
2371 Hash(super::PhysicalHashRepartition),
2372 #[prost(uint64, tag = "3")]
2373 Unknown(u64),
2374 #[prost(message, tag = "4")]
2375 Range(super::PhysicalRangePartitioning),
2376 }
2377}
2378#[derive(Clone, PartialEq, ::prost::Message)]
2379pub struct JoinFilter {
2380 #[prost(message, optional, tag = "1")]
2381 pub expression: ::core::option::Option<PhysicalExprNode>,
2382 #[prost(message, repeated, tag = "2")]
2383 pub column_indices: ::prost::alloc::vec::Vec<ColumnIndex>,
2384 #[prost(message, optional, tag = "3")]
2385 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
2386}
2387#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2388pub struct ColumnIndex {
2389 #[prost(uint32, tag = "1")]
2390 pub index: u32,
2391 #[prost(enumeration = "super::datafusion_common::JoinSide", tag = "2")]
2392 pub side: i32,
2393}
2394#[derive(Clone, PartialEq, ::prost::Message)]
2395pub struct PartitionedFile {
2396 #[prost(string, tag = "1")]
2397 pub path: ::prost::alloc::string::String,
2398 #[prost(uint64, tag = "2")]
2399 pub size: u64,
2400 #[prost(uint64, tag = "3")]
2401 pub last_modified_ns: u64,
2402 #[prost(message, repeated, tag = "4")]
2403 pub partition_values: ::prost::alloc::vec::Vec<
2404 super::datafusion_common::ScalarValue,
2405 >,
2406 #[prost(message, optional, tag = "5")]
2407 pub range: ::core::option::Option<FileRange>,
2408 #[prost(message, optional, tag = "6")]
2409 pub statistics: ::core::option::Option<super::datafusion_common::Statistics>,
2410 #[prost(message, optional, tag = "7")]
2411 pub arrow_schema: ::core::option::Option<super::datafusion_common::Schema>,
2412}
2413#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2414pub struct FileRange {
2415 #[prost(int64, tag = "1")]
2416 pub start: i64,
2417 #[prost(int64, tag = "2")]
2418 pub end: i64,
2419}
2420#[derive(Clone, PartialEq, ::prost::Message)]
2421pub struct PartitionStats {
2422 #[prost(int64, tag = "1")]
2423 pub num_rows: i64,
2424 #[prost(int64, tag = "2")]
2425 pub num_batches: i64,
2426 #[prost(int64, tag = "3")]
2427 pub num_bytes: i64,
2428 #[prost(message, repeated, tag = "4")]
2429 pub column_stats: ::prost::alloc::vec::Vec<super::datafusion_common::ColumnStats>,
2430}
2431#[derive(Clone, PartialEq, ::prost::Message)]
2432pub struct RecursiveQueryNode {
2433 #[prost(string, tag = "1")]
2434 pub name: ::prost::alloc::string::String,
2435 #[prost(message, optional, boxed, tag = "2")]
2436 pub static_term: ::core::option::Option<::prost::alloc::boxed::Box<LogicalPlanNode>>,
2437 #[prost(message, optional, boxed, tag = "3")]
2438 pub recursive_term: ::core::option::Option<
2439 ::prost::alloc::boxed::Box<LogicalPlanNode>,
2440 >,
2441 #[prost(bool, tag = "4")]
2442 pub is_distinct: bool,
2443}
2444#[derive(Clone, PartialEq, ::prost::Message)]
2445pub struct CteWorkTableScanNode {
2446 #[prost(string, tag = "1")]
2447 pub name: ::prost::alloc::string::String,
2448 #[prost(message, optional, tag = "2")]
2449 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
2450}
2451#[derive(Clone, PartialEq, ::prost::Message)]
2452pub struct EmptyTableScanNode {
2453 #[prost(message, optional, tag = "1")]
2454 pub table_name: ::core::option::Option<TableReference>,
2455 #[prost(message, optional, tag = "2")]
2456 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
2457 #[prost(message, optional, tag = "3")]
2458 pub projection: ::core::option::Option<ProjectionColumns>,
2459 #[prost(message, repeated, tag = "4")]
2460 pub filters: ::prost::alloc::vec::Vec<LogicalExprNode>,
2461}
2462#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2463pub struct GenerateSeriesArgsContainsNull {
2464 #[prost(enumeration = "GenerateSeriesName", tag = "1")]
2465 pub name: i32,
2466}
2467#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2468pub struct GenerateSeriesArgsInt64 {
2469 #[prost(int64, tag = "1")]
2470 pub start: i64,
2471 #[prost(int64, tag = "2")]
2472 pub end: i64,
2473 #[prost(int64, tag = "3")]
2474 pub step: i64,
2475 #[prost(bool, tag = "4")]
2476 pub include_end: bool,
2477 #[prost(enumeration = "GenerateSeriesName", tag = "5")]
2478 pub name: i32,
2479}
2480#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2481pub struct GenerateSeriesArgsTimestamp {
2482 #[prost(int64, tag = "1")]
2483 pub start: i64,
2484 #[prost(int64, tag = "2")]
2485 pub end: i64,
2486 #[prost(message, optional, tag = "3")]
2487 pub step: ::core::option::Option<
2488 super::datafusion_common::IntervalMonthDayNanoValue,
2489 >,
2490 #[prost(string, optional, tag = "4")]
2491 pub tz: ::core::option::Option<::prost::alloc::string::String>,
2492 #[prost(bool, tag = "5")]
2493 pub include_end: bool,
2494 #[prost(enumeration = "GenerateSeriesName", tag = "6")]
2495 pub name: i32,
2496}
2497#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2498pub struct GenerateSeriesArgsDate {
2499 #[prost(int64, tag = "1")]
2500 pub start: i64,
2501 #[prost(int64, tag = "2")]
2502 pub end: i64,
2503 #[prost(message, optional, tag = "3")]
2504 pub step: ::core::option::Option<
2505 super::datafusion_common::IntervalMonthDayNanoValue,
2506 >,
2507 #[prost(bool, tag = "4")]
2508 pub include_end: bool,
2509 #[prost(enumeration = "GenerateSeriesName", tag = "5")]
2510 pub name: i32,
2511}
2512#[derive(Clone, PartialEq, ::prost::Message)]
2513pub struct GenerateSeriesNode {
2514 #[prost(message, optional, tag = "1")]
2515 pub schema: ::core::option::Option<super::datafusion_common::Schema>,
2516 #[prost(uint32, tag = "2")]
2517 pub target_batch_size: u32,
2518 #[prost(oneof = "generate_series_node::Args", tags = "3, 4, 5, 6")]
2519 pub args: ::core::option::Option<generate_series_node::Args>,
2520}
2521pub mod generate_series_node {
2523 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
2524 pub enum Args {
2525 #[prost(message, tag = "3")]
2526 ContainsNull(super::GenerateSeriesArgsContainsNull),
2527 #[prost(message, tag = "4")]
2528 Int64Args(super::GenerateSeriesArgsInt64),
2529 #[prost(message, tag = "5")]
2530 TimestampArgs(super::GenerateSeriesArgsTimestamp),
2531 #[prost(message, tag = "6")]
2532 DateArgs(super::GenerateSeriesArgsDate),
2533 }
2534}
2535#[derive(Clone, PartialEq, ::prost::Message)]
2536pub struct SortMergeJoinExecNode {
2537 #[prost(message, optional, boxed, tag = "1")]
2538 pub left: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
2539 #[prost(message, optional, boxed, tag = "2")]
2540 pub right: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
2541 #[prost(message, repeated, tag = "3")]
2542 pub on: ::prost::alloc::vec::Vec<JoinOn>,
2543 #[prost(enumeration = "super::datafusion_common::JoinType", tag = "4")]
2544 pub join_type: i32,
2545 #[prost(message, optional, tag = "5")]
2546 pub filter: ::core::option::Option<JoinFilter>,
2547 #[prost(message, repeated, tag = "6")]
2548 pub sort_options: ::prost::alloc::vec::Vec<SortExprNode>,
2549 #[prost(enumeration = "super::datafusion_common::NullEquality", tag = "7")]
2550 pub null_equality: i32,
2551}
2552#[derive(Clone, PartialEq, ::prost::Message)]
2553pub struct AsyncFuncExecNode {
2554 #[prost(message, optional, boxed, tag = "1")]
2555 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
2556 #[prost(message, repeated, tag = "2")]
2557 pub async_exprs: ::prost::alloc::vec::Vec<PhysicalExprNode>,
2558 #[prost(string, repeated, tag = "3")]
2559 pub async_expr_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2560}
2561#[derive(Clone, PartialEq, ::prost::Message)]
2562pub struct BufferExecNode {
2563 #[prost(message, optional, boxed, tag = "1")]
2564 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
2565 #[prost(uint64, tag = "2")]
2566 pub capacity: u64,
2567}
2568#[derive(Clone, PartialEq, ::prost::Message)]
2569pub struct ScalarSubqueryExecNode {
2570 #[prost(message, optional, boxed, tag = "1")]
2571 pub input: ::core::option::Option<::prost::alloc::boxed::Box<PhysicalPlanNode>>,
2572 #[prost(message, repeated, tag = "2")]
2573 pub subqueries: ::prost::alloc::vec::Vec<PhysicalPlanNode>,
2574}
2575#[derive(Clone, PartialEq, ::prost::Message)]
2576pub struct PhysicalScalarSubqueryExprNode {
2577 #[prost(message, optional, tag = "1")]
2578 pub data_type: ::core::option::Option<super::datafusion_common::ArrowType>,
2579 #[prost(bool, tag = "2")]
2580 pub nullable: bool,
2581 #[prost(uint32, tag = "3")]
2582 pub index: u32,
2583}
2584#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2588#[repr(i32)]
2589pub enum FileFormatKind {
2590 Unspecified = 0,
2591 Csv = 1,
2592 Json = 2,
2593 Parquet = 3,
2594 Arrow = 4,
2595 Avro = 5,
2596}
2597impl FileFormatKind {
2598 pub fn as_str_name(&self) -> &'static str {
2603 match self {
2604 Self::Unspecified => "FILE_FORMAT_KIND_UNSPECIFIED",
2605 Self::Csv => "FILE_FORMAT_KIND_CSV",
2606 Self::Json => "FILE_FORMAT_KIND_JSON",
2607 Self::Parquet => "FILE_FORMAT_KIND_PARQUET",
2608 Self::Arrow => "FILE_FORMAT_KIND_ARROW",
2609 Self::Avro => "FILE_FORMAT_KIND_AVRO",
2610 }
2611 }
2612 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2614 match value {
2615 "FILE_FORMAT_KIND_UNSPECIFIED" => Some(Self::Unspecified),
2616 "FILE_FORMAT_KIND_CSV" => Some(Self::Csv),
2617 "FILE_FORMAT_KIND_JSON" => Some(Self::Json),
2618 "FILE_FORMAT_KIND_PARQUET" => Some(Self::Parquet),
2619 "FILE_FORMAT_KIND_ARROW" => Some(Self::Arrow),
2620 "FILE_FORMAT_KIND_AVRO" => Some(Self::Avro),
2621 _ => None,
2622 }
2623 }
2624}
2625#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2626#[repr(i32)]
2627pub enum WindowFrameUnits {
2628 Rows = 0,
2629 Range = 1,
2630 Groups = 2,
2631}
2632impl WindowFrameUnits {
2633 pub fn as_str_name(&self) -> &'static str {
2638 match self {
2639 Self::Rows => "ROWS",
2640 Self::Range => "RANGE",
2641 Self::Groups => "GROUPS",
2642 }
2643 }
2644 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2646 match value {
2647 "ROWS" => Some(Self::Rows),
2648 "RANGE" => Some(Self::Range),
2649 "GROUPS" => Some(Self::Groups),
2650 _ => None,
2651 }
2652 }
2653}
2654#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2655#[repr(i32)]
2656pub enum WindowFrameBoundType {
2657 CurrentRow = 0,
2658 Preceding = 1,
2659 Following = 2,
2660}
2661impl WindowFrameBoundType {
2662 pub fn as_str_name(&self) -> &'static str {
2667 match self {
2668 Self::CurrentRow => "CURRENT_ROW",
2669 Self::Preceding => "PRECEDING",
2670 Self::Following => "FOLLOWING",
2671 }
2672 }
2673 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2675 match value {
2676 "CURRENT_ROW" => Some(Self::CurrentRow),
2677 "PRECEDING" => Some(Self::Preceding),
2678 "FOLLOWING" => Some(Self::Following),
2679 _ => None,
2680 }
2681 }
2682}
2683#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2684#[repr(i32)]
2685pub enum NullTreatment {
2686 RespectNulls = 0,
2687 IgnoreNulls = 1,
2688}
2689impl NullTreatment {
2690 pub fn as_str_name(&self) -> &'static str {
2695 match self {
2696 Self::RespectNulls => "RESPECT_NULLS",
2697 Self::IgnoreNulls => "IGNORE_NULLS",
2698 }
2699 }
2700 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2702 match value {
2703 "RESPECT_NULLS" => Some(Self::RespectNulls),
2704 "IGNORE_NULLS" => Some(Self::IgnoreNulls),
2705 _ => None,
2706 }
2707 }
2708}
2709#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2710#[repr(i32)]
2711pub enum DateUnit {
2712 Day = 0,
2713 DateMillisecond = 1,
2714}
2715impl DateUnit {
2716 pub fn as_str_name(&self) -> &'static str {
2721 match self {
2722 Self::Day => "Day",
2723 Self::DateMillisecond => "DateMillisecond",
2724 }
2725 }
2726 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2728 match value {
2729 "Day" => Some(Self::Day),
2730 "DateMillisecond" => Some(Self::DateMillisecond),
2731 _ => None,
2732 }
2733 }
2734}
2735#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2737#[repr(i32)]
2738pub enum FileOutputMode {
2739 Automatic = 0,
2741 SingleFile = 1,
2743 Directory = 2,
2745}
2746impl FileOutputMode {
2747 pub fn as_str_name(&self) -> &'static str {
2752 match self {
2753 Self::Automatic => "FILE_OUTPUT_MODE_AUTOMATIC",
2754 Self::SingleFile => "FILE_OUTPUT_MODE_SINGLE_FILE",
2755 Self::Directory => "FILE_OUTPUT_MODE_DIRECTORY",
2756 }
2757 }
2758 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2760 match value {
2761 "FILE_OUTPUT_MODE_AUTOMATIC" => Some(Self::Automatic),
2762 "FILE_OUTPUT_MODE_SINGLE_FILE" => Some(Self::SingleFile),
2763 "FILE_OUTPUT_MODE_DIRECTORY" => Some(Self::Directory),
2764 _ => None,
2765 }
2766 }
2767}
2768#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2769#[repr(i32)]
2770pub enum InsertOp {
2771 Append = 0,
2772 Overwrite = 1,
2773 Replace = 2,
2774}
2775impl InsertOp {
2776 pub fn as_str_name(&self) -> &'static str {
2781 match self {
2782 Self::Append => "Append",
2783 Self::Overwrite => "Overwrite",
2784 Self::Replace => "Replace",
2785 }
2786 }
2787 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2789 match value {
2790 "Append" => Some(Self::Append),
2791 "Overwrite" => Some(Self::Overwrite),
2792 "Replace" => Some(Self::Replace),
2793 _ => None,
2794 }
2795 }
2796}
2797#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2798#[repr(i32)]
2799pub enum PartitionMode {
2800 CollectLeft = 0,
2801 Partitioned = 1,
2802 Auto = 2,
2803}
2804impl PartitionMode {
2805 pub fn as_str_name(&self) -> &'static str {
2810 match self {
2811 Self::CollectLeft => "COLLECT_LEFT",
2812 Self::Partitioned => "PARTITIONED",
2813 Self::Auto => "AUTO",
2814 }
2815 }
2816 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2818 match value {
2819 "COLLECT_LEFT" => Some(Self::CollectLeft),
2820 "PARTITIONED" => Some(Self::Partitioned),
2821 "AUTO" => Some(Self::Auto),
2822 _ => None,
2823 }
2824 }
2825}
2826#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2827#[repr(i32)]
2828pub enum StreamPartitionMode {
2829 SinglePartition = 0,
2830 PartitionedExec = 1,
2831}
2832impl StreamPartitionMode {
2833 pub fn as_str_name(&self) -> &'static str {
2838 match self {
2839 Self::SinglePartition => "SINGLE_PARTITION",
2840 Self::PartitionedExec => "PARTITIONED_EXEC",
2841 }
2842 }
2843 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2845 match value {
2846 "SINGLE_PARTITION" => Some(Self::SinglePartition),
2847 "PARTITIONED_EXEC" => Some(Self::PartitionedExec),
2848 _ => None,
2849 }
2850 }
2851}
2852#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2853#[repr(i32)]
2854pub enum AggregateMode {
2855 Partial = 0,
2856 Final = 1,
2857 FinalPartitioned = 2,
2858 Single = 3,
2859 SinglePartitioned = 4,
2860 PartialReduce = 5,
2861}
2862impl AggregateMode {
2863 pub fn as_str_name(&self) -> &'static str {
2868 match self {
2869 Self::Partial => "PARTIAL",
2870 Self::Final => "FINAL",
2871 Self::FinalPartitioned => "FINAL_PARTITIONED",
2872 Self::Single => "SINGLE",
2873 Self::SinglePartitioned => "SINGLE_PARTITIONED",
2874 Self::PartialReduce => "PARTIAL_REDUCE",
2875 }
2876 }
2877 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2879 match value {
2880 "PARTIAL" => Some(Self::Partial),
2881 "FINAL" => Some(Self::Final),
2882 "FINAL_PARTITIONED" => Some(Self::FinalPartitioned),
2883 "SINGLE" => Some(Self::Single),
2884 "SINGLE_PARTITIONED" => Some(Self::SinglePartitioned),
2885 "PARTIAL_REDUCE" => Some(Self::PartialReduce),
2886 _ => None,
2887 }
2888 }
2889}
2890#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2891#[repr(i32)]
2892pub enum GenerateSeriesName {
2893 GsGenerateSeries = 0,
2894 GsRange = 1,
2895}
2896impl GenerateSeriesName {
2897 pub fn as_str_name(&self) -> &'static str {
2902 match self {
2903 Self::GsGenerateSeries => "GS_GENERATE_SERIES",
2904 Self::GsRange => "GS_RANGE",
2905 }
2906 }
2907 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2909 match value {
2910 "GS_GENERATE_SERIES" => Some(Self::GsGenerateSeries),
2911 "GS_RANGE" => Some(Self::GsRange),
2912 _ => None,
2913 }
2914 }
2915}