1#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3pub struct ColumnRelation {
4 #[prost(string, tag = "1")]
5 pub relation: ::prost::alloc::string::String,
6}
7#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8pub struct Column {
9 #[prost(string, tag = "1")]
10 pub name: ::prost::alloc::string::String,
11 #[prost(message, optional, tag = "2")]
12 pub relation: ::core::option::Option<ColumnRelation>,
13}
14#[derive(Clone, PartialEq, ::prost::Message)]
15pub struct DfField {
16 #[prost(message, optional, tag = "1")]
17 pub field: ::core::option::Option<Field>,
18 #[prost(message, optional, tag = "2")]
19 pub qualifier: ::core::option::Option<ColumnRelation>,
20}
21#[derive(Clone, PartialEq, ::prost::Message)]
22pub struct DfSchema {
23 #[prost(message, repeated, tag = "1")]
24 pub columns: ::prost::alloc::vec::Vec<DfField>,
25 #[prost(map = "string, string", tag = "2")]
26 pub metadata: ::std::collections::HashMap<
27 ::prost::alloc::string::String,
28 ::prost::alloc::string::String,
29 >,
30}
31#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
32pub struct CsvFormat {
33 #[prost(message, optional, tag = "5")]
34 pub options: ::core::option::Option<CsvOptions>,
35}
36#[derive(Clone, PartialEq, ::prost::Message)]
37pub struct ParquetFormat {
38 #[prost(message, optional, tag = "2")]
39 pub options: ::core::option::Option<TableParquetOptions>,
40}
41#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
42pub struct AvroFormat {}
43#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
44pub struct NdJsonFormat {
45 #[prost(message, optional, tag = "1")]
46 pub options: ::core::option::Option<JsonOptions>,
47}
48#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
49pub struct ArrowFormat {}
50#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
51pub struct PrimaryKeyConstraint {
52 #[prost(uint64, repeated, tag = "1")]
53 pub indices: ::prost::alloc::vec::Vec<u64>,
54}
55#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
56pub struct UniqueConstraint {
57 #[prost(uint64, repeated, tag = "1")]
58 pub indices: ::prost::alloc::vec::Vec<u64>,
59}
60#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
61pub struct Constraint {
62 #[prost(oneof = "constraint::ConstraintMode", tags = "1, 2")]
63 pub constraint_mode: ::core::option::Option<constraint::ConstraintMode>,
64}
65pub mod constraint {
67 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
68 pub enum ConstraintMode {
69 #[prost(message, tag = "1")]
70 PrimaryKey(super::PrimaryKeyConstraint),
71 #[prost(message, tag = "2")]
72 Unique(super::UniqueConstraint),
73 }
74}
75#[derive(Clone, PartialEq, ::prost::Message)]
76pub struct Constraints {
77 #[prost(message, repeated, tag = "1")]
78 pub constraints: ::prost::alloc::vec::Vec<Constraint>,
79}
80#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
81pub struct AvroOptions {}
82#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
83pub struct ArrowOptions {}
84#[derive(Clone, PartialEq, ::prost::Message)]
85pub struct Schema {
86 #[prost(message, repeated, tag = "1")]
87 pub columns: ::prost::alloc::vec::Vec<Field>,
88 #[prost(map = "string, string", tag = "2")]
89 pub metadata: ::std::collections::HashMap<
90 ::prost::alloc::string::String,
91 ::prost::alloc::string::String,
92 >,
93}
94#[derive(Clone, PartialEq, ::prost::Message)]
95pub struct Field {
96 #[prost(string, tag = "1")]
98 pub name: ::prost::alloc::string::String,
99 #[prost(message, optional, boxed, tag = "2")]
100 pub arrow_type: ::core::option::Option<::prost::alloc::boxed::Box<ArrowType>>,
101 #[prost(bool, tag = "3")]
102 pub nullable: bool,
103 #[prost(message, repeated, tag = "4")]
105 pub children: ::prost::alloc::vec::Vec<Field>,
106 #[prost(map = "string, string", tag = "5")]
107 pub metadata: ::std::collections::HashMap<
108 ::prost::alloc::string::String,
109 ::prost::alloc::string::String,
110 >,
111}
112#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
113pub struct Timestamp {
114 #[prost(enumeration = "TimeUnit", tag = "1")]
115 pub time_unit: i32,
116 #[prost(string, tag = "2")]
117 pub timezone: ::prost::alloc::string::String,
118}
119#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
120pub struct Decimal32Type {
121 #[prost(uint32, tag = "3")]
122 pub precision: u32,
123 #[prost(int32, tag = "4")]
124 pub scale: i32,
125}
126#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
127pub struct Decimal64Type {
128 #[prost(uint32, tag = "3")]
129 pub precision: u32,
130 #[prost(int32, tag = "4")]
131 pub scale: i32,
132}
133#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
134pub struct Decimal128Type {
135 #[prost(uint32, tag = "3")]
136 pub precision: u32,
137 #[prost(int32, tag = "4")]
138 pub scale: i32,
139}
140#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
141pub struct Decimal256Type {
142 #[prost(uint32, tag = "3")]
143 pub precision: u32,
144 #[prost(int32, tag = "4")]
145 pub scale: i32,
146}
147#[derive(Clone, PartialEq, ::prost::Message)]
148pub struct List {
149 #[prost(message, optional, boxed, tag = "1")]
150 pub field_type: ::core::option::Option<::prost::alloc::boxed::Box<Field>>,
151}
152#[derive(Clone, PartialEq, ::prost::Message)]
153pub struct FixedSizeList {
154 #[prost(message, optional, boxed, tag = "1")]
155 pub field_type: ::core::option::Option<::prost::alloc::boxed::Box<Field>>,
156 #[prost(int32, tag = "2")]
157 pub list_size: i32,
158}
159#[derive(Clone, PartialEq, ::prost::Message)]
160pub struct Dictionary {
161 #[prost(message, optional, boxed, tag = "1")]
162 pub key: ::core::option::Option<::prost::alloc::boxed::Box<ArrowType>>,
163 #[prost(message, optional, boxed, tag = "2")]
164 pub value: ::core::option::Option<::prost::alloc::boxed::Box<ArrowType>>,
165}
166#[derive(Clone, PartialEq, ::prost::Message)]
167pub struct Struct {
168 #[prost(message, repeated, tag = "1")]
169 pub sub_field_types: ::prost::alloc::vec::Vec<Field>,
170}
171#[derive(Clone, PartialEq, ::prost::Message)]
172pub struct Map {
173 #[prost(message, optional, boxed, tag = "1")]
174 pub field_type: ::core::option::Option<::prost::alloc::boxed::Box<Field>>,
175 #[prost(bool, tag = "2")]
176 pub keys_sorted: bool,
177}
178#[derive(Clone, PartialEq, ::prost::Message)]
179pub struct Union {
180 #[prost(message, repeated, tag = "1")]
181 pub union_types: ::prost::alloc::vec::Vec<Field>,
182 #[prost(enumeration = "UnionMode", tag = "2")]
183 pub union_mode: i32,
184 #[prost(int32, repeated, tag = "3")]
185 pub type_ids: ::prost::alloc::vec::Vec<i32>,
186}
187#[derive(Clone, PartialEq, ::prost::Message)]
189pub struct ScalarNestedValue {
190 #[prost(bytes = "vec", tag = "1")]
191 pub ipc_message: ::prost::alloc::vec::Vec<u8>,
192 #[prost(bytes = "vec", tag = "2")]
193 pub arrow_data: ::prost::alloc::vec::Vec<u8>,
194 #[prost(message, optional, tag = "3")]
195 pub schema: ::core::option::Option<Schema>,
196 #[prost(message, repeated, tag = "4")]
197 pub dictionaries: ::prost::alloc::vec::Vec<scalar_nested_value::Dictionary>,
198}
199pub mod scalar_nested_value {
201 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
202 pub struct Dictionary {
203 #[prost(bytes = "vec", tag = "1")]
204 pub ipc_message: ::prost::alloc::vec::Vec<u8>,
205 #[prost(bytes = "vec", tag = "2")]
206 pub arrow_data: ::prost::alloc::vec::Vec<u8>,
207 }
208}
209#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
210pub struct ScalarTime32Value {
211 #[prost(oneof = "scalar_time32_value::Value", tags = "1, 2")]
212 pub value: ::core::option::Option<scalar_time32_value::Value>,
213}
214pub mod scalar_time32_value {
216 #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
217 pub enum Value {
218 #[prost(int32, tag = "1")]
219 Time32SecondValue(i32),
220 #[prost(int32, tag = "2")]
221 Time32MillisecondValue(i32),
222 }
223}
224#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
225pub struct ScalarTime64Value {
226 #[prost(oneof = "scalar_time64_value::Value", tags = "1, 2")]
227 pub value: ::core::option::Option<scalar_time64_value::Value>,
228}
229pub mod scalar_time64_value {
231 #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
232 pub enum Value {
233 #[prost(int64, tag = "1")]
234 Time64MicrosecondValue(i64),
235 #[prost(int64, tag = "2")]
236 Time64NanosecondValue(i64),
237 }
238}
239#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
240pub struct ScalarTimestampValue {
241 #[prost(string, tag = "5")]
242 pub timezone: ::prost::alloc::string::String,
243 #[prost(oneof = "scalar_timestamp_value::Value", tags = "1, 2, 3, 4")]
244 pub value: ::core::option::Option<scalar_timestamp_value::Value>,
245}
246pub mod scalar_timestamp_value {
248 #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
249 pub enum Value {
250 #[prost(int64, tag = "1")]
251 TimeMicrosecondValue(i64),
252 #[prost(int64, tag = "2")]
253 TimeNanosecondValue(i64),
254 #[prost(int64, tag = "3")]
255 TimeSecondValue(i64),
256 #[prost(int64, tag = "4")]
257 TimeMillisecondValue(i64),
258 }
259}
260#[derive(Clone, PartialEq, ::prost::Message)]
261pub struct ScalarDictionaryValue {
262 #[prost(message, optional, tag = "1")]
263 pub index_type: ::core::option::Option<ArrowType>,
264 #[prost(message, optional, boxed, tag = "2")]
265 pub value: ::core::option::Option<::prost::alloc::boxed::Box<ScalarValue>>,
266}
267#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
268pub struct IntervalDayTimeValue {
269 #[prost(int32, tag = "1")]
270 pub days: i32,
271 #[prost(int32, tag = "2")]
272 pub milliseconds: i32,
273}
274#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
275pub struct IntervalMonthDayNanoValue {
276 #[prost(int32, tag = "1")]
277 pub months: i32,
278 #[prost(int32, tag = "2")]
279 pub days: i32,
280 #[prost(int64, tag = "3")]
281 pub nanos: i64,
282}
283#[derive(Clone, PartialEq, ::prost::Message)]
284pub struct UnionField {
285 #[prost(int32, tag = "1")]
286 pub field_id: i32,
287 #[prost(message, optional, tag = "2")]
288 pub field: ::core::option::Option<Field>,
289}
290#[derive(Clone, PartialEq, ::prost::Message)]
291pub struct UnionValue {
292 #[prost(int32, tag = "1")]
295 pub value_id: i32,
296 #[prost(message, optional, boxed, tag = "2")]
297 pub value: ::core::option::Option<::prost::alloc::boxed::Box<ScalarValue>>,
298 #[prost(message, repeated, tag = "3")]
299 pub fields: ::prost::alloc::vec::Vec<UnionField>,
300 #[prost(enumeration = "UnionMode", tag = "4")]
301 pub mode: i32,
302}
303#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
304pub struct ScalarFixedSizeBinary {
305 #[prost(bytes = "vec", tag = "1")]
306 pub values: ::prost::alloc::vec::Vec<u8>,
307 #[prost(int32, tag = "2")]
308 pub length: i32,
309}
310#[derive(Clone, PartialEq, ::prost::Message)]
311pub struct ScalarValue {
312 #[prost(
313 oneof = "scalar_value::Value",
314 tags = "33, 1, 2, 3, 23, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 32, 41, 43, 44, 20, 39, 21, 24, 35, 36, 37, 38, 26, 27, 28, 29, 22, 30, 25, 31, 34, 42"
315 )]
316 pub value: ::core::option::Option<scalar_value::Value>,
317}
318pub mod scalar_value {
320 #[derive(Clone, PartialEq, ::prost::Oneof)]
321 pub enum Value {
322 #[prost(message, tag = "33")]
325 NullValue(super::ArrowType),
326 #[prost(bool, tag = "1")]
327 BoolValue(bool),
328 #[prost(string, tag = "2")]
329 Utf8Value(::prost::alloc::string::String),
330 #[prost(string, tag = "3")]
331 LargeUtf8Value(::prost::alloc::string::String),
332 #[prost(string, tag = "23")]
333 Utf8ViewValue(::prost::alloc::string::String),
334 #[prost(int32, tag = "4")]
335 Int8Value(i32),
336 #[prost(int32, tag = "5")]
337 Int16Value(i32),
338 #[prost(int32, tag = "6")]
339 Int32Value(i32),
340 #[prost(int64, tag = "7")]
341 Int64Value(i64),
342 #[prost(uint32, tag = "8")]
343 Uint8Value(u32),
344 #[prost(uint32, tag = "9")]
345 Uint16Value(u32),
346 #[prost(uint32, tag = "10")]
347 Uint32Value(u32),
348 #[prost(uint64, tag = "11")]
349 Uint64Value(u64),
350 #[prost(float, tag = "12")]
351 Float32Value(f32),
352 #[prost(double, tag = "13")]
353 Float64Value(f64),
354 #[prost(int32, tag = "14")]
356 Date32Value(i32),
357 #[prost(message, tag = "15")]
358 Time32Value(super::ScalarTime32Value),
359 #[prost(message, tag = "16")]
360 LargeListValue(super::ScalarNestedValue),
361 #[prost(message, tag = "17")]
362 ListValue(super::ScalarNestedValue),
363 #[prost(message, tag = "18")]
364 FixedSizeListValue(super::ScalarNestedValue),
365 #[prost(message, tag = "32")]
366 StructValue(super::ScalarNestedValue),
367 #[prost(message, tag = "41")]
368 MapValue(super::ScalarNestedValue),
369 #[prost(message, tag = "43")]
370 Decimal32Value(super::Decimal32),
371 #[prost(message, tag = "44")]
372 Decimal64Value(super::Decimal64),
373 #[prost(message, tag = "20")]
374 Decimal128Value(super::Decimal128),
375 #[prost(message, tag = "39")]
376 Decimal256Value(super::Decimal256),
377 #[prost(int64, tag = "21")]
378 Date64Value(i64),
379 #[prost(int32, tag = "24")]
380 IntervalYearmonthValue(i32),
381 #[prost(int64, tag = "35")]
382 DurationSecondValue(i64),
383 #[prost(int64, tag = "36")]
384 DurationMillisecondValue(i64),
385 #[prost(int64, tag = "37")]
386 DurationMicrosecondValue(i64),
387 #[prost(int64, tag = "38")]
388 DurationNanosecondValue(i64),
389 #[prost(message, tag = "26")]
390 TimestampValue(super::ScalarTimestampValue),
391 #[prost(message, tag = "27")]
392 DictionaryValue(::prost::alloc::boxed::Box<super::ScalarDictionaryValue>),
393 #[prost(bytes, tag = "28")]
394 BinaryValue(::prost::alloc::vec::Vec<u8>),
395 #[prost(bytes, tag = "29")]
396 LargeBinaryValue(::prost::alloc::vec::Vec<u8>),
397 #[prost(bytes, tag = "22")]
398 BinaryViewValue(::prost::alloc::vec::Vec<u8>),
399 #[prost(message, tag = "30")]
400 Time64Value(super::ScalarTime64Value),
401 #[prost(message, tag = "25")]
402 IntervalDaytimeValue(super::IntervalDayTimeValue),
403 #[prost(message, tag = "31")]
404 IntervalMonthDayNano(super::IntervalMonthDayNanoValue),
405 #[prost(message, tag = "34")]
406 FixedSizeBinaryValue(super::ScalarFixedSizeBinary),
407 #[prost(message, tag = "42")]
408 UnionValue(::prost::alloc::boxed::Box<super::UnionValue>),
409 }
410}
411#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
412pub struct Decimal32 {
413 #[prost(bytes = "vec", tag = "1")]
414 pub value: ::prost::alloc::vec::Vec<u8>,
415 #[prost(int64, tag = "2")]
416 pub p: i64,
417 #[prost(int64, tag = "3")]
418 pub s: i64,
419}
420#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
421pub struct Decimal64 {
422 #[prost(bytes = "vec", tag = "1")]
423 pub value: ::prost::alloc::vec::Vec<u8>,
424 #[prost(int64, tag = "2")]
425 pub p: i64,
426 #[prost(int64, tag = "3")]
427 pub s: i64,
428}
429#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
430pub struct Decimal128 {
431 #[prost(bytes = "vec", tag = "1")]
432 pub value: ::prost::alloc::vec::Vec<u8>,
433 #[prost(int64, tag = "2")]
434 pub p: i64,
435 #[prost(int64, tag = "3")]
436 pub s: i64,
437}
438#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
439pub struct Decimal256 {
440 #[prost(bytes = "vec", tag = "1")]
441 pub value: ::prost::alloc::vec::Vec<u8>,
442 #[prost(int64, tag = "2")]
443 pub p: i64,
444 #[prost(int64, tag = "3")]
445 pub s: i64,
446}
447#[derive(Clone, PartialEq, ::prost::Message)]
449pub struct ArrowType {
450 #[prost(
451 oneof = "arrow_type::ArrowTypeEnum",
452 tags = "1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 35, 32, 15, 34, 16, 31, 17, 18, 19, 20, 21, 22, 23, 40, 41, 24, 36, 25, 26, 27, 28, 29, 30, 33"
453 )]
454 pub arrow_type_enum: ::core::option::Option<arrow_type::ArrowTypeEnum>,
455}
456pub mod arrow_type {
458 #[derive(Clone, PartialEq, ::prost::Oneof)]
459 pub enum ArrowTypeEnum {
460 #[prost(message, tag = "1")]
462 None(super::EmptyMessage),
463 #[prost(message, tag = "2")]
465 Bool(super::EmptyMessage),
466 #[prost(message, tag = "3")]
468 Uint8(super::EmptyMessage),
469 #[prost(message, tag = "4")]
471 Int8(super::EmptyMessage),
472 #[prost(message, tag = "5")]
474 Uint16(super::EmptyMessage),
475 #[prost(message, tag = "6")]
476 Int16(super::EmptyMessage),
477 #[prost(message, tag = "7")]
478 Uint32(super::EmptyMessage),
479 #[prost(message, tag = "8")]
480 Int32(super::EmptyMessage),
481 #[prost(message, tag = "9")]
482 Uint64(super::EmptyMessage),
483 #[prost(message, tag = "10")]
484 Int64(super::EmptyMessage),
485 #[prost(message, tag = "11")]
486 Float16(super::EmptyMessage),
487 #[prost(message, tag = "12")]
488 Float32(super::EmptyMessage),
489 #[prost(message, tag = "13")]
490 Float64(super::EmptyMessage),
491 #[prost(message, tag = "14")]
492 Utf8(super::EmptyMessage),
493 #[prost(message, tag = "35")]
494 Utf8View(super::EmptyMessage),
495 #[prost(message, tag = "32")]
496 LargeUtf8(super::EmptyMessage),
497 #[prost(message, tag = "15")]
498 Binary(super::EmptyMessage),
499 #[prost(message, tag = "34")]
500 BinaryView(super::EmptyMessage),
501 #[prost(int32, tag = "16")]
502 FixedSizeBinary(i32),
503 #[prost(message, tag = "31")]
504 LargeBinary(super::EmptyMessage),
505 #[prost(message, tag = "17")]
506 Date32(super::EmptyMessage),
507 #[prost(message, tag = "18")]
508 Date64(super::EmptyMessage),
509 #[prost(enumeration = "super::TimeUnit", tag = "19")]
510 Duration(i32),
511 #[prost(message, tag = "20")]
512 Timestamp(super::Timestamp),
513 #[prost(enumeration = "super::TimeUnit", tag = "21")]
514 Time32(i32),
515 #[prost(enumeration = "super::TimeUnit", tag = "22")]
516 Time64(i32),
517 #[prost(enumeration = "super::IntervalUnit", tag = "23")]
518 Interval(i32),
519 #[prost(message, tag = "40")]
520 Decimal32(super::Decimal32Type),
521 #[prost(message, tag = "41")]
522 Decimal64(super::Decimal64Type),
523 #[prost(message, tag = "24")]
524 Decimal128(super::Decimal128Type),
525 #[prost(message, tag = "36")]
526 Decimal256(super::Decimal256Type),
527 #[prost(message, tag = "25")]
528 List(::prost::alloc::boxed::Box<super::List>),
529 #[prost(message, tag = "26")]
530 LargeList(::prost::alloc::boxed::Box<super::List>),
531 #[prost(message, tag = "27")]
532 FixedSizeList(::prost::alloc::boxed::Box<super::FixedSizeList>),
533 #[prost(message, tag = "28")]
534 Struct(super::Struct),
535 #[prost(message, tag = "29")]
536 Union(super::Union),
537 #[prost(message, tag = "30")]
538 Dictionary(::prost::alloc::boxed::Box<super::Dictionary>),
539 #[prost(message, tag = "33")]
540 Map(::prost::alloc::boxed::Box<super::Map>),
541 }
542}
543#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
553pub struct EmptyMessage {}
554#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
555pub struct JsonWriterOptions {
556 #[prost(enumeration = "CompressionTypeVariant", tag = "1")]
557 pub compression: i32,
558}
559#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
560pub struct CsvWriterOptions {
561 #[prost(enumeration = "CompressionTypeVariant", tag = "1")]
563 pub compression: i32,
564 #[prost(string, tag = "2")]
566 pub delimiter: ::prost::alloc::string::String,
567 #[prost(bool, tag = "3")]
569 pub has_header: bool,
570 #[prost(string, tag = "4")]
572 pub date_format: ::prost::alloc::string::String,
573 #[prost(string, tag = "5")]
575 pub datetime_format: ::prost::alloc::string::String,
576 #[prost(string, tag = "6")]
578 pub timestamp_format: ::prost::alloc::string::String,
579 #[prost(string, tag = "7")]
581 pub time_format: ::prost::alloc::string::String,
582 #[prost(string, tag = "8")]
584 pub null_value: ::prost::alloc::string::String,
585 #[prost(string, tag = "9")]
587 pub quote: ::prost::alloc::string::String,
588 #[prost(string, tag = "10")]
590 pub escape: ::prost::alloc::string::String,
591 #[prost(bool, tag = "11")]
593 pub double_quote: bool,
594}
595#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
597pub struct CsvOptions {
598 #[prost(bytes = "vec", tag = "1")]
600 pub has_header: ::prost::alloc::vec::Vec<u8>,
601 #[prost(bytes = "vec", tag = "2")]
603 pub delimiter: ::prost::alloc::vec::Vec<u8>,
604 #[prost(bytes = "vec", tag = "3")]
606 pub quote: ::prost::alloc::vec::Vec<u8>,
607 #[prost(bytes = "vec", tag = "4")]
609 pub escape: ::prost::alloc::vec::Vec<u8>,
610 #[prost(enumeration = "CompressionTypeVariant", tag = "5")]
612 pub compression: i32,
613 #[prost(uint64, optional, tag = "6")]
615 pub schema_infer_max_rec: ::core::option::Option<u64>,
616 #[prost(string, tag = "7")]
618 pub date_format: ::prost::alloc::string::String,
619 #[prost(string, tag = "8")]
621 pub datetime_format: ::prost::alloc::string::String,
622 #[prost(string, tag = "9")]
624 pub timestamp_format: ::prost::alloc::string::String,
625 #[prost(string, tag = "10")]
627 pub timestamp_tz_format: ::prost::alloc::string::String,
628 #[prost(string, tag = "11")]
630 pub time_format: ::prost::alloc::string::String,
631 #[prost(string, tag = "12")]
633 pub null_value: ::prost::alloc::string::String,
634 #[prost(string, tag = "13")]
636 pub null_regex: ::prost::alloc::string::String,
637 #[prost(bytes = "vec", tag = "14")]
639 pub comment: ::prost::alloc::vec::Vec<u8>,
640 #[prost(bytes = "vec", tag = "15")]
642 pub double_quote: ::prost::alloc::vec::Vec<u8>,
643 #[prost(bytes = "vec", tag = "16")]
645 pub newlines_in_values: ::prost::alloc::vec::Vec<u8>,
646 #[prost(bytes = "vec", tag = "17")]
648 pub terminator: ::prost::alloc::vec::Vec<u8>,
649 #[prost(bytes = "vec", tag = "18")]
651 pub truncated_rows: ::prost::alloc::vec::Vec<u8>,
652 #[prost(uint32, optional, tag = "19")]
654 pub compression_level: ::core::option::Option<u32>,
655}
656#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
658pub struct JsonOptions {
659 #[prost(enumeration = "CompressionTypeVariant", tag = "1")]
661 pub compression: i32,
662 #[prost(uint64, optional, tag = "2")]
664 pub schema_infer_max_rec: ::core::option::Option<u64>,
665 #[prost(uint32, optional, tag = "3")]
667 pub compression_level: ::core::option::Option<u32>,
668}
669#[derive(Clone, PartialEq, ::prost::Message)]
670pub struct TableParquetOptions {
671 #[prost(message, optional, tag = "1")]
672 pub global: ::core::option::Option<ParquetOptions>,
673 #[prost(message, repeated, tag = "2")]
674 pub column_specific_options: ::prost::alloc::vec::Vec<ParquetColumnSpecificOptions>,
675 #[prost(map = "string, string", tag = "3")]
676 pub key_value_metadata: ::std::collections::HashMap<
677 ::prost::alloc::string::String,
678 ::prost::alloc::string::String,
679 >,
680}
681#[derive(Clone, PartialEq, ::prost::Message)]
682pub struct ParquetColumnSpecificOptions {
683 #[prost(string, tag = "1")]
684 pub column_name: ::prost::alloc::string::String,
685 #[prost(message, optional, tag = "2")]
686 pub options: ::core::option::Option<ParquetColumnOptions>,
687}
688#[derive(Clone, PartialEq, ::prost::Message)]
689pub struct ParquetColumnOptions {
690 #[prost(oneof = "parquet_column_options::BloomFilterEnabledOpt", tags = "1")]
691 pub bloom_filter_enabled_opt: ::core::option::Option<
692 parquet_column_options::BloomFilterEnabledOpt,
693 >,
694 #[prost(oneof = "parquet_column_options::EncodingOpt", tags = "2")]
695 pub encoding_opt: ::core::option::Option<parquet_column_options::EncodingOpt>,
696 #[prost(oneof = "parquet_column_options::DictionaryEnabledOpt", tags = "3")]
697 pub dictionary_enabled_opt: ::core::option::Option<
698 parquet_column_options::DictionaryEnabledOpt,
699 >,
700 #[prost(oneof = "parquet_column_options::CompressionOpt", tags = "4")]
701 pub compression_opt: ::core::option::Option<parquet_column_options::CompressionOpt>,
702 #[prost(oneof = "parquet_column_options::StatisticsEnabledOpt", tags = "5")]
703 pub statistics_enabled_opt: ::core::option::Option<
704 parquet_column_options::StatisticsEnabledOpt,
705 >,
706 #[prost(oneof = "parquet_column_options::BloomFilterFppOpt", tags = "6")]
707 pub bloom_filter_fpp_opt: ::core::option::Option<
708 parquet_column_options::BloomFilterFppOpt,
709 >,
710 #[prost(oneof = "parquet_column_options::BloomFilterNdvOpt", tags = "7")]
711 pub bloom_filter_ndv_opt: ::core::option::Option<
712 parquet_column_options::BloomFilterNdvOpt,
713 >,
714}
715pub mod parquet_column_options {
717 #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
718 pub enum BloomFilterEnabledOpt {
719 #[prost(bool, tag = "1")]
720 BloomFilterEnabled(bool),
721 }
722 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
723 pub enum EncodingOpt {
724 #[prost(string, tag = "2")]
725 Encoding(::prost::alloc::string::String),
726 }
727 #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
728 pub enum DictionaryEnabledOpt {
729 #[prost(bool, tag = "3")]
730 DictionaryEnabled(bool),
731 }
732 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
733 pub enum CompressionOpt {
734 #[prost(string, tag = "4")]
735 Compression(::prost::alloc::string::String),
736 }
737 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
738 pub enum StatisticsEnabledOpt {
739 #[prost(string, tag = "5")]
740 StatisticsEnabled(::prost::alloc::string::String),
741 }
742 #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
743 pub enum BloomFilterFppOpt {
744 #[prost(double, tag = "6")]
745 BloomFilterFpp(f64),
746 }
747 #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
748 pub enum BloomFilterNdvOpt {
749 #[prost(uint64, tag = "7")]
750 BloomFilterNdv(u64),
751 }
752}
753#[derive(Clone, PartialEq, ::prost::Message)]
754pub struct ParquetOptions {
755 #[prost(bool, tag = "1")]
759 pub enable_page_index: bool,
760 #[prost(bool, tag = "2")]
762 pub pruning: bool,
763 #[prost(bool, tag = "3")]
765 pub skip_metadata: bool,
766 #[prost(bool, tag = "5")]
768 pub pushdown_filters: bool,
769 #[prost(bool, tag = "6")]
771 pub reorder_filters: bool,
772 #[prost(bool, tag = "34")]
774 pub force_filter_selections: bool,
775 #[prost(uint64, tag = "7")]
777 pub data_pagesize_limit: u64,
778 #[prost(uint64, tag = "8")]
780 pub write_batch_size: u64,
781 #[prost(string, tag = "9")]
783 pub writer_version: ::prost::alloc::string::String,
784 #[prost(bool, tag = "23")]
788 pub allow_single_file_parallelism: bool,
789 #[prost(uint64, tag = "24")]
791 pub maximum_parallel_row_group_writers: u64,
792 #[prost(uint64, tag = "25")]
794 pub maximum_buffered_record_batches_per_stream: u64,
795 #[prost(bool, tag = "26")]
797 pub bloom_filter_on_read: bool,
798 #[prost(bool, tag = "27")]
800 pub bloom_filter_on_write: bool,
801 #[prost(bool, tag = "28")]
803 pub schema_force_view_types: bool,
804 #[prost(bool, tag = "29")]
806 pub binary_as_string: bool,
807 #[prost(bool, tag = "30")]
809 pub skip_arrow_metadata: bool,
810 #[prost(uint64, tag = "12")]
811 pub dictionary_page_size_limit: u64,
812 #[prost(uint64, tag = "18")]
813 pub data_page_row_count_limit: u64,
814 #[prost(uint64, tag = "15")]
815 pub max_row_group_size: u64,
816 #[prost(string, tag = "16")]
817 pub created_by: ::prost::alloc::string::String,
818 #[prost(oneof = "parquet_options::MetadataSizeHintOpt", tags = "4")]
819 pub metadata_size_hint_opt: ::core::option::Option<
820 parquet_options::MetadataSizeHintOpt,
821 >,
822 #[prost(oneof = "parquet_options::CompressionOpt", tags = "10")]
823 pub compression_opt: ::core::option::Option<parquet_options::CompressionOpt>,
824 #[prost(oneof = "parquet_options::DictionaryEnabledOpt", tags = "11")]
825 pub dictionary_enabled_opt: ::core::option::Option<
826 parquet_options::DictionaryEnabledOpt,
827 >,
828 #[prost(oneof = "parquet_options::StatisticsEnabledOpt", tags = "13")]
829 pub statistics_enabled_opt: ::core::option::Option<
830 parquet_options::StatisticsEnabledOpt,
831 >,
832 #[prost(oneof = "parquet_options::ColumnIndexTruncateLengthOpt", tags = "17")]
833 pub column_index_truncate_length_opt: ::core::option::Option<
834 parquet_options::ColumnIndexTruncateLengthOpt,
835 >,
836 #[prost(oneof = "parquet_options::StatisticsTruncateLengthOpt", tags = "31")]
837 pub statistics_truncate_length_opt: ::core::option::Option<
838 parquet_options::StatisticsTruncateLengthOpt,
839 >,
840 #[prost(oneof = "parquet_options::EncodingOpt", tags = "19")]
841 pub encoding_opt: ::core::option::Option<parquet_options::EncodingOpt>,
842 #[prost(oneof = "parquet_options::BloomFilterFppOpt", tags = "21")]
843 pub bloom_filter_fpp_opt: ::core::option::Option<parquet_options::BloomFilterFppOpt>,
844 #[prost(oneof = "parquet_options::BloomFilterNdvOpt", tags = "22")]
845 pub bloom_filter_ndv_opt: ::core::option::Option<parquet_options::BloomFilterNdvOpt>,
846 #[prost(oneof = "parquet_options::CoerceInt96Opt", tags = "32")]
847 pub coerce_int96_opt: ::core::option::Option<parquet_options::CoerceInt96Opt>,
848 #[prost(oneof = "parquet_options::MaxPredicateCacheSizeOpt", tags = "33")]
849 pub max_predicate_cache_size_opt: ::core::option::Option<
850 parquet_options::MaxPredicateCacheSizeOpt,
851 >,
852}
853pub mod parquet_options {
855 #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
856 pub enum MetadataSizeHintOpt {
857 #[prost(uint64, tag = "4")]
858 MetadataSizeHint(u64),
859 }
860 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
861 pub enum CompressionOpt {
862 #[prost(string, tag = "10")]
863 Compression(::prost::alloc::string::String),
864 }
865 #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
866 pub enum DictionaryEnabledOpt {
867 #[prost(bool, tag = "11")]
868 DictionaryEnabled(bool),
869 }
870 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
871 pub enum StatisticsEnabledOpt {
872 #[prost(string, tag = "13")]
873 StatisticsEnabled(::prost::alloc::string::String),
874 }
875 #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
876 pub enum ColumnIndexTruncateLengthOpt {
877 #[prost(uint64, tag = "17")]
878 ColumnIndexTruncateLength(u64),
879 }
880 #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
881 pub enum StatisticsTruncateLengthOpt {
882 #[prost(uint64, tag = "31")]
883 StatisticsTruncateLength(u64),
884 }
885 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
886 pub enum EncodingOpt {
887 #[prost(string, tag = "19")]
888 Encoding(::prost::alloc::string::String),
889 }
890 #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
891 pub enum BloomFilterFppOpt {
892 #[prost(double, tag = "21")]
893 BloomFilterFpp(f64),
894 }
895 #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
896 pub enum BloomFilterNdvOpt {
897 #[prost(uint64, tag = "22")]
898 BloomFilterNdv(u64),
899 }
900 #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
901 pub enum CoerceInt96Opt {
902 #[prost(string, tag = "32")]
903 CoerceInt96(::prost::alloc::string::String),
904 }
905 #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
906 pub enum MaxPredicateCacheSizeOpt {
907 #[prost(uint64, tag = "33")]
908 MaxPredicateCacheSize(u64),
909 }
910}
911#[derive(Clone, PartialEq, ::prost::Message)]
912pub struct Precision {
913 #[prost(enumeration = "PrecisionInfo", tag = "1")]
914 pub precision_info: i32,
915 #[prost(message, optional, tag = "2")]
916 pub val: ::core::option::Option<ScalarValue>,
917}
918#[derive(Clone, PartialEq, ::prost::Message)]
919pub struct Statistics {
920 #[prost(message, optional, tag = "1")]
921 pub num_rows: ::core::option::Option<Precision>,
922 #[prost(message, optional, tag = "2")]
923 pub total_byte_size: ::core::option::Option<Precision>,
924 #[prost(message, repeated, tag = "3")]
925 pub column_stats: ::prost::alloc::vec::Vec<ColumnStats>,
926}
927#[derive(Clone, PartialEq, ::prost::Message)]
928pub struct ColumnStats {
929 #[prost(message, optional, tag = "1")]
930 pub min_value: ::core::option::Option<Precision>,
931 #[prost(message, optional, tag = "2")]
932 pub max_value: ::core::option::Option<Precision>,
933 #[prost(message, optional, tag = "5")]
934 pub sum_value: ::core::option::Option<Precision>,
935 #[prost(message, optional, tag = "3")]
936 pub null_count: ::core::option::Option<Precision>,
937 #[prost(message, optional, tag = "4")]
938 pub distinct_count: ::core::option::Option<Precision>,
939 #[prost(message, optional, tag = "6")]
940 pub byte_size: ::core::option::Option<Precision>,
941}
942#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
943#[repr(i32)]
944pub enum JoinType {
945 Inner = 0,
946 Left = 1,
947 Right = 2,
948 Full = 3,
949 Leftsemi = 4,
950 Leftanti = 5,
951 Rightsemi = 6,
952 Rightanti = 7,
953 Leftmark = 8,
954 Rightmark = 9,
955}
956impl JoinType {
957 pub fn as_str_name(&self) -> &'static str {
962 match self {
963 Self::Inner => "INNER",
964 Self::Left => "LEFT",
965 Self::Right => "RIGHT",
966 Self::Full => "FULL",
967 Self::Leftsemi => "LEFTSEMI",
968 Self::Leftanti => "LEFTANTI",
969 Self::Rightsemi => "RIGHTSEMI",
970 Self::Rightanti => "RIGHTANTI",
971 Self::Leftmark => "LEFTMARK",
972 Self::Rightmark => "RIGHTMARK",
973 }
974 }
975 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
977 match value {
978 "INNER" => Some(Self::Inner),
979 "LEFT" => Some(Self::Left),
980 "RIGHT" => Some(Self::Right),
981 "FULL" => Some(Self::Full),
982 "LEFTSEMI" => Some(Self::Leftsemi),
983 "LEFTANTI" => Some(Self::Leftanti),
984 "RIGHTSEMI" => Some(Self::Rightsemi),
985 "RIGHTANTI" => Some(Self::Rightanti),
986 "LEFTMARK" => Some(Self::Leftmark),
987 "RIGHTMARK" => Some(Self::Rightmark),
988 _ => None,
989 }
990 }
991}
992#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
993#[repr(i32)]
994pub enum JoinConstraint {
995 On = 0,
996 Using = 1,
997}
998impl JoinConstraint {
999 pub fn as_str_name(&self) -> &'static str {
1004 match self {
1005 Self::On => "ON",
1006 Self::Using => "USING",
1007 }
1008 }
1009 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1011 match value {
1012 "ON" => Some(Self::On),
1013 "USING" => Some(Self::Using),
1014 _ => None,
1015 }
1016 }
1017}
1018#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1019#[repr(i32)]
1020pub enum NullEquality {
1021 NullEqualsNothing = 0,
1022 NullEqualsNull = 1,
1023}
1024impl NullEquality {
1025 pub fn as_str_name(&self) -> &'static str {
1030 match self {
1031 Self::NullEqualsNothing => "NULL_EQUALS_NOTHING",
1032 Self::NullEqualsNull => "NULL_EQUALS_NULL",
1033 }
1034 }
1035 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1037 match value {
1038 "NULL_EQUALS_NOTHING" => Some(Self::NullEqualsNothing),
1039 "NULL_EQUALS_NULL" => Some(Self::NullEqualsNull),
1040 _ => None,
1041 }
1042 }
1043}
1044#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1045#[repr(i32)]
1046pub enum TimeUnit {
1047 Second = 0,
1048 Millisecond = 1,
1049 Microsecond = 2,
1050 Nanosecond = 3,
1051}
1052impl TimeUnit {
1053 pub fn as_str_name(&self) -> &'static str {
1058 match self {
1059 Self::Second => "Second",
1060 Self::Millisecond => "Millisecond",
1061 Self::Microsecond => "Microsecond",
1062 Self::Nanosecond => "Nanosecond",
1063 }
1064 }
1065 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1067 match value {
1068 "Second" => Some(Self::Second),
1069 "Millisecond" => Some(Self::Millisecond),
1070 "Microsecond" => Some(Self::Microsecond),
1071 "Nanosecond" => Some(Self::Nanosecond),
1072 _ => None,
1073 }
1074 }
1075}
1076#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1077#[repr(i32)]
1078pub enum IntervalUnit {
1079 YearMonth = 0,
1080 DayTime = 1,
1081 MonthDayNano = 2,
1082}
1083impl IntervalUnit {
1084 pub fn as_str_name(&self) -> &'static str {
1089 match self {
1090 Self::YearMonth => "YearMonth",
1091 Self::DayTime => "DayTime",
1092 Self::MonthDayNano => "MonthDayNano",
1093 }
1094 }
1095 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1097 match value {
1098 "YearMonth" => Some(Self::YearMonth),
1099 "DayTime" => Some(Self::DayTime),
1100 "MonthDayNano" => Some(Self::MonthDayNano),
1101 _ => None,
1102 }
1103 }
1104}
1105#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1106#[repr(i32)]
1107pub enum UnionMode {
1108 Sparse = 0,
1109 Dense = 1,
1110}
1111impl UnionMode {
1112 pub fn as_str_name(&self) -> &'static str {
1117 match self {
1118 Self::Sparse => "sparse",
1119 Self::Dense => "dense",
1120 }
1121 }
1122 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1124 match value {
1125 "sparse" => Some(Self::Sparse),
1126 "dense" => Some(Self::Dense),
1127 _ => None,
1128 }
1129 }
1130}
1131#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1132#[repr(i32)]
1133pub enum CompressionTypeVariant {
1134 Gzip = 0,
1135 Bzip2 = 1,
1136 Xz = 2,
1137 Zstd = 3,
1138 Uncompressed = 4,
1139}
1140impl CompressionTypeVariant {
1141 pub fn as_str_name(&self) -> &'static str {
1146 match self {
1147 Self::Gzip => "GZIP",
1148 Self::Bzip2 => "BZIP2",
1149 Self::Xz => "XZ",
1150 Self::Zstd => "ZSTD",
1151 Self::Uncompressed => "UNCOMPRESSED",
1152 }
1153 }
1154 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1156 match value {
1157 "GZIP" => Some(Self::Gzip),
1158 "BZIP2" => Some(Self::Bzip2),
1159 "XZ" => Some(Self::Xz),
1160 "ZSTD" => Some(Self::Zstd),
1161 "UNCOMPRESSED" => Some(Self::Uncompressed),
1162 _ => None,
1163 }
1164 }
1165}
1166#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1167#[repr(i32)]
1168pub enum JoinSide {
1169 LeftSide = 0,
1170 RightSide = 1,
1171 None = 2,
1172}
1173impl JoinSide {
1174 pub fn as_str_name(&self) -> &'static str {
1179 match self {
1180 Self::LeftSide => "LEFT_SIDE",
1181 Self::RightSide => "RIGHT_SIDE",
1182 Self::None => "NONE",
1183 }
1184 }
1185 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1187 match value {
1188 "LEFT_SIDE" => Some(Self::LeftSide),
1189 "RIGHT_SIDE" => Some(Self::RightSide),
1190 "NONE" => Some(Self::None),
1191 _ => None,
1192 }
1193 }
1194}
1195#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1196#[repr(i32)]
1197pub enum PrecisionInfo {
1198 Exact = 0,
1199 Inexact = 1,
1200 Absent = 2,
1201}
1202impl PrecisionInfo {
1203 pub fn as_str_name(&self) -> &'static str {
1208 match self {
1209 Self::Exact => "EXACT",
1210 Self::Inexact => "INEXACT",
1211 Self::Absent => "ABSENT",
1212 }
1213 }
1214 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1216 match value {
1217 "EXACT" => Some(Self::Exact),
1218 "INEXACT" => Some(Self::Inexact),
1219 "ABSENT" => Some(Self::Absent),
1220 _ => None,
1221 }
1222 }
1223}