1#![doc = "Generated transport-independent contract objects."]
3
4use std::collections::BTreeMap;
5use std::error::Error as StdError;
6use std::fmt::{self, Display, Formatter};
7
8use serde::{Deserialize, Deserializer, Serialize, Serializer};
9use serde_json::Value;
10use spiral_contract::error::{ErrorEnvelope, ServiceError};
11use spiral_contract::safelong::SafeUnsignedLong;
12use spiral_contract::strict::{DeserializeStrict, Strict};
13use uuid::Uuid;
14
15#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
17pub struct AbortBlobUploadRequest {
18 #[serde(rename = "storage")]
20 #[serde(default, skip_serializing_if = "Option::is_none")]
21 pub storage: Option<StorageBinding>,
22 #[serde(rename = "upload")]
24 pub upload: BlobUpload,
25}
26impl<'de> DeserializeStrict<'de> for AbortBlobUploadRequest {
27 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
28 #[derive(Deserialize)]
29 #[serde(deny_unknown_fields)]
30 struct __Wire {
31 #[serde(rename = "storage")]
32 #[serde(default)]
33 storage: Strict<Option<StorageBinding>>,
34 #[serde(rename = "upload")]
35 upload: Strict<BlobUpload>,
36 }
37 let wire = __Wire::deserialize(deserializer)?;
38 Ok(Self {
39 storage: wire.storage.0,
40 upload: wire.upload.0,
41 })
42 }
43}
44
45#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
47pub struct AddColumn {
48 #[serde(rename = "after")]
50 #[serde(default, skip_serializing_if = "Option::is_none")]
51 pub after: Option<Vec<String>>,
52 #[serde(rename = "field")]
54 pub field: ArrowField,
55}
56impl<'de> DeserializeStrict<'de> for AddColumn {
57 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
58 #[derive(Deserialize)]
59 #[serde(deny_unknown_fields)]
60 struct __Wire {
61 #[serde(rename = "after")]
62 #[serde(default)]
63 after: Strict<Option<Vec<String>>>,
64 #[serde(rename = "field")]
65 field: Strict<ArrowField>,
66 }
67 let wire = __Wire::deserialize(deserializer)?;
68 Ok(Self {
69 after: wire.after.0,
70 field: wire.field.0,
71 })
72 }
73}
74
75#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
81pub struct AddedFragment {
82 #[serde(rename = "appended")]
84 pub appended: Vec<RowIdRange>,
85 #[serde(rename = "carried")]
87 pub carried: Vec<RowIdRange>,
88 #[serde(rename = "patched")]
90 pub patched: Vec<RowIdRange>,
91}
92impl<'de> DeserializeStrict<'de> for AddedFragment {
93 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
94 #[derive(Deserialize)]
95 #[serde(deny_unknown_fields)]
96 struct __Wire {
97 #[serde(rename = "appended")]
98 appended: Strict<Vec<RowIdRange>>,
99 #[serde(rename = "carried")]
100 carried: Strict<Vec<RowIdRange>>,
101 #[serde(rename = "patched")]
102 patched: Strict<Vec<RowIdRange>>,
103 }
104 let wire = __Wire::deserialize(deserializer)?;
105 Ok(Self {
106 appended: wire.appended.0,
107 carried: wire.carried.0,
108 patched: wire.patched.0,
109 })
110 }
111}
112
113#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
121pub struct Aggregate {
122 #[serde(rename = "aggregates")]
124 pub aggregates: Vec<NamedAggregate>,
125 #[serde(rename = "groups")]
127 pub groups: Vec<String>,
128 #[serde(rename = "maxGroups")]
130 #[serde(default, skip_serializing_if = "Option::is_none")]
131 pub max_groups: Option<u32>,
132}
133impl<'de> DeserializeStrict<'de> for Aggregate {
134 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
135 #[derive(Deserialize)]
136 #[serde(deny_unknown_fields)]
137 struct __Wire {
138 #[serde(rename = "aggregates")]
139 aggregates: Strict<Vec<NamedAggregate>>,
140 #[serde(rename = "groups")]
141 groups: Strict<Vec<String>>,
142 #[serde(rename = "maxGroups")]
143 #[serde(default)]
144 max_groups: Strict<Option<u32>>,
145 }
146 let wire = __Wire::deserialize(deserializer)?;
147 Ok(Self {
148 aggregates: wire.aggregates.0,
149 groups: wire.groups.0,
150 max_groups: wire.max_groups.0,
151 })
152 }
153}
154
155#[derive(Clone, Debug, PartialEq)]
165pub enum AggregateFunction {
166 Count(CountAggregate),
168 Histogram(HistogramAggregate),
170 Max(ColumnAggregate),
172 Min(ColumnAggregate),
174 Sum(ColumnAggregate),
176 Unknown { tag: String, value: Value },
178}
179impl Serialize for AggregateFunction {
180 fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
181 match self {
182 Self::Count(value) => {
183 let mut object = serde_json::Map::new();
184 object.insert("type".into(), Value::String("count".into()));
185 object.insert(
186 "count".into(),
187 serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
188 );
189 Value::Object(object).serialize(serializer)
190 }
191 Self::Histogram(value) => {
192 let mut object = serde_json::Map::new();
193 object.insert("type".into(), Value::String("histogram".into()));
194 object.insert(
195 "histogram".into(),
196 serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
197 );
198 Value::Object(object).serialize(serializer)
199 }
200 Self::Max(value) => {
201 let mut object = serde_json::Map::new();
202 object.insert("type".into(), Value::String("max".into()));
203 object.insert(
204 "max".into(),
205 serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
206 );
207 Value::Object(object).serialize(serializer)
208 }
209 Self::Min(value) => {
210 let mut object = serde_json::Map::new();
211 object.insert("type".into(), Value::String("min".into()));
212 object.insert(
213 "min".into(),
214 serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
215 );
216 Value::Object(object).serialize(serializer)
217 }
218 Self::Sum(value) => {
219 let mut object = serde_json::Map::new();
220 object.insert("type".into(), Value::String("sum".into()));
221 object.insert(
222 "sum".into(),
223 serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
224 );
225 Value::Object(object).serialize(serializer)
226 }
227 Self::Unknown { tag, value } => {
228 if value.get("type").and_then(Value::as_str) != Some(tag.as_str()) {
229 return Err(serde::ser::Error::custom(
230 "unknown union discriminator mismatch",
231 ));
232 }
233 value.serialize(serializer)
234 }
235 }
236 }
237}
238impl<'de> Deserialize<'de> for AggregateFunction {
239 fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
240 let value = Value::deserialize(deserializer)?;
241 let tag = value
242 .get("type")
243 .and_then(Value::as_str)
244 .ok_or_else(|| serde::de::Error::custom("union requires type"))?;
245 match tag {
246 "count" => Ok(Self::Count(
247 serde_json::from_value(
248 value
249 .get("count")
250 .cloned()
251 .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
252 )
253 .map_err(serde::de::Error::custom)?,
254 )),
255 "histogram" => Ok(Self::Histogram(
256 serde_json::from_value(
257 value
258 .get("histogram")
259 .cloned()
260 .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
261 )
262 .map_err(serde::de::Error::custom)?,
263 )),
264 "max" => Ok(Self::Max(
265 serde_json::from_value(
266 value
267 .get("max")
268 .cloned()
269 .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
270 )
271 .map_err(serde::de::Error::custom)?,
272 )),
273 "min" => Ok(Self::Min(
274 serde_json::from_value(
275 value
276 .get("min")
277 .cloned()
278 .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
279 )
280 .map_err(serde::de::Error::custom)?,
281 )),
282 "sum" => Ok(Self::Sum(
283 serde_json::from_value(
284 value
285 .get("sum")
286 .cloned()
287 .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
288 )
289 .map_err(serde::de::Error::custom)?,
290 )),
291 tag => Ok(Self::Unknown {
292 tag: tag.to_owned(),
293 value,
294 }),
295 }
296 }
297}
298impl<'de> DeserializeStrict<'de> for AggregateFunction {
299 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
300 #[derive(Deserialize)]
301 enum __Tag0 {
302 #[serde(rename = "count")]
303 Value,
304 }
305 #[derive(Deserialize)]
306 #[serde(deny_unknown_fields)]
307 struct __Arm0 {
308 #[serde(rename = "type")]
309 _tag: __Tag0,
310 #[serde(rename = "count")]
311 value: Strict<CountAggregate>,
312 }
313 #[derive(Deserialize)]
314 enum __Tag1 {
315 #[serde(rename = "histogram")]
316 Value,
317 }
318 #[derive(Deserialize)]
319 #[serde(deny_unknown_fields)]
320 struct __Arm1 {
321 #[serde(rename = "type")]
322 _tag: __Tag1,
323 #[serde(rename = "histogram")]
324 value: Strict<HistogramAggregate>,
325 }
326 #[derive(Deserialize)]
327 enum __Tag2 {
328 #[serde(rename = "max")]
329 Value,
330 }
331 #[derive(Deserialize)]
332 #[serde(deny_unknown_fields)]
333 struct __Arm2 {
334 #[serde(rename = "type")]
335 _tag: __Tag2,
336 #[serde(rename = "max")]
337 value: Strict<ColumnAggregate>,
338 }
339 #[derive(Deserialize)]
340 enum __Tag3 {
341 #[serde(rename = "min")]
342 Value,
343 }
344 #[derive(Deserialize)]
345 #[serde(deny_unknown_fields)]
346 struct __Arm3 {
347 #[serde(rename = "type")]
348 _tag: __Tag3,
349 #[serde(rename = "min")]
350 value: Strict<ColumnAggregate>,
351 }
352 #[derive(Deserialize)]
353 enum __Tag4 {
354 #[serde(rename = "sum")]
355 Value,
356 }
357 #[derive(Deserialize)]
358 #[serde(deny_unknown_fields)]
359 struct __Arm4 {
360 #[serde(rename = "type")]
361 _tag: __Tag4,
362 #[serde(rename = "sum")]
363 value: Strict<ColumnAggregate>,
364 }
365 #[derive(Deserialize)]
366 #[serde(untagged)]
367 enum __Known {
368 Count(Box<__Arm0>),
369 Histogram(Box<__Arm1>),
370 Max(Box<__Arm2>),
371 Min(Box<__Arm3>),
372 Sum(Box<__Arm4>),
373 }
374 Ok(match __Known::deserialize(deserializer)? {
375 __Known::Count(arm) => Self::Count(arm.value.0),
376 __Known::Histogram(arm) => Self::Histogram(arm.value.0),
377 __Known::Max(arm) => Self::Max(arm.value.0),
378 __Known::Min(arm) => Self::Min(arm.value.0),
379 __Known::Sum(arm) => Self::Sum(arm.value.0),
380 })
381 }
382}
383
384#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
390pub struct AlignedBase {
391 #[serde(rename = "schema")]
393 #[serde(default, skip_serializing_if = "Option::is_none")]
394 pub schema: Option<ArrowSchema>,
395 #[serde(rename = "source")]
397 pub source: TableVersion,
398 #[serde(rename = "sourceStorage")]
400 #[serde(default, skip_serializing_if = "Option::is_none")]
401 pub source_storage: Option<StorageBinding>,
402 #[serde(rename = "versionId")]
404 #[serde(default, skip_serializing_if = "Option::is_none")]
405 pub version_id: Option<Uuid>,
406}
407impl<'de> DeserializeStrict<'de> for AlignedBase {
408 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
409 #[derive(Deserialize)]
410 #[serde(deny_unknown_fields)]
411 struct __Wire {
412 #[serde(rename = "schema")]
413 #[serde(default)]
414 schema: Strict<Option<ArrowSchema>>,
415 #[serde(rename = "source")]
416 source: Strict<TableVersion>,
417 #[serde(rename = "sourceStorage")]
418 #[serde(default)]
419 source_storage: Strict<Option<StorageBinding>>,
420 #[serde(rename = "versionId")]
421 #[serde(default)]
422 version_id: Strict<Option<Uuid>>,
423 }
424 let wire = __Wire::deserialize(deserializer)?;
425 Ok(Self {
426 schema: wire.schema.0,
427 source: wire.source.0,
428 source_storage: wire.source_storage.0,
429 version_id: wire.version_id.0,
430 })
431 }
432}
433
434#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
436pub struct AlignedFragment {
437 #[serde(rename = "receipt")]
439 pub receipt: FragmentReceipt,
440}
441impl<'de> DeserializeStrict<'de> for AlignedFragment {
442 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
443 #[derive(Deserialize)]
444 #[serde(deny_unknown_fields)]
445 struct __Wire {
446 #[serde(rename = "receipt")]
447 receipt: Strict<FragmentReceipt>,
448 }
449 let wire = __Wire::deserialize(deserializer)?;
450 Ok(Self {
451 receipt: wire.receipt.0,
452 })
453 }
454}
455
456#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
462pub struct AppendRowsRequest {
463 #[serde(rename = "attempt")]
465 #[serde(default, skip_serializing_if = "Option::is_none")]
466 pub attempt: Option<Uuid>,
467 #[serde(rename = "base")]
469 #[serde(default, skip_serializing_if = "Option::is_none")]
470 pub base: Option<Uuid>,
471 #[serde(rename = "properties")]
473 #[serde(default, skip_serializing_if = "Option::is_none")]
474 pub properties: Option<WriteProperties>,
475 #[serde(rename = "schemaChanges")]
477 #[serde(default, skip_serializing_if = "Option::is_none")]
478 pub schema_changes: Option<Vec<SchemaChange>>,
479 #[serde(rename = "table")]
481 pub table: TableBinding,
482}
483impl<'de> DeserializeStrict<'de> for AppendRowsRequest {
484 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
485 #[derive(Deserialize)]
486 #[serde(deny_unknown_fields)]
487 struct __Wire {
488 #[serde(rename = "attempt")]
489 #[serde(default)]
490 attempt: Strict<Option<Uuid>>,
491 #[serde(rename = "base")]
492 #[serde(default)]
493 base: Strict<Option<Uuid>>,
494 #[serde(rename = "properties")]
495 #[serde(default)]
496 properties: Strict<Option<WriteProperties>>,
497 #[serde(rename = "schemaChanges")]
498 #[serde(default)]
499 schema_changes: Strict<Option<Vec<SchemaChange>>>,
500 #[serde(rename = "table")]
501 table: Strict<TableBinding>,
502 }
503 let wire = __Wire::deserialize(deserializer)?;
504 Ok(Self {
505 attempt: wire.attempt.0,
506 base: wire.base.0,
507 properties: wire.properties.0,
508 schema_changes: wire.schema_changes.0,
509 table: wire.table.0,
510 })
511 }
512}
513
514#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
516pub struct AppendedFragments {
517 #[serde(rename = "receipts")]
519 pub receipts: Vec<FragmentReceipt>,
520}
521impl<'de> DeserializeStrict<'de> for AppendedFragments {
522 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
523 #[derive(Deserialize)]
524 #[serde(deny_unknown_fields)]
525 struct __Wire {
526 #[serde(rename = "receipts")]
527 receipts: Strict<Vec<FragmentReceipt>>,
528 }
529 let wire = __Wire::deserialize(deserializer)?;
530 Ok(Self {
531 receipts: wire.receipts.0,
532 })
533 }
534}
535
536#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
538#[serde(transparent)]
539pub struct ArrowDataType(pub Value);
540impl<'de> DeserializeStrict<'de> for ArrowDataType {
541 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
542 Ok(Self(Strict::<Value>::deserialize(deserializer)?.0))
543 }
544}
545
546#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
549#[serde(transparent)]
550pub struct ArrowField(pub Value);
551impl<'de> DeserializeStrict<'de> for ArrowField {
552 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
553 Ok(Self(Strict::<Value>::deserialize(deserializer)?.0))
554 }
555}
556
557#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
570#[serde(transparent)]
571pub struct ArrowSchema(pub Value);
572impl<'de> DeserializeStrict<'de> for ArrowSchema {
573 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
574 Ok(Self(Strict::<Value>::deserialize(deserializer)?.0))
575 }
576}
577
578#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
584pub struct AttachColumnsRequest {
585 #[serde(rename = "attempt")]
587 #[serde(default, skip_serializing_if = "Option::is_none")]
588 pub attempt: Option<Uuid>,
589 #[serde(rename = "base")]
591 pub base: Uuid,
592 #[serde(rename = "fragmentId")]
594 pub fragment_id: Uuid,
595 #[serde(rename = "schemaChanges")]
597 #[serde(default, skip_serializing_if = "Option::is_none")]
598 pub schema_changes: Option<Vec<SchemaChange>>,
599 #[serde(rename = "table")]
601 pub table: TableBinding,
602}
603impl<'de> DeserializeStrict<'de> for AttachColumnsRequest {
604 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
605 #[derive(Deserialize)]
606 #[serde(deny_unknown_fields)]
607 struct __Wire {
608 #[serde(rename = "attempt")]
609 #[serde(default)]
610 attempt: Strict<Option<Uuid>>,
611 #[serde(rename = "base")]
612 base: Strict<Uuid>,
613 #[serde(rename = "fragmentId")]
614 fragment_id: Strict<Uuid>,
615 #[serde(rename = "schemaChanges")]
616 #[serde(default)]
617 schema_changes: Strict<Option<Vec<SchemaChange>>>,
618 #[serde(rename = "table")]
619 table: Strict<TableBinding>,
620 }
621 let wire = __Wire::deserialize(deserializer)?;
622 Ok(Self {
623 attempt: wire.attempt.0,
624 base: wire.base.0,
625 fragment_id: wire.fragment_id.0,
626 schema_changes: wire.schema_changes.0,
627 table: wire.table.0,
628 })
629 }
630}
631
632#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
634pub struct AttachedColumns {
635 #[serde(rename = "receipt")]
637 pub receipt: FragmentReceipt,
638}
639impl<'de> DeserializeStrict<'de> for AttachedColumns {
640 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
641 #[derive(Deserialize)]
642 #[serde(deny_unknown_fields)]
643 struct __Wire {
644 #[serde(rename = "receipt")]
645 receipt: Strict<FragmentReceipt>,
646 }
647 let wire = __Wire::deserialize(deserializer)?;
648 Ok(Self {
649 receipt: wire.receipt.0,
650 })
651 }
652}
653
654#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
656pub struct BindProjectionRequest {
657 #[serde(rename = "input")]
659 pub input: ArrowSchema,
660 #[serde(rename = "projection")]
662 pub projection: Vec<NamedExpression>,
663}
664impl<'de> DeserializeStrict<'de> for BindProjectionRequest {
665 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
666 #[derive(Deserialize)]
667 #[serde(deny_unknown_fields)]
668 struct __Wire {
669 #[serde(rename = "input")]
670 input: Strict<ArrowSchema>,
671 #[serde(rename = "projection")]
672 projection: Strict<Vec<NamedExpression>>,
673 }
674 let wire = __Wire::deserialize(deserializer)?;
675 Ok(Self {
676 input: wire.input.0,
677 projection: wire.projection.0,
678 })
679 }
680}
681
682#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
687pub struct Blob {
688 #[serde(rename = "attempt")]
690 #[serde(default, skip_serializing_if = "Option::is_none")]
691 pub attempt: Option<Uuid>,
692 #[serde(rename = "digest")]
694 pub digest: String,
695 #[serde(rename = "mediaType")]
697 pub media_type: String,
698 #[serde(rename = "objectId")]
700 pub object_id: Uuid,
701 #[serde(rename = "size")]
703 pub size: SafeUnsignedLong,
704 #[serde(rename = "tableId")]
706 pub table_id: Uuid,
707}
708impl<'de> DeserializeStrict<'de> for Blob {
709 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
710 #[derive(Deserialize)]
711 #[serde(deny_unknown_fields)]
712 struct __Wire {
713 #[serde(rename = "attempt")]
714 #[serde(default)]
715 attempt: Strict<Option<Uuid>>,
716 #[serde(rename = "digest")]
717 digest: Strict<String>,
718 #[serde(rename = "mediaType")]
719 media_type: Strict<String>,
720 #[serde(rename = "objectId")]
721 object_id: Strict<Uuid>,
722 #[serde(rename = "size")]
723 size: Strict<SafeUnsignedLong>,
724 #[serde(rename = "tableId")]
725 table_id: Strict<Uuid>,
726 }
727 let wire = __Wire::deserialize(deserializer)?;
728 Ok(Self {
729 attempt: wire.attempt.0,
730 digest: wire.digest.0,
731 media_type: wire.media_type.0,
732 object_id: wire.object_id.0,
733 size: wire.size.0,
734 table_id: wire.table_id.0,
735 })
736 }
737}
738
739#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
743pub struct BlobPart {
744 #[serde(rename = "digest")]
746 #[serde(default, skip_serializing_if = "Option::is_none")]
747 pub digest: Option<String>,
748 #[serde(rename = "hash")]
750 pub hash: String,
751 #[serde(rename = "part")]
753 pub part: u32,
754 #[serde(rename = "size")]
756 pub size: SafeUnsignedLong,
757 #[serde(rename = "tag")]
759 pub tag: String,
760}
761impl<'de> DeserializeStrict<'de> for BlobPart {
762 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
763 #[derive(Deserialize)]
764 #[serde(deny_unknown_fields)]
765 struct __Wire {
766 #[serde(rename = "digest")]
767 #[serde(default)]
768 digest: Strict<Option<String>>,
769 #[serde(rename = "hash")]
770 hash: Strict<String>,
771 #[serde(rename = "part")]
772 part: Strict<u32>,
773 #[serde(rename = "size")]
774 size: Strict<SafeUnsignedLong>,
775 #[serde(rename = "tag")]
776 tag: Strict<String>,
777 }
778 let wire = __Wire::deserialize(deserializer)?;
779 Ok(Self {
780 digest: wire.digest.0,
781 hash: wire.hash.0,
782 part: wire.part.0,
783 size: wire.size.0,
784 tag: wire.tag.0,
785 })
786 }
787}
788
789#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
791pub struct BlobStat {
792 #[serde(rename = "etag")]
794 #[serde(default, skip_serializing_if = "Option::is_none")]
795 pub etag: Option<String>,
796 #[serde(rename = "size")]
798 pub size: SafeUnsignedLong,
799 #[serde(rename = "version")]
801 #[serde(default, skip_serializing_if = "Option::is_none")]
802 pub version: Option<String>,
803}
804impl<'de> DeserializeStrict<'de> for BlobStat {
805 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
806 #[derive(Deserialize)]
807 #[serde(deny_unknown_fields)]
808 struct __Wire {
809 #[serde(rename = "etag")]
810 #[serde(default)]
811 etag: Strict<Option<String>>,
812 #[serde(rename = "size")]
813 size: Strict<SafeUnsignedLong>,
814 #[serde(rename = "version")]
815 #[serde(default)]
816 version: Strict<Option<String>>,
817 }
818 let wire = __Wire::deserialize(deserializer)?;
819 Ok(Self {
820 etag: wire.etag.0,
821 size: wire.size.0,
822 version: wire.version.0,
823 })
824 }
825}
826
827#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
832pub struct BlobUpload {
833 #[serde(rename = "attempt")]
835 pub attempt: Uuid,
836 #[serde(rename = "mediaType")]
838 pub media_type: String,
839 #[serde(rename = "objectId")]
841 pub object_id: Uuid,
842 #[serde(rename = "partBytes")]
844 pub part_bytes: SafeUnsignedLong,
845 #[serde(rename = "tableId")]
847 pub table_id: Uuid,
848 #[serde(rename = "uploadId")]
850 pub upload_id: String,
851}
852impl<'de> DeserializeStrict<'de> for BlobUpload {
853 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
854 #[derive(Deserialize)]
855 #[serde(deny_unknown_fields)]
856 struct __Wire {
857 #[serde(rename = "attempt")]
858 attempt: Strict<Uuid>,
859 #[serde(rename = "mediaType")]
860 media_type: Strict<String>,
861 #[serde(rename = "objectId")]
862 object_id: Strict<Uuid>,
863 #[serde(rename = "partBytes")]
864 part_bytes: Strict<SafeUnsignedLong>,
865 #[serde(rename = "tableId")]
866 table_id: Strict<Uuid>,
867 #[serde(rename = "uploadId")]
868 upload_id: Strict<String>,
869 }
870 let wire = __Wire::deserialize(deserializer)?;
871 Ok(Self {
872 attempt: wire.attempt.0,
873 media_type: wire.media_type.0,
874 object_id: wire.object_id.0,
875 part_bytes: wire.part_bytes.0,
876 table_id: wire.table_id.0,
877 upload_id: wire.upload_id.0,
878 })
879 }
880}
881
882#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
884pub struct ByteRange {
885 #[serde(rename = "end")]
887 pub end: SafeUnsignedLong,
888 #[serde(rename = "start")]
890 pub start: SafeUnsignedLong,
891}
892impl<'de> DeserializeStrict<'de> for ByteRange {
893 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
894 #[derive(Deserialize)]
895 #[serde(deny_unknown_fields)]
896 struct __Wire {
897 #[serde(rename = "end")]
898 end: Strict<SafeUnsignedLong>,
899 #[serde(rename = "start")]
900 start: Strict<SafeUnsignedLong>,
901 }
902 let wire = __Wire::deserialize(deserializer)?;
903 Ok(Self {
904 end: wire.end.0,
905 start: wire.start.0,
906 })
907 }
908}
909
910#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
916pub struct ChangePlan {
917 #[serde(rename = "fragments")]
919 pub fragments: Vec<FragmentChange>,
920 #[serde(rename = "removedFragmentIds")]
922 pub removed_fragment_ids: Vec<Uuid>,
923 #[serde(rename = "retypedColumns")]
925 pub retyped_columns: Vec<String>,
926}
927impl<'de> DeserializeStrict<'de> for ChangePlan {
928 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
929 #[derive(Deserialize)]
930 #[serde(deny_unknown_fields)]
931 struct __Wire {
932 #[serde(rename = "fragments")]
933 fragments: Strict<Vec<FragmentChange>>,
934 #[serde(rename = "removedFragmentIds")]
935 removed_fragment_ids: Strict<Vec<Uuid>>,
936 #[serde(rename = "retypedColumns")]
937 retyped_columns: Strict<Vec<String>>,
938 }
939 let wire = __Wire::deserialize(deserializer)?;
940 Ok(Self {
941 fragments: wire.fragments.0,
942 removed_fragment_ids: wire.removed_fragment_ids.0,
943 retyped_columns: wire.retyped_columns.0,
944 })
945 }
946}
947
948#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
950pub struct ColumnAggregate {
951 #[serde(rename = "column")]
953 pub column: String,
954}
955impl<'de> DeserializeStrict<'de> for ColumnAggregate {
956 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
957 #[derive(Deserialize)]
958 #[serde(deny_unknown_fields)]
959 struct __Wire {
960 #[serde(rename = "column")]
961 column: Strict<String>,
962 }
963 let wire = __Wire::deserialize(deserializer)?;
964 Ok(Self {
965 column: wire.column.0,
966 })
967 }
968}
969
970#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
972pub struct ColumnPath {
973 #[serde(rename = "path")]
975 pub path: Vec<String>,
976}
977impl<'de> DeserializeStrict<'de> for ColumnPath {
978 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
979 #[derive(Deserialize)]
980 #[serde(deny_unknown_fields)]
981 struct __Wire {
982 #[serde(rename = "path")]
983 path: Strict<Vec<String>>,
984 }
985 let wire = __Wire::deserialize(deserializer)?;
986 Ok(Self { path: wire.path.0 })
987 }
988}
989
990#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
993pub struct ColumnStatistics {
994 #[serde(rename = "countsExact")]
996 pub counts_exact: bool,
997 #[serde(rename = "maxExact")]
999 pub max_exact: bool,
1000 #[serde(rename = "maxValue")]
1002 #[serde(default, skip_serializing_if = "Option::is_none")]
1003 pub max_value: Option<Expression>,
1004 #[serde(rename = "minExact")]
1006 pub min_exact: bool,
1007 #[serde(rename = "minValue")]
1009 #[serde(default, skip_serializing_if = "Option::is_none")]
1010 pub min_value: Option<Expression>,
1011 #[serde(rename = "name")]
1013 pub name: String,
1014 #[serde(rename = "nanCount")]
1016 #[serde(default, skip_serializing_if = "Option::is_none")]
1017 pub nan_count: Option<SafeUnsignedLong>,
1018 #[serde(rename = "nullCount")]
1020 #[serde(default, skip_serializing_if = "Option::is_none")]
1021 pub null_count: Option<SafeUnsignedLong>,
1022}
1023impl<'de> DeserializeStrict<'de> for ColumnStatistics {
1024 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1025 #[derive(Deserialize)]
1026 #[serde(deny_unknown_fields)]
1027 struct __Wire {
1028 #[serde(rename = "countsExact")]
1029 counts_exact: Strict<bool>,
1030 #[serde(rename = "maxExact")]
1031 max_exact: Strict<bool>,
1032 #[serde(rename = "maxValue")]
1033 #[serde(default)]
1034 max_value: Strict<Option<Expression>>,
1035 #[serde(rename = "minExact")]
1036 min_exact: Strict<bool>,
1037 #[serde(rename = "minValue")]
1038 #[serde(default)]
1039 min_value: Strict<Option<Expression>>,
1040 #[serde(rename = "name")]
1041 name: Strict<String>,
1042 #[serde(rename = "nanCount")]
1043 #[serde(default)]
1044 nan_count: Strict<Option<SafeUnsignedLong>>,
1045 #[serde(rename = "nullCount")]
1046 #[serde(default)]
1047 null_count: Strict<Option<SafeUnsignedLong>>,
1048 }
1049 let wire = __Wire::deserialize(deserializer)?;
1050 Ok(Self {
1051 counts_exact: wire.counts_exact.0,
1052 max_exact: wire.max_exact.0,
1053 max_value: wire.max_value.0,
1054 min_exact: wire.min_exact.0,
1055 min_value: wire.min_value.0,
1056 name: wire.name.0,
1057 nan_count: wire.nan_count.0,
1058 null_count: wire.null_count.0,
1059 })
1060 }
1061}
1062
1063#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
1065pub struct CompleteBlobUploadRequest {
1066 #[serde(rename = "parts")]
1068 pub parts: Vec<BlobPart>,
1069 #[serde(rename = "storage")]
1071 #[serde(default, skip_serializing_if = "Option::is_none")]
1072 pub storage: Option<StorageBinding>,
1073 #[serde(rename = "upload")]
1075 pub upload: BlobUpload,
1076}
1077impl<'de> DeserializeStrict<'de> for CompleteBlobUploadRequest {
1078 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1079 #[derive(Deserialize)]
1080 #[serde(deny_unknown_fields)]
1081 struct __Wire {
1082 #[serde(rename = "parts")]
1083 parts: Strict<Vec<BlobPart>>,
1084 #[serde(rename = "storage")]
1085 #[serde(default)]
1086 storage: Strict<Option<StorageBinding>>,
1087 #[serde(rename = "upload")]
1088 upload: Strict<BlobUpload>,
1089 }
1090 let wire = __Wire::deserialize(deserializer)?;
1091 Ok(Self {
1092 parts: wire.parts.0,
1093 storage: wire.storage.0,
1094 upload: wire.upload.0,
1095 })
1096 }
1097}
1098
1099#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
1101pub struct CountAggregate {
1102 #[serde(rename = "column")]
1104 #[serde(default, skip_serializing_if = "Option::is_none")]
1105 pub column: Option<String>,
1106}
1107impl<'de> DeserializeStrict<'de> for CountAggregate {
1108 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1109 #[derive(Deserialize)]
1110 #[serde(deny_unknown_fields)]
1111 struct __Wire {
1112 #[serde(rename = "column")]
1113 #[serde(default)]
1114 column: Strict<Option<String>>,
1115 }
1116 let wire = __Wire::deserialize(deserializer)?;
1117 Ok(Self {
1118 column: wire.column.0,
1119 })
1120 }
1121}
1122
1123#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
1127pub struct DeleteBase {
1128 #[serde(rename = "attempt")]
1130 pub attempt: Uuid,
1131 #[serde(rename = "expectedRows")]
1133 pub expected_rows: SafeUnsignedLong,
1134 #[serde(rename = "filter")]
1136 #[serde(default, skip_serializing_if = "Option::is_none")]
1137 pub filter: Option<Expression>,
1138 #[serde(rename = "storage")]
1140 #[serde(default, skip_serializing_if = "Option::is_none")]
1141 pub storage: Option<StorageBinding>,
1142 #[serde(rename = "versionId")]
1144 pub version_id: Uuid,
1145}
1146impl<'de> DeserializeStrict<'de> for DeleteBase {
1147 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1148 #[derive(Deserialize)]
1149 #[serde(deny_unknown_fields)]
1150 struct __Wire {
1151 #[serde(rename = "attempt")]
1152 attempt: Strict<Uuid>,
1153 #[serde(rename = "expectedRows")]
1154 expected_rows: Strict<SafeUnsignedLong>,
1155 #[serde(rename = "filter")]
1156 #[serde(default)]
1157 filter: Strict<Option<Expression>>,
1158 #[serde(rename = "storage")]
1159 #[serde(default)]
1160 storage: Strict<Option<StorageBinding>>,
1161 #[serde(rename = "versionId")]
1162 version_id: Strict<Uuid>,
1163 }
1164 let wire = __Wire::deserialize(deserializer)?;
1165 Ok(Self {
1166 attempt: wire.attempt.0,
1167 expected_rows: wire.expected_rows.0,
1168 filter: wire.filter.0,
1169 storage: wire.storage.0,
1170 version_id: wire.version_id.0,
1171 })
1172 }
1173}
1174
1175#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
1179pub struct DeleteRowsRequest {
1180 #[serde(rename = "attempt")]
1182 #[serde(default, skip_serializing_if = "Option::is_none")]
1183 pub attempt: Option<Uuid>,
1184 #[serde(rename = "base")]
1186 pub base: Uuid,
1187 #[serde(rename = "rowIdColumn")]
1189 pub row_id_column: String,
1190 #[serde(rename = "table")]
1192 pub table: TableBinding,
1193}
1194impl<'de> DeserializeStrict<'de> for DeleteRowsRequest {
1195 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1196 #[derive(Deserialize)]
1197 #[serde(deny_unknown_fields)]
1198 struct __Wire {
1199 #[serde(rename = "attempt")]
1200 #[serde(default)]
1201 attempt: Strict<Option<Uuid>>,
1202 #[serde(rename = "base")]
1203 base: Strict<Uuid>,
1204 #[serde(rename = "rowIdColumn")]
1205 row_id_column: Strict<String>,
1206 #[serde(rename = "table")]
1207 table: Strict<TableBinding>,
1208 }
1209 let wire = __Wire::deserialize(deserializer)?;
1210 Ok(Self {
1211 attempt: wire.attempt.0,
1212 base: wire.base.0,
1213 row_id_column: wire.row_id_column.0,
1214 table: wire.table.0,
1215 })
1216 }
1217}
1218
1219#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
1222pub struct DirectRead {
1223 #[serde(rename = "credential")]
1225 pub credential: StorageCredential,
1226 #[serde(rename = "rootUri")]
1228 pub root_uri: String,
1229}
1230impl<'de> DeserializeStrict<'de> for DirectRead {
1231 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1232 #[derive(Deserialize)]
1233 #[serde(deny_unknown_fields)]
1234 struct __Wire {
1235 #[serde(rename = "credential")]
1236 credential: Strict<StorageCredential>,
1237 #[serde(rename = "rootUri")]
1238 root_uri: Strict<String>,
1239 }
1240 let wire = __Wire::deserialize(deserializer)?;
1241 Ok(Self {
1242 credential: wire.credential.0,
1243 root_uri: wire.root_uri.0,
1244 })
1245 }
1246}
1247
1248#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
1253pub struct EditBase {
1254 #[serde(rename = "schemaChanges")]
1256 #[serde(default, skip_serializing_if = "Option::is_none")]
1257 pub schema_changes: Option<Vec<SchemaChange>>,
1258 #[serde(rename = "versionId")]
1260 pub version_id: Uuid,
1261}
1262impl<'de> DeserializeStrict<'de> for EditBase {
1263 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1264 #[derive(Deserialize)]
1265 #[serde(deny_unknown_fields)]
1266 struct __Wire {
1267 #[serde(rename = "schemaChanges")]
1268 #[serde(default)]
1269 schema_changes: Strict<Option<Vec<SchemaChange>>>,
1270 #[serde(rename = "versionId")]
1271 version_id: Strict<Uuid>,
1272 }
1273 let wire = __Wire::deserialize(deserializer)?;
1274 Ok(Self {
1275 schema_changes: wire.schema_changes.0,
1276 version_id: wire.version_id.0,
1277 })
1278 }
1279}
1280
1281#[derive(Clone, Debug, PartialEq)]
1286pub enum Emit {
1287 Aggregate(Aggregate),
1289 TopK(TopK),
1291 Unknown { tag: String, value: Value },
1293}
1294impl Serialize for Emit {
1295 fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1296 match self {
1297 Self::Aggregate(value) => {
1298 let mut object = serde_json::Map::new();
1299 object.insert("type".into(), Value::String("aggregate".into()));
1300 object.insert(
1301 "aggregate".into(),
1302 serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
1303 );
1304 Value::Object(object).serialize(serializer)
1305 }
1306 Self::TopK(value) => {
1307 let mut object = serde_json::Map::new();
1308 object.insert("type".into(), Value::String("topK".into()));
1309 object.insert(
1310 "topK".into(),
1311 serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
1312 );
1313 Value::Object(object).serialize(serializer)
1314 }
1315 Self::Unknown { tag, value } => {
1316 if value.get("type").and_then(Value::as_str) != Some(tag.as_str()) {
1317 return Err(serde::ser::Error::custom(
1318 "unknown union discriminator mismatch",
1319 ));
1320 }
1321 value.serialize(serializer)
1322 }
1323 }
1324 }
1325}
1326impl<'de> Deserialize<'de> for Emit {
1327 fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1328 let value = Value::deserialize(deserializer)?;
1329 let tag = value
1330 .get("type")
1331 .and_then(Value::as_str)
1332 .ok_or_else(|| serde::de::Error::custom("union requires type"))?;
1333 match tag {
1334 "aggregate" => Ok(Self::Aggregate(
1335 serde_json::from_value(
1336 value
1337 .get("aggregate")
1338 .cloned()
1339 .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
1340 )
1341 .map_err(serde::de::Error::custom)?,
1342 )),
1343 "topK" => Ok(Self::TopK(
1344 serde_json::from_value(
1345 value
1346 .get("topK")
1347 .cloned()
1348 .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
1349 )
1350 .map_err(serde::de::Error::custom)?,
1351 )),
1352 tag => Ok(Self::Unknown {
1353 tag: tag.to_owned(),
1354 value,
1355 }),
1356 }
1357 }
1358}
1359impl<'de> DeserializeStrict<'de> for Emit {
1360 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1361 #[derive(Deserialize)]
1362 enum __Tag0 {
1363 #[serde(rename = "aggregate")]
1364 Value,
1365 }
1366 #[derive(Deserialize)]
1367 #[serde(deny_unknown_fields)]
1368 struct __Arm0 {
1369 #[serde(rename = "type")]
1370 _tag: __Tag0,
1371 #[serde(rename = "aggregate")]
1372 value: Strict<Aggregate>,
1373 }
1374 #[derive(Deserialize)]
1375 enum __Tag1 {
1376 #[serde(rename = "topK")]
1377 Value,
1378 }
1379 #[derive(Deserialize)]
1380 #[serde(deny_unknown_fields)]
1381 struct __Arm1 {
1382 #[serde(rename = "type")]
1383 _tag: __Tag1,
1384 #[serde(rename = "topK")]
1385 value: Strict<TopK>,
1386 }
1387 #[derive(Deserialize)]
1388 #[serde(untagged)]
1389 enum __Known {
1390 Aggregate(Box<__Arm0>),
1391 TopK(Box<__Arm1>),
1392 }
1393 Ok(match __Known::deserialize(deserializer)? {
1394 __Known::Aggregate(arm) => Self::Aggregate(arm.value.0),
1395 __Known::TopK(arm) => Self::TopK(arm.value.0),
1396 })
1397 }
1398}
1399
1400#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
1402pub struct EvaluateRequest {
1403 #[serde(rename = "projection")]
1405 pub projection: Vec<NamedExpression>,
1406 #[serde(rename = "tables")]
1408 pub tables: Vec<TableBinding>,
1409}
1410impl<'de> DeserializeStrict<'de> for EvaluateRequest {
1411 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1412 #[derive(Deserialize)]
1413 #[serde(deny_unknown_fields)]
1414 struct __Wire {
1415 #[serde(rename = "projection")]
1416 projection: Strict<Vec<NamedExpression>>,
1417 #[serde(rename = "tables")]
1418 tables: Strict<Vec<TableBinding>>,
1419 }
1420 let wire = __Wire::deserialize(deserializer)?;
1421 Ok(Self {
1422 projection: wire.projection.0,
1423 tables: wire.tables.0,
1424 })
1425 }
1426}
1427
1428#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
1433pub struct ExecutionOptions {
1434 #[serde(rename = "caller")]
1436 #[serde(default, skip_serializing_if = "Option::is_none")]
1437 pub caller: Option<String>,
1438 #[serde(rename = "partition")]
1440 #[serde(default, skip_serializing_if = "Option::is_none")]
1441 pub partition: Option<u32>,
1442 #[serde(rename = "profile")]
1444 pub profile: bool,
1445}
1446impl<'de> DeserializeStrict<'de> for ExecutionOptions {
1447 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1448 #[derive(Deserialize)]
1449 #[serde(deny_unknown_fields)]
1450 struct __Wire {
1451 #[serde(rename = "caller")]
1452 #[serde(default)]
1453 caller: Strict<Option<String>>,
1454 #[serde(rename = "partition")]
1455 #[serde(default)]
1456 partition: Strict<Option<u32>>,
1457 #[serde(rename = "profile")]
1458 profile: Strict<bool>,
1459 }
1460 let wire = __Wire::deserialize(deserializer)?;
1461 Ok(Self {
1462 caller: wire.caller.0,
1463 partition: wire.partition.0,
1464 profile: wire.profile.0,
1465 })
1466 }
1467}
1468
1469#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
1473#[serde(transparent)]
1474pub struct Expression(pub String);
1475impl std::fmt::Display for Expression {
1476 fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
1477 self.0.fmt(formatter)
1478 }
1479}
1480impl<'de> DeserializeStrict<'de> for Expression {
1481 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1482 Ok(Self(Strict::<String>::deserialize(deserializer)?.0))
1483 }
1484}
1485
1486#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
1488pub struct FilterClause {
1489 #[serde(rename = "expression")]
1491 pub expression: Expression,
1492 #[serde(rename = "reason")]
1494 #[serde(default, skip_serializing_if = "Option::is_none")]
1495 pub reason: Option<String>,
1496 #[serde(rename = "support")]
1498 pub support: FilterSupport,
1499}
1500impl<'de> DeserializeStrict<'de> for FilterClause {
1501 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1502 #[derive(Deserialize)]
1503 #[serde(deny_unknown_fields)]
1504 struct __Wire {
1505 #[serde(rename = "expression")]
1506 expression: Strict<Expression>,
1507 #[serde(rename = "reason")]
1508 #[serde(default)]
1509 reason: Strict<Option<String>>,
1510 #[serde(rename = "support")]
1511 support: Strict<FilterSupport>,
1512 }
1513 let wire = __Wire::deserialize(deserializer)?;
1514 Ok(Self {
1515 expression: wire.expression.0,
1516 reason: wire.reason.0,
1517 support: wire.support.0,
1518 })
1519 }
1520}
1521
1522#[derive(Clone, Debug, PartialEq, Eq)]
1524pub enum FilterSupport {
1525 Exact,
1527 Inexact,
1529 Unsupported,
1531 Unknown(String),
1533}
1534impl Serialize for FilterSupport {
1535 fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1536 serializer.serialize_str(match self {
1537 Self::Exact => "exact",
1538 Self::Inexact => "inexact",
1539 Self::Unsupported => "unsupported",
1540 Self::Unknown(value) => value,
1541 })
1542 }
1543}
1544impl<'de> Deserialize<'de> for FilterSupport {
1545 fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1546 Ok(match String::deserialize(deserializer)?.as_str() {
1547 "exact" => Self::Exact,
1548 "inexact" => Self::Inexact,
1549 "unsupported" => Self::Unsupported,
1550 value => Self::Unknown(value.to_owned()),
1551 })
1552 }
1553}
1554impl<'de> DeserializeStrict<'de> for FilterSupport {
1555 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1556 #[derive(Deserialize)]
1557 enum __Known {
1558 #[serde(rename = "exact")]
1559 Exact,
1560 #[serde(rename = "inexact")]
1561 Inexact,
1562 #[serde(rename = "unsupported")]
1563 Unsupported,
1564 }
1565 Ok(match __Known::deserialize(deserializer)? {
1566 __Known::Exact => Self::Exact,
1567 __Known::Inexact => Self::Inexact,
1568 __Known::Unsupported => Self::Unsupported,
1569 })
1570 }
1571}
1572
1573#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
1577pub struct FinalizeWriteRequest {
1578 #[serde(rename = "base")]
1580 pub base: WriteBase,
1581 #[serde(rename = "receipts")]
1583 pub receipts: Vec<FragmentReceipt>,
1584 #[serde(rename = "table")]
1586 pub table: TableBinding,
1587}
1588impl<'de> DeserializeStrict<'de> for FinalizeWriteRequest {
1589 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1590 #[derive(Deserialize)]
1591 #[serde(deny_unknown_fields)]
1592 struct __Wire {
1593 #[serde(rename = "base")]
1594 base: Strict<WriteBase>,
1595 #[serde(rename = "receipts")]
1596 receipts: Strict<Vec<FragmentReceipt>>,
1597 #[serde(rename = "table")]
1598 table: Strict<TableBinding>,
1599 }
1600 let wire = __Wire::deserialize(deserializer)?;
1601 Ok(Self {
1602 base: wire.base.0,
1603 receipts: wire.receipts.0,
1604 table: wire.table.0,
1605 })
1606 }
1607}
1608
1609#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
1611pub struct FragmentChange {
1612 #[serde(rename = "change")]
1614 pub change: FragmentDelta,
1615 #[serde(rename = "fragmentId")]
1617 pub fragment_id: Uuid,
1618 #[serde(rename = "rowCount")]
1620 pub row_count: SafeUnsignedLong,
1621}
1622impl<'de> DeserializeStrict<'de> for FragmentChange {
1623 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1624 #[derive(Deserialize)]
1625 #[serde(deny_unknown_fields)]
1626 struct __Wire {
1627 #[serde(rename = "change")]
1628 change: Strict<FragmentDelta>,
1629 #[serde(rename = "fragmentId")]
1630 fragment_id: Strict<Uuid>,
1631 #[serde(rename = "rowCount")]
1632 row_count: Strict<SafeUnsignedLong>,
1633 }
1634 let wire = __Wire::deserialize(deserializer)?;
1635 Ok(Self {
1636 change: wire.change.0,
1637 fragment_id: wire.fragment_id.0,
1638 row_count: wire.row_count.0,
1639 })
1640 }
1641}
1642
1643#[derive(Clone, Debug, PartialEq, Eq)]
1646pub enum FragmentDelta {
1647 Added(AddedFragment),
1649 Retained(RetainedFragment),
1651 Unknown { tag: String, value: Value },
1653}
1654impl Serialize for FragmentDelta {
1655 fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1656 match self {
1657 Self::Added(value) => {
1658 let mut object = serde_json::Map::new();
1659 object.insert("type".into(), Value::String("added".into()));
1660 object.insert(
1661 "added".into(),
1662 serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
1663 );
1664 Value::Object(object).serialize(serializer)
1665 }
1666 Self::Retained(value) => {
1667 let mut object = serde_json::Map::new();
1668 object.insert("type".into(), Value::String("retained".into()));
1669 object.insert(
1670 "retained".into(),
1671 serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
1672 );
1673 Value::Object(object).serialize(serializer)
1674 }
1675 Self::Unknown { tag, value } => {
1676 if value.get("type").and_then(Value::as_str) != Some(tag.as_str()) {
1677 return Err(serde::ser::Error::custom(
1678 "unknown union discriminator mismatch",
1679 ));
1680 }
1681 value.serialize(serializer)
1682 }
1683 }
1684 }
1685}
1686impl<'de> Deserialize<'de> for FragmentDelta {
1687 fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1688 let value = Value::deserialize(deserializer)?;
1689 let tag = value
1690 .get("type")
1691 .and_then(Value::as_str)
1692 .ok_or_else(|| serde::de::Error::custom("union requires type"))?;
1693 match tag {
1694 "added" => Ok(Self::Added(
1695 serde_json::from_value(
1696 value
1697 .get("added")
1698 .cloned()
1699 .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
1700 )
1701 .map_err(serde::de::Error::custom)?,
1702 )),
1703 "retained" => Ok(Self::Retained(
1704 serde_json::from_value(
1705 value
1706 .get("retained")
1707 .cloned()
1708 .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
1709 )
1710 .map_err(serde::de::Error::custom)?,
1711 )),
1712 tag => Ok(Self::Unknown {
1713 tag: tag.to_owned(),
1714 value,
1715 }),
1716 }
1717 }
1718}
1719impl<'de> DeserializeStrict<'de> for FragmentDelta {
1720 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1721 #[derive(Deserialize)]
1722 enum __Tag0 {
1723 #[serde(rename = "added")]
1724 Value,
1725 }
1726 #[derive(Deserialize)]
1727 #[serde(deny_unknown_fields)]
1728 struct __Arm0 {
1729 #[serde(rename = "type")]
1730 _tag: __Tag0,
1731 #[serde(rename = "added")]
1732 value: Strict<AddedFragment>,
1733 }
1734 #[derive(Deserialize)]
1735 enum __Tag1 {
1736 #[serde(rename = "retained")]
1737 Value,
1738 }
1739 #[derive(Deserialize)]
1740 #[serde(deny_unknown_fields)]
1741 struct __Arm1 {
1742 #[serde(rename = "type")]
1743 _tag: __Tag1,
1744 #[serde(rename = "retained")]
1745 value: Strict<RetainedFragment>,
1746 }
1747 #[derive(Deserialize)]
1748 #[serde(untagged)]
1749 enum __Known {
1750 Added(Box<__Arm0>),
1751 Retained(Box<__Arm1>),
1752 }
1753 Ok(match __Known::deserialize(deserializer)? {
1754 __Known::Added(arm) => Self::Added(arm.value.0),
1755 __Known::Retained(arm) => Self::Retained(arm.value.0),
1756 })
1757 }
1758}
1759
1760#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
1762pub struct FragmentReceipt {
1763 #[serde(rename = "token")]
1765 pub token: String,
1766}
1767impl<'de> DeserializeStrict<'de> for FragmentReceipt {
1768 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1769 #[derive(Deserialize)]
1770 #[serde(deny_unknown_fields)]
1771 struct __Wire {
1772 #[serde(rename = "token")]
1773 token: Strict<String>,
1774 }
1775 let wire = __Wire::deserialize(deserializer)?;
1776 Ok(Self {
1777 token: wire.token.0,
1778 })
1779 }
1780}
1781
1782#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
1784pub struct FunctionAlias {
1785 #[serde(rename = "name")]
1787 pub name: String,
1788 #[serde(rename = "source")]
1790 pub source: String,
1791}
1792impl<'de> DeserializeStrict<'de> for FunctionAlias {
1793 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1794 #[derive(Deserialize)]
1795 #[serde(deny_unknown_fields)]
1796 struct __Wire {
1797 #[serde(rename = "name")]
1798 name: Strict<String>,
1799 #[serde(rename = "source")]
1800 source: Strict<String>,
1801 }
1802 let wire = __Wire::deserialize(deserializer)?;
1803 Ok(Self {
1804 name: wire.name.0,
1805 source: wire.source.0,
1806 })
1807 }
1808}
1809
1810#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
1812pub struct FunctionCatalog {
1813 #[serde(rename = "functions")]
1815 pub functions: Vec<FunctionInfo>,
1816}
1817impl<'de> DeserializeStrict<'de> for FunctionCatalog {
1818 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1819 #[derive(Deserialize)]
1820 #[serde(deny_unknown_fields)]
1821 struct __Wire {
1822 #[serde(rename = "functions")]
1823 functions: Strict<Vec<FunctionInfo>>,
1824 }
1825 let wire = __Wire::deserialize(deserializer)?;
1826 Ok(Self {
1827 functions: wire.functions.0,
1828 })
1829 }
1830}
1831
1832#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
1834pub struct FunctionInfo {
1835 #[serde(rename = "aliases")]
1837 #[serde(default, skip_serializing_if = "Option::is_none")]
1838 pub aliases: Option<Vec<FunctionAlias>>,
1839 #[serde(rename = "id")]
1841 pub id: String,
1842 #[serde(rename = "overloads")]
1844 pub overloads: Vec<OverloadInfo>,
1845 #[serde(rename = "volatility")]
1847 pub volatility: FunctionVolatility,
1848}
1849impl<'de> DeserializeStrict<'de> for FunctionInfo {
1850 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1851 #[derive(Deserialize)]
1852 #[serde(deny_unknown_fields)]
1853 struct __Wire {
1854 #[serde(rename = "aliases")]
1855 #[serde(default)]
1856 aliases: Strict<Option<Vec<FunctionAlias>>>,
1857 #[serde(rename = "id")]
1858 id: Strict<String>,
1859 #[serde(rename = "overloads")]
1860 overloads: Strict<Vec<OverloadInfo>>,
1861 #[serde(rename = "volatility")]
1862 volatility: Strict<FunctionVolatility>,
1863 }
1864 let wire = __Wire::deserialize(deserializer)?;
1865 Ok(Self {
1866 aliases: wire.aliases.0,
1867 id: wire.id.0,
1868 overloads: wire.overloads.0,
1869 volatility: wire.volatility.0,
1870 })
1871 }
1872}
1873
1874#[derive(Clone, Debug, PartialEq, Eq)]
1876pub enum FunctionVolatility {
1877 Immutable,
1879 Stable,
1881 Volatile,
1883 Unknown(String),
1885}
1886impl Serialize for FunctionVolatility {
1887 fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
1888 serializer.serialize_str(match self {
1889 Self::Immutable => "immutable",
1890 Self::Stable => "stable",
1891 Self::Volatile => "volatile",
1892 Self::Unknown(value) => value,
1893 })
1894 }
1895}
1896impl<'de> Deserialize<'de> for FunctionVolatility {
1897 fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1898 Ok(match String::deserialize(deserializer)?.as_str() {
1899 "immutable" => Self::Immutable,
1900 "stable" => Self::Stable,
1901 "volatile" => Self::Volatile,
1902 value => Self::Unknown(value.to_owned()),
1903 })
1904 }
1905}
1906impl<'de> DeserializeStrict<'de> for FunctionVolatility {
1907 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1908 #[derive(Deserialize)]
1909 enum __Known {
1910 #[serde(rename = "immutable")]
1911 Immutable,
1912 #[serde(rename = "stable")]
1913 Stable,
1914 #[serde(rename = "volatile")]
1915 Volatile,
1916 }
1917 Ok(match __Known::deserialize(deserializer)? {
1918 __Known::Immutable => Self::Immutable,
1919 __Known::Stable => Self::Stable,
1920 __Known::Volatile => Self::Volatile,
1921 })
1922 }
1923}
1924
1925#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
1927pub struct GenesisBase {
1928 #[serde(rename = "schema")]
1930 pub schema: ArrowSchema,
1931}
1932impl<'de> DeserializeStrict<'de> for GenesisBase {
1933 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1934 #[derive(Deserialize)]
1935 #[serde(deny_unknown_fields)]
1936 struct __Wire {
1937 #[serde(rename = "schema")]
1938 schema: Strict<ArrowSchema>,
1939 }
1940 let wire = __Wire::deserialize(deserializer)?;
1941 Ok(Self {
1942 schema: wire.schema.0,
1943 })
1944 }
1945}
1946
1947#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
1951pub struct HistogramAggregate {
1952 #[serde(rename = "bins")]
1954 pub bins: u32,
1955 #[serde(rename = "column")]
1957 pub column: String,
1958 #[serde(rename = "start")]
1960 pub start: f64,
1961 #[serde(rename = "width")]
1963 pub width: f64,
1964}
1965impl<'de> DeserializeStrict<'de> for HistogramAggregate {
1966 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
1967 #[derive(Deserialize)]
1968 #[serde(deny_unknown_fields)]
1969 struct __Wire {
1970 #[serde(rename = "bins")]
1971 bins: Strict<u32>,
1972 #[serde(rename = "column")]
1973 column: Strict<String>,
1974 #[serde(rename = "start")]
1975 start: Strict<f64>,
1976 #[serde(rename = "width")]
1977 width: Strict<f64>,
1978 }
1979 let wire = __Wire::deserialize(deserializer)?;
1980 Ok(Self {
1981 bins: wire.bins.0,
1982 column: wire.column.0,
1983 start: wire.start.0,
1984 width: wire.width.0,
1985 })
1986 }
1987}
1988
1989#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
1995pub struct LegacyFilter {
1996 #[serde(rename = "field")]
1998 pub field: String,
1999 #[serde(rename = "kind")]
2001 pub kind: String,
2002 #[serde(rename = "operator")]
2004 pub operator: String,
2005 #[serde(rename = "value")]
2007 #[serde(default, skip_serializing_if = "Option::is_none")]
2008 pub value: Option<String>,
2009}
2010impl<'de> DeserializeStrict<'de> for LegacyFilter {
2011 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2012 #[derive(Deserialize)]
2013 #[serde(deny_unknown_fields)]
2014 struct __Wire {
2015 #[serde(rename = "field")]
2016 field: Strict<String>,
2017 #[serde(rename = "kind")]
2018 kind: Strict<String>,
2019 #[serde(rename = "operator")]
2020 operator: Strict<String>,
2021 #[serde(rename = "value")]
2022 #[serde(default)]
2023 value: Strict<Option<String>>,
2024 }
2025 let wire = __Wire::deserialize(deserializer)?;
2026 Ok(Self {
2027 field: wire.field.0,
2028 kind: wire.kind.0,
2029 operator: wire.operator.0,
2030 value: wire.value.0,
2031 })
2032 }
2033}
2034
2035#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
2040#[serde(transparent)]
2041pub struct LegacyTableSnapshot(pub Value);
2042impl<'de> DeserializeStrict<'de> for LegacyTableSnapshot {
2043 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2044 Ok(Self(Strict::<Value>::deserialize(deserializer)?.0))
2045 }
2046}
2047
2048#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
2050pub struct MoveColumn {
2051 #[serde(rename = "after")]
2053 #[serde(default, skip_serializing_if = "Option::is_none")]
2054 pub after: Option<Vec<String>>,
2055 #[serde(rename = "path")]
2057 pub path: Vec<String>,
2058}
2059impl<'de> DeserializeStrict<'de> for MoveColumn {
2060 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2061 #[derive(Deserialize)]
2062 #[serde(deny_unknown_fields)]
2063 struct __Wire {
2064 #[serde(rename = "after")]
2065 #[serde(default)]
2066 after: Strict<Option<Vec<String>>>,
2067 #[serde(rename = "path")]
2068 path: Strict<Vec<String>>,
2069 }
2070 let wire = __Wire::deserialize(deserializer)?;
2071 Ok(Self {
2072 after: wire.after.0,
2073 path: wire.path.0,
2074 })
2075 }
2076}
2077
2078#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
2080pub struct NamedAggregate {
2081 #[serde(rename = "function")]
2083 pub function: AggregateFunction,
2084 #[serde(rename = "name")]
2086 pub name: String,
2087}
2088impl<'de> DeserializeStrict<'de> for NamedAggregate {
2089 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2090 #[derive(Deserialize)]
2091 #[serde(deny_unknown_fields)]
2092 struct __Wire {
2093 #[serde(rename = "function")]
2094 function: Strict<AggregateFunction>,
2095 #[serde(rename = "name")]
2096 name: Strict<String>,
2097 }
2098 let wire = __Wire::deserialize(deserializer)?;
2099 Ok(Self {
2100 function: wire.function.0,
2101 name: wire.name.0,
2102 })
2103 }
2104}
2105
2106#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
2108pub struct NamedExpression {
2109 #[serde(rename = "expression")]
2111 pub expression: Expression,
2112 #[serde(rename = "name")]
2114 pub name: String,
2115}
2116impl<'de> DeserializeStrict<'de> for NamedExpression {
2117 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2118 #[derive(Deserialize)]
2119 #[serde(deny_unknown_fields)]
2120 struct __Wire {
2121 #[serde(rename = "expression")]
2122 expression: Strict<Expression>,
2123 #[serde(rename = "name")]
2124 name: Strict<String>,
2125 }
2126 let wire = __Wire::deserialize(deserializer)?;
2127 Ok(Self {
2128 expression: wire.expression.0,
2129 name: wire.name.0,
2130 })
2131 }
2132}
2133
2134#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
2136pub struct OverloadInfo {
2137 #[serde(rename = "asynchronous")]
2139 #[serde(default, skip_serializing_if = "Option::is_none")]
2140 pub asynchronous: Option<bool>,
2141 #[serde(rename = "name")]
2143 pub name: String,
2144 #[serde(rename = "parameters")]
2146 pub parameters: Vec<ParameterInfo>,
2147 #[serde(rename = "summary")]
2149 pub summary: String,
2150}
2151impl<'de> DeserializeStrict<'de> for OverloadInfo {
2152 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2153 #[derive(Deserialize)]
2154 #[serde(deny_unknown_fields)]
2155 struct __Wire {
2156 #[serde(rename = "asynchronous")]
2157 #[serde(default)]
2158 asynchronous: Strict<Option<bool>>,
2159 #[serde(rename = "name")]
2160 name: Strict<String>,
2161 #[serde(rename = "parameters")]
2162 parameters: Strict<Vec<ParameterInfo>>,
2163 #[serde(rename = "summary")]
2164 summary: Strict<String>,
2165 }
2166 let wire = __Wire::deserialize(deserializer)?;
2167 Ok(Self {
2168 asynchronous: wire.asynchronous.0,
2169 name: wire.name.0,
2170 parameters: wire.parameters.0,
2171 summary: wire.summary.0,
2172 })
2173 }
2174}
2175
2176#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
2178pub struct PackBlobsRequest {
2179 #[serde(rename = "attempt")]
2181 #[serde(default, skip_serializing_if = "Option::is_none")]
2182 pub attempt: Option<Uuid>,
2183 #[serde(rename = "table")]
2185 pub table: TableBinding,
2186}
2187impl<'de> DeserializeStrict<'de> for PackBlobsRequest {
2188 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2189 #[derive(Deserialize)]
2190 #[serde(deny_unknown_fields)]
2191 struct __Wire {
2192 #[serde(rename = "attempt")]
2193 #[serde(default)]
2194 attempt: Strict<Option<Uuid>>,
2195 #[serde(rename = "table")]
2196 table: Strict<TableBinding>,
2197 }
2198 let wire = __Wire::deserialize(deserializer)?;
2199 Ok(Self {
2200 attempt: wire.attempt.0,
2201 table: wire.table.0,
2202 })
2203 }
2204}
2205
2206#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
2208pub struct ParameterInfo {
2209 #[serde(rename = "accepts")]
2211 pub accepts: String,
2212 #[serde(rename = "literal")]
2214 pub literal: bool,
2215 #[serde(rename = "name")]
2217 pub name: String,
2218 #[serde(rename = "required")]
2220 pub required: bool,
2221}
2222impl<'de> DeserializeStrict<'de> for ParameterInfo {
2223 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2224 #[derive(Deserialize)]
2225 #[serde(deny_unknown_fields)]
2226 struct __Wire {
2227 #[serde(rename = "accepts")]
2228 accepts: Strict<String>,
2229 #[serde(rename = "literal")]
2230 literal: Strict<bool>,
2231 #[serde(rename = "name")]
2232 name: Strict<String>,
2233 #[serde(rename = "required")]
2234 required: Strict<bool>,
2235 }
2236 let wire = __Wire::deserialize(deserializer)?;
2237 Ok(Self {
2238 accepts: wire.accepts.0,
2239 literal: wire.literal.0,
2240 name: wire.name.0,
2241 required: wire.required.0,
2242 })
2243 }
2244}
2245
2246#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
2248pub struct PartitionColumn {
2249 #[serde(rename = "path")]
2251 pub path: Vec<String>,
2252 #[serde(rename = "transform")]
2254 pub transform: String,
2255}
2256impl<'de> DeserializeStrict<'de> for PartitionColumn {
2257 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2258 #[derive(Deserialize)]
2259 #[serde(deny_unknown_fields)]
2260 struct __Wire {
2261 #[serde(rename = "path")]
2262 path: Strict<Vec<String>>,
2263 #[serde(rename = "transform")]
2264 transform: Strict<String>,
2265 }
2266 let wire = __Wire::deserialize(deserializer)?;
2267 Ok(Self {
2268 path: wire.path.0,
2269 transform: wire.transform.0,
2270 })
2271 }
2272}
2273
2274#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
2279pub struct PatchRowsRequest {
2280 #[serde(rename = "attempt")]
2282 #[serde(default, skip_serializing_if = "Option::is_none")]
2283 pub attempt: Option<Uuid>,
2284 #[serde(rename = "base")]
2286 pub base: Uuid,
2287 #[serde(rename = "rowIdColumn")]
2289 pub row_id_column: String,
2290 #[serde(rename = "schemaChanges")]
2292 #[serde(default, skip_serializing_if = "Option::is_none")]
2293 pub schema_changes: Option<Vec<SchemaChange>>,
2294 #[serde(rename = "table")]
2296 pub table: TableBinding,
2297}
2298impl<'de> DeserializeStrict<'de> for PatchRowsRequest {
2299 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2300 #[derive(Deserialize)]
2301 #[serde(deny_unknown_fields)]
2302 struct __Wire {
2303 #[serde(rename = "attempt")]
2304 #[serde(default)]
2305 attempt: Strict<Option<Uuid>>,
2306 #[serde(rename = "base")]
2307 base: Strict<Uuid>,
2308 #[serde(rename = "rowIdColumn")]
2309 row_id_column: Strict<String>,
2310 #[serde(rename = "schemaChanges")]
2311 #[serde(default)]
2312 schema_changes: Strict<Option<Vec<SchemaChange>>>,
2313 #[serde(rename = "table")]
2314 table: Strict<TableBinding>,
2315 }
2316 let wire = __Wire::deserialize(deserializer)?;
2317 Ok(Self {
2318 attempt: wire.attempt.0,
2319 base: wire.base.0,
2320 row_id_column: wire.row_id_column.0,
2321 schema_changes: wire.schema_changes.0,
2322 table: wire.table.0,
2323 })
2324 }
2325}
2326
2327#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
2331pub struct PlanChangesRequest {
2332 #[serde(rename = "columns")]
2334 #[serde(default, skip_serializing_if = "Option::is_none")]
2335 pub columns: Option<Vec<String>>,
2336 #[serde(rename = "from")]
2338 pub from: Uuid,
2339 #[serde(rename = "storage")]
2341 #[serde(default, skip_serializing_if = "Option::is_none")]
2342 pub storage: Option<StorageBinding>,
2343 #[serde(rename = "table")]
2345 pub table: Uuid,
2346 #[serde(rename = "to")]
2348 pub to: Uuid,
2349}
2350impl<'de> DeserializeStrict<'de> for PlanChangesRequest {
2351 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2352 #[derive(Deserialize)]
2353 #[serde(deny_unknown_fields)]
2354 struct __Wire {
2355 #[serde(rename = "columns")]
2356 #[serde(default)]
2357 columns: Strict<Option<Vec<String>>>,
2358 #[serde(rename = "from")]
2359 from: Strict<Uuid>,
2360 #[serde(rename = "storage")]
2361 #[serde(default)]
2362 storage: Strict<Option<StorageBinding>>,
2363 #[serde(rename = "table")]
2364 table: Strict<Uuid>,
2365 #[serde(rename = "to")]
2366 to: Strict<Uuid>,
2367 }
2368 let wire = __Wire::deserialize(deserializer)?;
2369 Ok(Self {
2370 columns: wire.columns.0,
2371 from: wire.from.0,
2372 storage: wire.storage.0,
2373 table: wire.table.0,
2374 to: wire.to.0,
2375 })
2376 }
2377}
2378
2379#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
2381pub struct PlanScanRequest {
2382 #[serde(rename = "scan")]
2384 pub scan: Scan,
2385 #[serde(rename = "storage")]
2387 #[serde(default, skip_serializing_if = "Option::is_none")]
2388 pub storage: Option<StorageBinding>,
2389}
2390impl<'de> DeserializeStrict<'de> for PlanScanRequest {
2391 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2392 #[derive(Deserialize)]
2393 #[serde(deny_unknown_fields)]
2394 struct __Wire {
2395 #[serde(rename = "scan")]
2396 scan: Strict<Scan>,
2397 #[serde(rename = "storage")]
2398 #[serde(default)]
2399 storage: Strict<Option<StorageBinding>>,
2400 }
2401 let wire = __Wire::deserialize(deserializer)?;
2402 Ok(Self {
2403 scan: wire.scan.0,
2404 storage: wire.storage.0,
2405 })
2406 }
2407}
2408
2409#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
2412pub struct PlannedSplit {
2413 #[serde(rename = "estimatedBytes")]
2415 #[serde(default, skip_serializing_if = "Option::is_none")]
2416 pub estimated_bytes: Option<SafeUnsignedLong>,
2417 #[serde(rename = "estimatedRows")]
2419 #[serde(default, skip_serializing_if = "Option::is_none")]
2420 pub estimated_rows: Option<SafeUnsignedLong>,
2421 #[serde(rename = "fragmentId")]
2423 #[serde(default, skip_serializing_if = "Option::is_none")]
2424 pub fragment_id: Option<Uuid>,
2425 #[serde(rename = "ordering")]
2427 #[serde(default, skip_serializing_if = "Option::is_none")]
2428 pub ordering: Option<Vec<SortColumn>>,
2429 #[serde(rename = "split")]
2431 pub split: Split,
2432}
2433impl<'de> DeserializeStrict<'de> for PlannedSplit {
2434 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2435 #[derive(Deserialize)]
2436 #[serde(deny_unknown_fields)]
2437 struct __Wire {
2438 #[serde(rename = "estimatedBytes")]
2439 #[serde(default)]
2440 estimated_bytes: Strict<Option<SafeUnsignedLong>>,
2441 #[serde(rename = "estimatedRows")]
2442 #[serde(default)]
2443 estimated_rows: Strict<Option<SafeUnsignedLong>>,
2444 #[serde(rename = "fragmentId")]
2445 #[serde(default)]
2446 fragment_id: Strict<Option<Uuid>>,
2447 #[serde(rename = "ordering")]
2448 #[serde(default)]
2449 ordering: Strict<Option<Vec<SortColumn>>>,
2450 #[serde(rename = "split")]
2451 split: Strict<Split>,
2452 }
2453 let wire = __Wire::deserialize(deserializer)?;
2454 Ok(Self {
2455 estimated_bytes: wire.estimated_bytes.0,
2456 estimated_rows: wire.estimated_rows.0,
2457 fragment_id: wire.fragment_id.0,
2458 ordering: wire.ordering.0,
2459 split: wire.split.0,
2460 })
2461 }
2462}
2463
2464#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
2467pub struct PreparedWriteReceipt {
2468 #[serde(rename = "baseVersion")]
2470 #[serde(default, skip_serializing_if = "Option::is_none")]
2471 pub base_version: Option<Uuid>,
2472 #[serde(rename = "resourceId")]
2474 pub resource_id: Uuid,
2475 #[serde(rename = "sequence")]
2477 pub sequence: SafeUnsignedLong,
2478 #[serde(rename = "versionId")]
2480 pub version_id: Uuid,
2481}
2482impl<'de> DeserializeStrict<'de> for PreparedWriteReceipt {
2483 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2484 #[derive(Deserialize)]
2485 #[serde(deny_unknown_fields)]
2486 struct __Wire {
2487 #[serde(rename = "baseVersion")]
2488 #[serde(default)]
2489 base_version: Strict<Option<Uuid>>,
2490 #[serde(rename = "resourceId")]
2491 resource_id: Strict<Uuid>,
2492 #[serde(rename = "sequence")]
2493 sequence: Strict<SafeUnsignedLong>,
2494 #[serde(rename = "versionId")]
2495 version_id: Strict<Uuid>,
2496 }
2497 let wire = __Wire::deserialize(deserializer)?;
2498 Ok(Self {
2499 base_version: wire.base_version.0,
2500 resource_id: wire.resource_id.0,
2501 sequence: wire.sequence.0,
2502 version_id: wire.version_id.0,
2503 })
2504 }
2505}
2506
2507#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
2509pub struct ReadBlobRequest {
2510 #[serde(rename = "blob")]
2512 pub blob: Blob,
2513 #[serde(rename = "range")]
2515 #[serde(default, skip_serializing_if = "Option::is_none")]
2516 pub range: Option<ByteRange>,
2517 #[serde(rename = "storage")]
2519 #[serde(default, skip_serializing_if = "Option::is_none")]
2520 pub storage: Option<StorageBinding>,
2521}
2522impl<'de> DeserializeStrict<'de> for ReadBlobRequest {
2523 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2524 #[derive(Deserialize)]
2525 #[serde(deny_unknown_fields)]
2526 struct __Wire {
2527 #[serde(rename = "blob")]
2528 blob: Strict<Blob>,
2529 #[serde(rename = "range")]
2530 #[serde(default)]
2531 range: Strict<Option<ByteRange>>,
2532 #[serde(rename = "storage")]
2533 #[serde(default)]
2534 storage: Strict<Option<StorageBinding>>,
2535 }
2536 let wire = __Wire::deserialize(deserializer)?;
2537 Ok(Self {
2538 blob: wire.blob.0,
2539 range: wire.range.0,
2540 storage: wire.storage.0,
2541 })
2542 }
2543}
2544
2545#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
2554pub struct ReadLegacyTableRequest {
2555 #[serde(rename = "columns")]
2557 #[serde(default, skip_serializing_if = "Option::is_none")]
2558 pub columns: Option<Vec<String>>,
2559 #[serde(rename = "filter")]
2561 #[serde(default, skip_serializing_if = "Option::is_none")]
2562 pub filter: Option<Expression>,
2563 #[serde(rename = "filters")]
2565 pub filters: Vec<LegacyFilter>,
2566 #[serde(rename = "limit")]
2568 pub limit: u32,
2569 #[serde(rename = "offset")]
2571 pub offset: u32,
2572 #[serde(rename = "scope")]
2574 pub scope: String,
2575 #[serde(rename = "snapshot")]
2577 pub snapshot: LegacyTableSnapshot,
2578 #[serde(rename = "storage")]
2580 #[serde(default, skip_serializing_if = "Option::is_none")]
2581 pub storage: Option<StorageBinding>,
2582}
2583impl<'de> DeserializeStrict<'de> for ReadLegacyTableRequest {
2584 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2585 #[derive(Deserialize)]
2586 #[serde(deny_unknown_fields)]
2587 struct __Wire {
2588 #[serde(rename = "columns")]
2589 #[serde(default)]
2590 columns: Strict<Option<Vec<String>>>,
2591 #[serde(rename = "filter")]
2592 #[serde(default)]
2593 filter: Strict<Option<Expression>>,
2594 #[serde(rename = "filters")]
2595 filters: Strict<Vec<LegacyFilter>>,
2596 #[serde(rename = "limit")]
2597 limit: Strict<u32>,
2598 #[serde(rename = "offset")]
2599 offset: Strict<u32>,
2600 #[serde(rename = "scope")]
2601 scope: Strict<String>,
2602 #[serde(rename = "snapshot")]
2603 snapshot: Strict<LegacyTableSnapshot>,
2604 #[serde(rename = "storage")]
2605 #[serde(default)]
2606 storage: Strict<Option<StorageBinding>>,
2607 }
2608 let wire = __Wire::deserialize(deserializer)?;
2609 Ok(Self {
2610 columns: wire.columns.0,
2611 filter: wire.filter.0,
2612 filters: wire.filters.0,
2613 limit: wire.limit.0,
2614 offset: wire.offset.0,
2615 scope: wire.scope.0,
2616 snapshot: wire.snapshot.0,
2617 storage: wire.storage.0,
2618 })
2619 }
2620}
2621
2622#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
2624pub struct ReadScanRequest {
2625 #[serde(rename = "scan")]
2627 pub scan: Scan,
2628 #[serde(rename = "split")]
2630 pub split: Split,
2631 #[serde(rename = "storage")]
2633 #[serde(default, skip_serializing_if = "Option::is_none")]
2634 pub storage: Option<StorageBinding>,
2635}
2636impl<'de> DeserializeStrict<'de> for ReadScanRequest {
2637 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2638 #[derive(Deserialize)]
2639 #[serde(deny_unknown_fields)]
2640 struct __Wire {
2641 #[serde(rename = "scan")]
2642 scan: Strict<Scan>,
2643 #[serde(rename = "split")]
2644 split: Strict<Split>,
2645 #[serde(rename = "storage")]
2646 #[serde(default)]
2647 storage: Strict<Option<StorageBinding>>,
2648 }
2649 let wire = __Wire::deserialize(deserializer)?;
2650 Ok(Self {
2651 scan: wire.scan.0,
2652 split: wire.split.0,
2653 storage: wire.storage.0,
2654 })
2655 }
2656}
2657
2658#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
2660pub struct RenameColumn {
2661 #[serde(rename = "name")]
2663 pub name: String,
2664 #[serde(rename = "path")]
2666 pub path: Vec<String>,
2667}
2668impl<'de> DeserializeStrict<'de> for RenameColumn {
2669 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2670 #[derive(Deserialize)]
2671 #[serde(deny_unknown_fields)]
2672 struct __Wire {
2673 #[serde(rename = "name")]
2674 name: Strict<String>,
2675 #[serde(rename = "path")]
2676 path: Strict<Vec<String>>,
2677 }
2678 let wire = __Wire::deserialize(deserializer)?;
2679 Ok(Self {
2680 name: wire.name.0,
2681 path: wire.path.0,
2682 })
2683 }
2684}
2685
2686#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
2691pub struct RetainedFragment {
2692 #[serde(rename = "deleted")]
2694 pub deleted: Vec<RowIdRange>,
2695 #[serde(rename = "patched")]
2697 pub patched: Vec<RowIdRange>,
2698}
2699impl<'de> DeserializeStrict<'de> for RetainedFragment {
2700 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2701 #[derive(Deserialize)]
2702 #[serde(deny_unknown_fields)]
2703 struct __Wire {
2704 #[serde(rename = "deleted")]
2705 deleted: Strict<Vec<RowIdRange>>,
2706 #[serde(rename = "patched")]
2707 patched: Strict<Vec<RowIdRange>>,
2708 }
2709 let wire = __Wire::deserialize(deserializer)?;
2710 Ok(Self {
2711 deleted: wire.deleted.0,
2712 patched: wire.patched.0,
2713 })
2714 }
2715}
2716
2717#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
2719pub struct RowIdRange {
2720 #[serde(rename = "end")]
2722 pub end: SafeUnsignedLong,
2723 #[serde(rename = "start")]
2725 pub start: SafeUnsignedLong,
2726}
2727impl<'de> DeserializeStrict<'de> for RowIdRange {
2728 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2729 #[derive(Deserialize)]
2730 #[serde(deny_unknown_fields)]
2731 struct __Wire {
2732 #[serde(rename = "end")]
2733 end: Strict<SafeUnsignedLong>,
2734 #[serde(rename = "start")]
2735 start: Strict<SafeUnsignedLong>,
2736 }
2737 let wire = __Wire::deserialize(deserializer)?;
2738 Ok(Self {
2739 end: wire.end.0,
2740 start: wire.start.0,
2741 })
2742 }
2743}
2744
2745#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
2747pub struct RowRange {
2748 #[serde(rename = "end")]
2750 pub end: SafeUnsignedLong,
2751 #[serde(rename = "start")]
2753 pub start: SafeUnsignedLong,
2754}
2755impl<'de> DeserializeStrict<'de> for RowRange {
2756 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2757 #[derive(Deserialize)]
2758 #[serde(deny_unknown_fields)]
2759 struct __Wire {
2760 #[serde(rename = "end")]
2761 end: Strict<SafeUnsignedLong>,
2762 #[serde(rename = "start")]
2763 start: Strict<SafeUnsignedLong>,
2764 }
2765 let wire = __Wire::deserialize(deserializer)?;
2766 Ok(Self {
2767 end: wire.end.0,
2768 start: wire.start.0,
2769 })
2770 }
2771}
2772
2773#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
2786pub struct Scan {
2787 #[serde(rename = "batchRows")]
2789 #[serde(default, skip_serializing_if = "Option::is_none")]
2790 pub batch_rows: Option<u32>,
2791 #[serde(rename = "collectMetrics")]
2793 #[serde(default, skip_serializing_if = "Option::is_none")]
2794 pub collect_metrics: Option<bool>,
2795 #[serde(rename = "columns")]
2797 #[serde(default, skip_serializing_if = "Option::is_none")]
2798 pub columns: Option<Vec<String>>,
2799 #[serde(rename = "emit")]
2801 #[serde(default, skip_serializing_if = "Option::is_none")]
2802 pub emit: Option<Emit>,
2803 #[serde(rename = "execution")]
2805 #[serde(default, skip_serializing_if = "Option::is_none")]
2806 pub execution: Option<ExecutionOptions>,
2807 #[serde(rename = "filter")]
2809 #[serde(default, skip_serializing_if = "Option::is_none")]
2810 pub filter: Option<Expression>,
2811 #[serde(rename = "limit")]
2813 #[serde(default, skip_serializing_if = "Option::is_none")]
2814 pub limit: Option<SafeUnsignedLong>,
2815 #[serde(rename = "projection")]
2817 #[serde(default, skip_serializing_if = "Option::is_none")]
2818 pub projection: Option<Vec<NamedExpression>>,
2819 #[serde(rename = "rowIdColumn")]
2821 #[serde(default, skip_serializing_if = "Option::is_none")]
2822 pub row_id_column: Option<String>,
2823 #[serde(rename = "rowIds")]
2825 #[serde(default, skip_serializing_if = "Option::is_none")]
2826 pub row_ids: Option<Vec<RowIdRange>>,
2827 #[serde(rename = "rowRange")]
2829 #[serde(default, skip_serializing_if = "Option::is_none")]
2830 pub row_range: Option<RowRange>,
2831 #[serde(rename = "table")]
2833 pub table: TableVersion,
2834}
2835impl<'de> DeserializeStrict<'de> for Scan {
2836 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2837 #[derive(Deserialize)]
2838 #[serde(deny_unknown_fields)]
2839 struct __Wire {
2840 #[serde(rename = "batchRows")]
2841 #[serde(default)]
2842 batch_rows: Strict<Option<u32>>,
2843 #[serde(rename = "collectMetrics")]
2844 #[serde(default)]
2845 collect_metrics: Strict<Option<bool>>,
2846 #[serde(rename = "columns")]
2847 #[serde(default)]
2848 columns: Strict<Option<Vec<String>>>,
2849 #[serde(rename = "emit")]
2850 #[serde(default)]
2851 emit: Strict<Option<Emit>>,
2852 #[serde(rename = "execution")]
2853 #[serde(default)]
2854 execution: Strict<Option<ExecutionOptions>>,
2855 #[serde(rename = "filter")]
2856 #[serde(default)]
2857 filter: Strict<Option<Expression>>,
2858 #[serde(rename = "limit")]
2859 #[serde(default)]
2860 limit: Strict<Option<SafeUnsignedLong>>,
2861 #[serde(rename = "projection")]
2862 #[serde(default)]
2863 projection: Strict<Option<Vec<NamedExpression>>>,
2864 #[serde(rename = "rowIdColumn")]
2865 #[serde(default)]
2866 row_id_column: Strict<Option<String>>,
2867 #[serde(rename = "rowIds")]
2868 #[serde(default)]
2869 row_ids: Strict<Option<Vec<RowIdRange>>>,
2870 #[serde(rename = "rowRange")]
2871 #[serde(default)]
2872 row_range: Strict<Option<RowRange>>,
2873 #[serde(rename = "table")]
2874 table: Strict<TableVersion>,
2875 }
2876 let wire = __Wire::deserialize(deserializer)?;
2877 Ok(Self {
2878 batch_rows: wire.batch_rows.0,
2879 collect_metrics: wire.collect_metrics.0,
2880 columns: wire.columns.0,
2881 emit: wire.emit.0,
2882 execution: wire.execution.0,
2883 filter: wire.filter.0,
2884 limit: wire.limit.0,
2885 projection: wire.projection.0,
2886 row_id_column: wire.row_id_column.0,
2887 row_ids: wire.row_ids.0,
2888 row_range: wire.row_range.0,
2889 table: wire.table.0,
2890 })
2891 }
2892}
2893
2894#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
2898pub struct ScanInfo {
2899 #[serde(rename = "filterClauses")]
2901 pub filter_clauses: Vec<FilterClause>,
2902 #[serde(rename = "schema")]
2904 pub schema: ArrowSchema,
2905 #[serde(rename = "sourceFields")]
2907 #[serde(default, skip_serializing_if = "Option::is_none")]
2908 pub source_fields: Option<BTreeMap<String, Uuid>>,
2909 #[serde(rename = "statistics")]
2911 #[serde(default, skip_serializing_if = "Option::is_none")]
2912 pub statistics: Option<ScanStatistics>,
2913 #[serde(rename = "writeLayout")]
2915 #[serde(default, skip_serializing_if = "Option::is_none")]
2916 pub write_layout: Option<WriteLayout>,
2917}
2918impl<'de> DeserializeStrict<'de> for ScanInfo {
2919 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2920 #[derive(Deserialize)]
2921 #[serde(deny_unknown_fields)]
2922 struct __Wire {
2923 #[serde(rename = "filterClauses")]
2924 filter_clauses: Strict<Vec<FilterClause>>,
2925 #[serde(rename = "schema")]
2926 schema: Strict<ArrowSchema>,
2927 #[serde(rename = "sourceFields")]
2928 #[serde(default)]
2929 source_fields: Strict<Option<BTreeMap<String, Uuid>>>,
2930 #[serde(rename = "statistics")]
2931 #[serde(default)]
2932 statistics: Strict<Option<ScanStatistics>>,
2933 #[serde(rename = "writeLayout")]
2934 #[serde(default)]
2935 write_layout: Strict<Option<WriteLayout>>,
2936 }
2937 let wire = __Wire::deserialize(deserializer)?;
2938 Ok(Self {
2939 filter_clauses: wire.filter_clauses.0,
2940 schema: wire.schema.0,
2941 source_fields: wire.source_fields.0,
2942 statistics: wire.statistics.0,
2943 write_layout: wire.write_layout.0,
2944 })
2945 }
2946}
2947
2948#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
2950pub struct ScanMetricsSnapshot {
2951 #[serde(rename = "filesConsidered")]
2953 pub files_considered: SafeUnsignedLong,
2954 #[serde(rename = "filesPruned")]
2956 pub files_pruned: SafeUnsignedLong,
2957 #[serde(rename = "fragmentsConsidered")]
2959 pub fragments_considered: SafeUnsignedLong,
2960 #[serde(rename = "fragmentsPruned")]
2962 pub fragments_pruned: SafeUnsignedLong,
2963 #[serde(rename = "outputRows")]
2965 pub output_rows: SafeUnsignedLong,
2966 #[serde(rename = "storage")]
2968 #[serde(default, skip_serializing_if = "Option::is_none")]
2969 pub storage: Option<StorageCounters>,
2970 #[serde(rename = "windows")]
2972 #[serde(default, skip_serializing_if = "Option::is_none")]
2973 pub windows: Option<WindowCounters>,
2974}
2975impl<'de> DeserializeStrict<'de> for ScanMetricsSnapshot {
2976 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
2977 #[derive(Deserialize)]
2978 #[serde(deny_unknown_fields)]
2979 struct __Wire {
2980 #[serde(rename = "filesConsidered")]
2981 files_considered: Strict<SafeUnsignedLong>,
2982 #[serde(rename = "filesPruned")]
2983 files_pruned: Strict<SafeUnsignedLong>,
2984 #[serde(rename = "fragmentsConsidered")]
2985 fragments_considered: Strict<SafeUnsignedLong>,
2986 #[serde(rename = "fragmentsPruned")]
2987 fragments_pruned: Strict<SafeUnsignedLong>,
2988 #[serde(rename = "outputRows")]
2989 output_rows: Strict<SafeUnsignedLong>,
2990 #[serde(rename = "storage")]
2991 #[serde(default)]
2992 storage: Strict<Option<StorageCounters>>,
2993 #[serde(rename = "windows")]
2994 #[serde(default)]
2995 windows: Strict<Option<WindowCounters>>,
2996 }
2997 let wire = __Wire::deserialize(deserializer)?;
2998 Ok(Self {
2999 files_considered: wire.files_considered.0,
3000 files_pruned: wire.files_pruned.0,
3001 fragments_considered: wire.fragments_considered.0,
3002 fragments_pruned: wire.fragments_pruned.0,
3003 output_rows: wire.output_rows.0,
3004 storage: wire.storage.0,
3005 windows: wire.windows.0,
3006 })
3007 }
3008}
3009
3010#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
3012pub struct ScanPlan {
3013 #[serde(rename = "info")]
3015 pub info: ScanInfo,
3016 #[serde(rename = "metrics")]
3018 #[serde(default, skip_serializing_if = "Option::is_none")]
3019 pub metrics: Option<ScanMetricsSnapshot>,
3020 #[serde(rename = "splits")]
3022 pub splits: Vec<PlannedSplit>,
3023}
3024impl<'de> DeserializeStrict<'de> for ScanPlan {
3025 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3026 #[derive(Deserialize)]
3027 #[serde(deny_unknown_fields)]
3028 struct __Wire {
3029 #[serde(rename = "info")]
3030 info: Strict<ScanInfo>,
3031 #[serde(rename = "metrics")]
3032 #[serde(default)]
3033 metrics: Strict<Option<ScanMetricsSnapshot>>,
3034 #[serde(rename = "splits")]
3035 splits: Strict<Vec<PlannedSplit>>,
3036 }
3037 let wire = __Wire::deserialize(deserializer)?;
3038 Ok(Self {
3039 info: wire.info.0,
3040 metrics: wire.metrics.0,
3041 splits: wire.splits.0,
3042 })
3043 }
3044}
3045
3046#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
3049pub struct ScanStatistics {
3050 #[serde(rename = "columns")]
3052 pub columns: Vec<ColumnStatistics>,
3053 #[serde(rename = "rowCount")]
3055 #[serde(default, skip_serializing_if = "Option::is_none")]
3056 pub row_count: Option<SafeUnsignedLong>,
3057 #[serde(rename = "rowCountExact")]
3059 pub row_count_exact: bool,
3060 #[serde(rename = "storedBytes")]
3062 #[serde(default, skip_serializing_if = "Option::is_none")]
3063 pub stored_bytes: Option<SafeUnsignedLong>,
3064}
3065impl<'de> DeserializeStrict<'de> for ScanStatistics {
3066 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3067 #[derive(Deserialize)]
3068 #[serde(deny_unknown_fields)]
3069 struct __Wire {
3070 #[serde(rename = "columns")]
3071 columns: Strict<Vec<ColumnStatistics>>,
3072 #[serde(rename = "rowCount")]
3073 #[serde(default)]
3074 row_count: Strict<Option<SafeUnsignedLong>>,
3075 #[serde(rename = "rowCountExact")]
3076 row_count_exact: Strict<bool>,
3077 #[serde(rename = "storedBytes")]
3078 #[serde(default)]
3079 stored_bytes: Strict<Option<SafeUnsignedLong>>,
3080 }
3081 let wire = __Wire::deserialize(deserializer)?;
3082 Ok(Self {
3083 columns: wire.columns.0,
3084 row_count: wire.row_count.0,
3085 row_count_exact: wire.row_count_exact.0,
3086 stored_bytes: wire.stored_bytes.0,
3087 })
3088 }
3089}
3090
3091#[derive(Clone, Debug, PartialEq, Eq)]
3096pub enum SchemaChange {
3097 AddColumn(AddColumn),
3099 DropColumn(ColumnPath),
3101 MoveColumn(MoveColumn),
3103 RenameColumn(RenameColumn),
3105 SetNullable(ColumnPath),
3107 WidenType(WidenType),
3109 Unknown { tag: String, value: Value },
3111}
3112impl Serialize for SchemaChange {
3113 fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
3114 match self {
3115 Self::AddColumn(value) => {
3116 let mut object = serde_json::Map::new();
3117 object.insert("type".into(), Value::String("addColumn".into()));
3118 object.insert(
3119 "addColumn".into(),
3120 serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
3121 );
3122 Value::Object(object).serialize(serializer)
3123 }
3124 Self::DropColumn(value) => {
3125 let mut object = serde_json::Map::new();
3126 object.insert("type".into(), Value::String("dropColumn".into()));
3127 object.insert(
3128 "dropColumn".into(),
3129 serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
3130 );
3131 Value::Object(object).serialize(serializer)
3132 }
3133 Self::MoveColumn(value) => {
3134 let mut object = serde_json::Map::new();
3135 object.insert("type".into(), Value::String("moveColumn".into()));
3136 object.insert(
3137 "moveColumn".into(),
3138 serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
3139 );
3140 Value::Object(object).serialize(serializer)
3141 }
3142 Self::RenameColumn(value) => {
3143 let mut object = serde_json::Map::new();
3144 object.insert("type".into(), Value::String("renameColumn".into()));
3145 object.insert(
3146 "renameColumn".into(),
3147 serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
3148 );
3149 Value::Object(object).serialize(serializer)
3150 }
3151 Self::SetNullable(value) => {
3152 let mut object = serde_json::Map::new();
3153 object.insert("type".into(), Value::String("setNullable".into()));
3154 object.insert(
3155 "setNullable".into(),
3156 serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
3157 );
3158 Value::Object(object).serialize(serializer)
3159 }
3160 Self::WidenType(value) => {
3161 let mut object = serde_json::Map::new();
3162 object.insert("type".into(), Value::String("widenType".into()));
3163 object.insert(
3164 "widenType".into(),
3165 serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
3166 );
3167 Value::Object(object).serialize(serializer)
3168 }
3169 Self::Unknown { tag, value } => {
3170 if value.get("type").and_then(Value::as_str) != Some(tag.as_str()) {
3171 return Err(serde::ser::Error::custom(
3172 "unknown union discriminator mismatch",
3173 ));
3174 }
3175 value.serialize(serializer)
3176 }
3177 }
3178 }
3179}
3180impl<'de> Deserialize<'de> for SchemaChange {
3181 fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3182 let value = Value::deserialize(deserializer)?;
3183 let tag = value
3184 .get("type")
3185 .and_then(Value::as_str)
3186 .ok_or_else(|| serde::de::Error::custom("union requires type"))?;
3187 match tag {
3188 "addColumn" => Ok(Self::AddColumn(
3189 serde_json::from_value(
3190 value
3191 .get("addColumn")
3192 .cloned()
3193 .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
3194 )
3195 .map_err(serde::de::Error::custom)?,
3196 )),
3197 "dropColumn" => Ok(Self::DropColumn(
3198 serde_json::from_value(
3199 value
3200 .get("dropColumn")
3201 .cloned()
3202 .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
3203 )
3204 .map_err(serde::de::Error::custom)?,
3205 )),
3206 "moveColumn" => Ok(Self::MoveColumn(
3207 serde_json::from_value(
3208 value
3209 .get("moveColumn")
3210 .cloned()
3211 .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
3212 )
3213 .map_err(serde::de::Error::custom)?,
3214 )),
3215 "renameColumn" => Ok(Self::RenameColumn(
3216 serde_json::from_value(
3217 value
3218 .get("renameColumn")
3219 .cloned()
3220 .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
3221 )
3222 .map_err(serde::de::Error::custom)?,
3223 )),
3224 "setNullable" => Ok(Self::SetNullable(
3225 serde_json::from_value(
3226 value
3227 .get("setNullable")
3228 .cloned()
3229 .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
3230 )
3231 .map_err(serde::de::Error::custom)?,
3232 )),
3233 "widenType" => Ok(Self::WidenType(
3234 serde_json::from_value(
3235 value
3236 .get("widenType")
3237 .cloned()
3238 .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
3239 )
3240 .map_err(serde::de::Error::custom)?,
3241 )),
3242 tag => Ok(Self::Unknown {
3243 tag: tag.to_owned(),
3244 value,
3245 }),
3246 }
3247 }
3248}
3249impl<'de> DeserializeStrict<'de> for SchemaChange {
3250 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3251 #[derive(Deserialize)]
3252 enum __Tag0 {
3253 #[serde(rename = "addColumn")]
3254 Value,
3255 }
3256 #[derive(Deserialize)]
3257 #[serde(deny_unknown_fields)]
3258 struct __Arm0 {
3259 #[serde(rename = "type")]
3260 _tag: __Tag0,
3261 #[serde(rename = "addColumn")]
3262 value: Strict<AddColumn>,
3263 }
3264 #[derive(Deserialize)]
3265 enum __Tag1 {
3266 #[serde(rename = "dropColumn")]
3267 Value,
3268 }
3269 #[derive(Deserialize)]
3270 #[serde(deny_unknown_fields)]
3271 struct __Arm1 {
3272 #[serde(rename = "type")]
3273 _tag: __Tag1,
3274 #[serde(rename = "dropColumn")]
3275 value: Strict<ColumnPath>,
3276 }
3277 #[derive(Deserialize)]
3278 enum __Tag2 {
3279 #[serde(rename = "moveColumn")]
3280 Value,
3281 }
3282 #[derive(Deserialize)]
3283 #[serde(deny_unknown_fields)]
3284 struct __Arm2 {
3285 #[serde(rename = "type")]
3286 _tag: __Tag2,
3287 #[serde(rename = "moveColumn")]
3288 value: Strict<MoveColumn>,
3289 }
3290 #[derive(Deserialize)]
3291 enum __Tag3 {
3292 #[serde(rename = "renameColumn")]
3293 Value,
3294 }
3295 #[derive(Deserialize)]
3296 #[serde(deny_unknown_fields)]
3297 struct __Arm3 {
3298 #[serde(rename = "type")]
3299 _tag: __Tag3,
3300 #[serde(rename = "renameColumn")]
3301 value: Strict<RenameColumn>,
3302 }
3303 #[derive(Deserialize)]
3304 enum __Tag4 {
3305 #[serde(rename = "setNullable")]
3306 Value,
3307 }
3308 #[derive(Deserialize)]
3309 #[serde(deny_unknown_fields)]
3310 struct __Arm4 {
3311 #[serde(rename = "type")]
3312 _tag: __Tag4,
3313 #[serde(rename = "setNullable")]
3314 value: Strict<ColumnPath>,
3315 }
3316 #[derive(Deserialize)]
3317 enum __Tag5 {
3318 #[serde(rename = "widenType")]
3319 Value,
3320 }
3321 #[derive(Deserialize)]
3322 #[serde(deny_unknown_fields)]
3323 struct __Arm5 {
3324 #[serde(rename = "type")]
3325 _tag: __Tag5,
3326 #[serde(rename = "widenType")]
3327 value: Strict<WidenType>,
3328 }
3329 #[derive(Deserialize)]
3330 #[serde(untagged)]
3331 enum __Known {
3332 AddColumn(Box<__Arm0>),
3333 DropColumn(Box<__Arm1>),
3334 MoveColumn(Box<__Arm2>),
3335 RenameColumn(Box<__Arm3>),
3336 SetNullable(Box<__Arm4>),
3337 WidenType(Box<__Arm5>),
3338 }
3339 Ok(match __Known::deserialize(deserializer)? {
3340 __Known::AddColumn(arm) => Self::AddColumn(arm.value.0),
3341 __Known::DropColumn(arm) => Self::DropColumn(arm.value.0),
3342 __Known::MoveColumn(arm) => Self::MoveColumn(arm.value.0),
3343 __Known::RenameColumn(arm) => Self::RenameColumn(arm.value.0),
3344 __Known::SetNullable(arm) => Self::SetNullable(arm.value.0),
3345 __Known::WidenType(arm) => Self::WidenType(arm.value.0),
3346 })
3347 }
3348}
3349
3350#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
3357pub struct SearchVectorsRequest {
3358 #[serde(rename = "columns")]
3360 #[serde(default, skip_serializing_if = "Option::is_none")]
3361 pub columns: Option<Vec<String>>,
3362 #[serde(rename = "excludeRowIds")]
3364 #[serde(default, skip_serializing_if = "Option::is_none")]
3365 pub exclude_row_ids: Option<Vec<SafeUnsignedLong>>,
3366 #[serde(rename = "filter")]
3368 #[serde(default, skip_serializing_if = "Option::is_none")]
3369 pub filter: Option<Expression>,
3370 #[serde(rename = "index")]
3372 pub index: VectorIndexArtifact,
3373 #[serde(rename = "indexStorage")]
3375 pub index_storage: StorageBinding,
3376 #[serde(rename = "limit")]
3378 pub limit: u32,
3379 #[serde(rename = "probes")]
3381 #[serde(default, skip_serializing_if = "Option::is_none")]
3382 pub probes: Option<u32>,
3383 #[serde(rename = "query")]
3385 pub query: Vec<f64>,
3386 #[serde(rename = "rerank")]
3388 #[serde(default, skip_serializing_if = "Option::is_none")]
3389 pub rerank: Option<u32>,
3390 #[serde(rename = "sourceStorage")]
3392 pub source_storage: StorageBinding,
3393}
3394impl<'de> DeserializeStrict<'de> for SearchVectorsRequest {
3395 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3396 #[derive(Deserialize)]
3397 #[serde(deny_unknown_fields)]
3398 struct __Wire {
3399 #[serde(rename = "columns")]
3400 #[serde(default)]
3401 columns: Strict<Option<Vec<String>>>,
3402 #[serde(rename = "excludeRowIds")]
3403 #[serde(default)]
3404 exclude_row_ids: Strict<Option<Vec<SafeUnsignedLong>>>,
3405 #[serde(rename = "filter")]
3406 #[serde(default)]
3407 filter: Strict<Option<Expression>>,
3408 #[serde(rename = "index")]
3409 index: Strict<VectorIndexArtifact>,
3410 #[serde(rename = "indexStorage")]
3411 index_storage: Strict<StorageBinding>,
3412 #[serde(rename = "limit")]
3413 limit: Strict<u32>,
3414 #[serde(rename = "probes")]
3415 #[serde(default)]
3416 probes: Strict<Option<u32>>,
3417 #[serde(rename = "query")]
3418 query: Strict<Vec<f64>>,
3419 #[serde(rename = "rerank")]
3420 #[serde(default)]
3421 rerank: Strict<Option<u32>>,
3422 #[serde(rename = "sourceStorage")]
3423 source_storage: Strict<StorageBinding>,
3424 }
3425 let wire = __Wire::deserialize(deserializer)?;
3426 Ok(Self {
3427 columns: wire.columns.0,
3428 exclude_row_ids: wire.exclude_row_ids.0,
3429 filter: wire.filter.0,
3430 index: wire.index.0,
3431 index_storage: wire.index_storage.0,
3432 limit: wire.limit.0,
3433 probes: wire.probes.0,
3434 query: wire.query.0,
3435 rerank: wire.rerank.0,
3436 source_storage: wire.source_storage.0,
3437 })
3438 }
3439}
3440
3441#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
3443pub struct SortColumn {
3444 #[serde(rename = "descending")]
3446 pub descending: bool,
3447 #[serde(rename = "nullsFirst")]
3449 pub nulls_first: bool,
3450 #[serde(rename = "path")]
3452 pub path: Vec<String>,
3453 #[serde(rename = "transform")]
3455 #[serde(default, skip_serializing_if = "Option::is_none")]
3456 pub transform: Option<String>,
3457}
3458impl<'de> DeserializeStrict<'de> for SortColumn {
3459 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3460 #[derive(Deserialize)]
3461 #[serde(deny_unknown_fields)]
3462 struct __Wire {
3463 #[serde(rename = "descending")]
3464 descending: Strict<bool>,
3465 #[serde(rename = "nullsFirst")]
3466 nulls_first: Strict<bool>,
3467 #[serde(rename = "path")]
3468 path: Strict<Vec<String>>,
3469 #[serde(rename = "transform")]
3470 #[serde(default)]
3471 transform: Strict<Option<String>>,
3472 }
3473 let wire = __Wire::deserialize(deserializer)?;
3474 Ok(Self {
3475 descending: wire.descending.0,
3476 nulls_first: wire.nulls_first.0,
3477 path: wire.path.0,
3478 transform: wire.transform.0,
3479 })
3480 }
3481}
3482
3483#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
3486pub struct SortKey {
3487 #[serde(rename = "column")]
3489 pub column: String,
3490 #[serde(rename = "descending")]
3492 #[serde(default, skip_serializing_if = "Option::is_none")]
3493 pub descending: Option<bool>,
3494 #[serde(rename = "nullsFirst")]
3496 #[serde(default, skip_serializing_if = "Option::is_none")]
3497 pub nulls_first: Option<bool>,
3498}
3499impl<'de> DeserializeStrict<'de> for SortKey {
3500 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3501 #[derive(Deserialize)]
3502 #[serde(deny_unknown_fields)]
3503 struct __Wire {
3504 #[serde(rename = "column")]
3505 column: Strict<String>,
3506 #[serde(rename = "descending")]
3507 #[serde(default)]
3508 descending: Strict<Option<bool>>,
3509 #[serde(rename = "nullsFirst")]
3510 #[serde(default)]
3511 nulls_first: Strict<Option<bool>>,
3512 }
3513 let wire = __Wire::deserialize(deserializer)?;
3514 Ok(Self {
3515 column: wire.column.0,
3516 descending: wire.descending.0,
3517 nulls_first: wire.nulls_first.0,
3518 })
3519 }
3520}
3521
3522#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
3526pub struct Split {
3527 #[serde(rename = "fragment")]
3529 pub fragment: SafeUnsignedLong,
3530 #[serde(rename = "rows")]
3532 pub rows: RowRange,
3533}
3534impl<'de> DeserializeStrict<'de> for Split {
3535 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3536 #[derive(Deserialize)]
3537 #[serde(deny_unknown_fields)]
3538 struct __Wire {
3539 #[serde(rename = "fragment")]
3540 fragment: Strict<SafeUnsignedLong>,
3541 #[serde(rename = "rows")]
3542 rows: Strict<RowRange>,
3543 }
3544 let wire = __Wire::deserialize(deserializer)?;
3545 Ok(Self {
3546 fragment: wire.fragment.0,
3547 rows: wire.rows.0,
3548 })
3549 }
3550}
3551
3552#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
3557pub struct SplitTake {
3558 #[serde(rename = "positions")]
3560 pub positions: Vec<SafeUnsignedLong>,
3561 #[serde(rename = "split")]
3563 pub split: Split,
3564}
3565impl<'de> DeserializeStrict<'de> for SplitTake {
3566 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3567 #[derive(Deserialize)]
3568 #[serde(deny_unknown_fields)]
3569 struct __Wire {
3570 #[serde(rename = "positions")]
3571 positions: Strict<Vec<SafeUnsignedLong>>,
3572 #[serde(rename = "split")]
3573 split: Strict<Split>,
3574 }
3575 let wire = __Wire::deserialize(deserializer)?;
3576 Ok(Self {
3577 positions: wire.positions.0,
3578 split: wire.split.0,
3579 })
3580 }
3581}
3582
3583#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
3587pub struct StartBlobUploadRequest {
3588 #[serde(rename = "attempt")]
3590 pub attempt: Uuid,
3591 #[serde(rename = "mediaType")]
3593 pub media_type: String,
3594 #[serde(rename = "partBytes")]
3596 #[serde(default, skip_serializing_if = "Option::is_none")]
3597 pub part_bytes: Option<SafeUnsignedLong>,
3598 #[serde(rename = "table")]
3600 pub table: TableBinding,
3601}
3602impl<'de> DeserializeStrict<'de> for StartBlobUploadRequest {
3603 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3604 #[derive(Deserialize)]
3605 #[serde(deny_unknown_fields)]
3606 struct __Wire {
3607 #[serde(rename = "attempt")]
3608 attempt: Strict<Uuid>,
3609 #[serde(rename = "mediaType")]
3610 media_type: Strict<String>,
3611 #[serde(rename = "partBytes")]
3612 #[serde(default)]
3613 part_bytes: Strict<Option<SafeUnsignedLong>>,
3614 #[serde(rename = "table")]
3615 table: Strict<TableBinding>,
3616 }
3617 let wire = __Wire::deserialize(deserializer)?;
3618 Ok(Self {
3619 attempt: wire.attempt.0,
3620 media_type: wire.media_type.0,
3621 part_bytes: wire.part_bytes.0,
3622 table: wire.table.0,
3623 })
3624 }
3625}
3626
3627#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
3629pub struct StatBlobRequest {
3630 #[serde(rename = "blob")]
3632 pub blob: Blob,
3633 #[serde(rename = "storage")]
3635 #[serde(default, skip_serializing_if = "Option::is_none")]
3636 pub storage: Option<StorageBinding>,
3637}
3638impl<'de> DeserializeStrict<'de> for StatBlobRequest {
3639 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3640 #[derive(Deserialize)]
3641 #[serde(deny_unknown_fields)]
3642 struct __Wire {
3643 #[serde(rename = "blob")]
3644 blob: Strict<Blob>,
3645 #[serde(rename = "storage")]
3646 #[serde(default)]
3647 storage: Strict<Option<StorageBinding>>,
3648 }
3649 let wire = __Wire::deserialize(deserializer)?;
3650 Ok(Self {
3651 blob: wire.blob.0,
3652 storage: wire.storage.0,
3653 })
3654 }
3655}
3656
3657#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
3665pub struct StorageBinding {
3666 #[serde(rename = "credential")]
3668 #[serde(default, skip_serializing_if = "Option::is_none")]
3669 pub credential: Option<StorageCredential>,
3670 #[serde(rename = "directRead")]
3672 #[serde(default, skip_serializing_if = "Option::is_none")]
3673 pub direct_read: Option<DirectRead>,
3674 #[serde(rename = "endpoint")]
3676 #[serde(default, skip_serializing_if = "Option::is_none")]
3677 pub endpoint: Option<String>,
3678 #[serde(rename = "expiresAt")]
3680 #[serde(default, skip_serializing_if = "Option::is_none")]
3681 pub expires_at: Option<SafeUnsignedLong>,
3682 #[serde(rename = "rootAlias")]
3684 #[serde(default, skip_serializing_if = "Option::is_none")]
3685 pub root_alias: Option<String>,
3686 #[serde(rename = "rootUri")]
3688 pub root_uri: String,
3689}
3690impl<'de> DeserializeStrict<'de> for StorageBinding {
3691 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3692 #[derive(Deserialize)]
3693 #[serde(deny_unknown_fields)]
3694 struct __Wire {
3695 #[serde(rename = "credential")]
3696 #[serde(default)]
3697 credential: Strict<Option<StorageCredential>>,
3698 #[serde(rename = "directRead")]
3699 #[serde(default)]
3700 direct_read: Strict<Option<DirectRead>>,
3701 #[serde(rename = "endpoint")]
3702 #[serde(default)]
3703 endpoint: Strict<Option<String>>,
3704 #[serde(rename = "expiresAt")]
3705 #[serde(default)]
3706 expires_at: Strict<Option<SafeUnsignedLong>>,
3707 #[serde(rename = "rootAlias")]
3708 #[serde(default)]
3709 root_alias: Strict<Option<String>>,
3710 #[serde(rename = "rootUri")]
3711 root_uri: Strict<String>,
3712 }
3713 let wire = __Wire::deserialize(deserializer)?;
3714 Ok(Self {
3715 credential: wire.credential.0,
3716 direct_read: wire.direct_read.0,
3717 endpoint: wire.endpoint.0,
3718 expires_at: wire.expires_at.0,
3719 root_alias: wire.root_alias.0,
3720 root_uri: wire.root_uri.0,
3721 })
3722 }
3723}
3724
3725#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
3727pub struct StorageCounters {
3728 #[serde(rename = "bytes")]
3730 pub bytes: SafeUnsignedLong,
3731 #[serde(rename = "readTimeNs")]
3733 pub read_time_ns: SafeUnsignedLong,
3734 #[serde(rename = "requests")]
3736 pub requests: SafeUnsignedLong,
3737 #[serde(rename = "scope")]
3739 pub scope: StorageScope,
3740}
3741impl<'de> DeserializeStrict<'de> for StorageCounters {
3742 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3743 #[derive(Deserialize)]
3744 #[serde(deny_unknown_fields)]
3745 struct __Wire {
3746 #[serde(rename = "bytes")]
3747 bytes: Strict<SafeUnsignedLong>,
3748 #[serde(rename = "readTimeNs")]
3749 read_time_ns: Strict<SafeUnsignedLong>,
3750 #[serde(rename = "requests")]
3751 requests: Strict<SafeUnsignedLong>,
3752 #[serde(rename = "scope")]
3753 scope: Strict<StorageScope>,
3754 }
3755 let wire = __Wire::deserialize(deserializer)?;
3756 Ok(Self {
3757 bytes: wire.bytes.0,
3758 read_time_ns: wire.read_time_ns.0,
3759 requests: wire.requests.0,
3760 scope: wire.scope.0,
3761 })
3762 }
3763}
3764
3765#[derive(Clone, PartialEq, Eq, Serialize, Deserialize)]
3767#[serde(transparent)]
3768pub struct StorageCredential(pub String);
3769impl std::fmt::Debug for StorageCredential {
3770 fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
3771 formatter.write_str("StorageCredential(<redacted>)")
3772 }
3773}
3774impl<'de> DeserializeStrict<'de> for StorageCredential {
3775 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3776 Ok(Self(Strict::<String>::deserialize(deserializer)?.0))
3777 }
3778}
3779
3780#[derive(Clone, Debug, PartialEq, Eq)]
3782pub enum StorageScope {
3783 Complete,
3785 Direct,
3787 Unknown(String),
3789}
3790impl Serialize for StorageScope {
3791 fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
3792 serializer.serialize_str(match self {
3793 Self::Complete => "complete",
3794 Self::Direct => "direct",
3795 Self::Unknown(value) => value,
3796 })
3797 }
3798}
3799impl<'de> Deserialize<'de> for StorageScope {
3800 fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3801 Ok(match String::deserialize(deserializer)?.as_str() {
3802 "complete" => Self::Complete,
3803 "direct" => Self::Direct,
3804 value => Self::Unknown(value.to_owned()),
3805 })
3806 }
3807}
3808impl<'de> DeserializeStrict<'de> for StorageScope {
3809 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3810 #[derive(Deserialize)]
3811 enum __Known {
3812 #[serde(rename = "complete")]
3813 Complete,
3814 #[serde(rename = "direct")]
3815 Direct,
3816 }
3817 Ok(match __Known::deserialize(deserializer)? {
3818 __Known::Complete => Self::Complete,
3819 __Known::Direct => Self::Direct,
3820 })
3821 }
3822}
3823
3824#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
3826pub struct SuccessorBase {
3827 #[serde(rename = "versionId")]
3829 pub version_id: Uuid,
3830}
3831impl<'de> DeserializeStrict<'de> for SuccessorBase {
3832 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3833 #[derive(Deserialize)]
3834 #[serde(deny_unknown_fields)]
3835 struct __Wire {
3836 #[serde(rename = "versionId")]
3837 version_id: Strict<Uuid>,
3838 }
3839 let wire = __Wire::deserialize(deserializer)?;
3840 Ok(Self {
3841 version_id: wire.version_id.0,
3842 })
3843 }
3844}
3845
3846#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
3848pub struct TableBinding {
3849 #[serde(rename = "storage")]
3851 #[serde(default, skip_serializing_if = "Option::is_none")]
3852 pub storage: Option<StorageBinding>,
3853 #[serde(rename = "tableId")]
3855 pub table_id: Uuid,
3856}
3857impl<'de> DeserializeStrict<'de> for TableBinding {
3858 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3859 #[derive(Deserialize)]
3860 #[serde(deny_unknown_fields)]
3861 struct __Wire {
3862 #[serde(rename = "storage")]
3863 #[serde(default)]
3864 storage: Strict<Option<StorageBinding>>,
3865 #[serde(rename = "tableId")]
3866 table_id: Strict<Uuid>,
3867 }
3868 let wire = __Wire::deserialize(deserializer)?;
3869 Ok(Self {
3870 storage: wire.storage.0,
3871 table_id: wire.table_id.0,
3872 })
3873 }
3874}
3875
3876#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
3878pub struct TableVersion {
3879 #[serde(rename = "resourceId")]
3881 pub resource_id: Uuid,
3882 #[serde(rename = "versionId")]
3884 pub version_id: Uuid,
3885}
3886impl<'de> DeserializeStrict<'de> for TableVersion {
3887 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3888 #[derive(Deserialize)]
3889 #[serde(deny_unknown_fields)]
3890 struct __Wire {
3891 #[serde(rename = "resourceId")]
3892 resource_id: Strict<Uuid>,
3893 #[serde(rename = "versionId")]
3894 version_id: Strict<Uuid>,
3895 }
3896 let wire = __Wire::deserialize(deserializer)?;
3897 Ok(Self {
3898 resource_id: wire.resource_id.0,
3899 version_id: wire.version_id.0,
3900 })
3901 }
3902}
3903
3904#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
3908pub struct TakeRowsRequest {
3909 #[serde(rename = "scan")]
3911 pub scan: Scan,
3912 #[serde(rename = "storage")]
3914 #[serde(default, skip_serializing_if = "Option::is_none")]
3915 pub storage: Option<StorageBinding>,
3916 #[serde(rename = "takes")]
3918 pub takes: Vec<SplitTake>,
3919}
3920impl<'de> DeserializeStrict<'de> for TakeRowsRequest {
3921 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3922 #[derive(Deserialize)]
3923 #[serde(deny_unknown_fields)]
3924 struct __Wire {
3925 #[serde(rename = "scan")]
3926 scan: Strict<Scan>,
3927 #[serde(rename = "storage")]
3928 #[serde(default)]
3929 storage: Strict<Option<StorageBinding>>,
3930 #[serde(rename = "takes")]
3931 takes: Strict<Vec<SplitTake>>,
3932 }
3933 let wire = __Wire::deserialize(deserializer)?;
3934 Ok(Self {
3935 scan: wire.scan.0,
3936 storage: wire.storage.0,
3937 takes: wire.takes.0,
3938 })
3939 }
3940}
3941
3942#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
3948pub struct TopK {
3949 #[serde(rename = "k")]
3951 pub k: u32,
3952 #[serde(rename = "keys")]
3954 pub keys: Vec<SortKey>,
3955}
3956impl<'de> DeserializeStrict<'de> for TopK {
3957 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3958 #[derive(Deserialize)]
3959 #[serde(deny_unknown_fields)]
3960 struct __Wire {
3961 #[serde(rename = "k")]
3962 k: Strict<u32>,
3963 #[serde(rename = "keys")]
3964 keys: Strict<Vec<SortKey>>,
3965 }
3966 let wire = __Wire::deserialize(deserializer)?;
3967 Ok(Self {
3968 k: wire.k.0,
3969 keys: wire.keys.0,
3970 })
3971 }
3972}
3973
3974#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
3977pub struct UploadBlobPartRequest {
3978 #[serde(rename = "part")]
3980 pub part: u32,
3981 #[serde(rename = "storage")]
3983 #[serde(default, skip_serializing_if = "Option::is_none")]
3984 pub storage: Option<StorageBinding>,
3985 #[serde(rename = "upload")]
3987 pub upload: BlobUpload,
3988}
3989impl<'de> DeserializeStrict<'de> for UploadBlobPartRequest {
3990 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
3991 #[derive(Deserialize)]
3992 #[serde(deny_unknown_fields)]
3993 struct __Wire {
3994 #[serde(rename = "part")]
3995 part: Strict<u32>,
3996 #[serde(rename = "storage")]
3997 #[serde(default)]
3998 storage: Strict<Option<StorageBinding>>,
3999 #[serde(rename = "upload")]
4000 upload: Strict<BlobUpload>,
4001 }
4002 let wire = __Wire::deserialize(deserializer)?;
4003 Ok(Self {
4004 part: wire.part.0,
4005 storage: wire.storage.0,
4006 upload: wire.upload.0,
4007 })
4008 }
4009}
4010
4011#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
4014pub struct VectorIndexArtifact {
4015 #[serde(rename = "codec")]
4017 pub codec: String,
4018 #[serde(rename = "codecVersion")]
4020 pub codec_version: u32,
4021 #[serde(rename = "dimensions")]
4023 pub dimensions: u32,
4024 #[serde(rename = "indexedRows")]
4026 pub indexed_rows: SafeUnsignedLong,
4027 #[serde(rename = "manifestPath")]
4029 pub manifest_path: String,
4030 #[serde(rename = "metadata")]
4032 pub metadata: String,
4033 #[serde(rename = "metric")]
4035 pub metric: VectorMetric,
4036 #[serde(rename = "origin")]
4038 pub origin: VectorIndexOrigin,
4039 #[serde(rename = "partitions")]
4041 pub partitions: u32,
4042}
4043impl<'de> DeserializeStrict<'de> for VectorIndexArtifact {
4044 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4045 #[derive(Deserialize)]
4046 #[serde(deny_unknown_fields)]
4047 struct __Wire {
4048 #[serde(rename = "codec")]
4049 codec: Strict<String>,
4050 #[serde(rename = "codecVersion")]
4051 codec_version: Strict<u32>,
4052 #[serde(rename = "dimensions")]
4053 dimensions: Strict<u32>,
4054 #[serde(rename = "indexedRows")]
4055 indexed_rows: Strict<SafeUnsignedLong>,
4056 #[serde(rename = "manifestPath")]
4057 manifest_path: Strict<String>,
4058 #[serde(rename = "metadata")]
4059 metadata: Strict<String>,
4060 #[serde(rename = "metric")]
4061 metric: Strict<VectorMetric>,
4062 #[serde(rename = "origin")]
4063 origin: Strict<VectorIndexOrigin>,
4064 #[serde(rename = "partitions")]
4065 partitions: Strict<u32>,
4066 }
4067 let wire = __Wire::deserialize(deserializer)?;
4068 Ok(Self {
4069 codec: wire.codec.0,
4070 codec_version: wire.codec_version.0,
4071 dimensions: wire.dimensions.0,
4072 indexed_rows: wire.indexed_rows.0,
4073 manifest_path: wire.manifest_path.0,
4074 metadata: wire.metadata.0,
4075 metric: wire.metric.0,
4076 origin: wire.origin.0,
4077 partitions: wire.partitions.0,
4078 })
4079 }
4080}
4081
4082#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
4084pub struct VectorIndexOrigin {
4085 #[serde(rename = "sourceFieldId")]
4087 pub source_field_id: Uuid,
4088 #[serde(rename = "sourceResourceId")]
4090 pub source_resource_id: Uuid,
4091 #[serde(rename = "sourceVersionId")]
4093 pub source_version_id: Uuid,
4094 #[serde(rename = "vectorIndexId")]
4096 pub vector_index_id: Uuid,
4097 #[serde(rename = "versionId")]
4099 pub version_id: Uuid,
4100}
4101impl<'de> DeserializeStrict<'de> for VectorIndexOrigin {
4102 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4103 #[derive(Deserialize)]
4104 #[serde(deny_unknown_fields)]
4105 struct __Wire {
4106 #[serde(rename = "sourceFieldId")]
4107 source_field_id: Strict<Uuid>,
4108 #[serde(rename = "sourceResourceId")]
4109 source_resource_id: Strict<Uuid>,
4110 #[serde(rename = "sourceVersionId")]
4111 source_version_id: Strict<Uuid>,
4112 #[serde(rename = "vectorIndexId")]
4113 vector_index_id: Strict<Uuid>,
4114 #[serde(rename = "versionId")]
4115 version_id: Strict<Uuid>,
4116 }
4117 let wire = __Wire::deserialize(deserializer)?;
4118 Ok(Self {
4119 source_field_id: wire.source_field_id.0,
4120 source_resource_id: wire.source_resource_id.0,
4121 source_version_id: wire.source_version_id.0,
4122 vector_index_id: wire.vector_index_id.0,
4123 version_id: wire.version_id.0,
4124 })
4125 }
4126}
4127
4128#[derive(Clone, Debug, PartialEq, Eq)]
4131pub enum VectorMetric {
4132 Cosine,
4134 Euclidean,
4136 Dot,
4138 Unknown(String),
4140}
4141impl Serialize for VectorMetric {
4142 fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
4143 serializer.serialize_str(match self {
4144 Self::Cosine => "cosine",
4145 Self::Euclidean => "euclidean",
4146 Self::Dot => "dot",
4147 Self::Unknown(value) => value,
4148 })
4149 }
4150}
4151impl<'de> Deserialize<'de> for VectorMetric {
4152 fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4153 Ok(match String::deserialize(deserializer)?.as_str() {
4154 "cosine" => Self::Cosine,
4155 "euclidean" => Self::Euclidean,
4156 "dot" => Self::Dot,
4157 value => Self::Unknown(value.to_owned()),
4158 })
4159 }
4160}
4161impl<'de> DeserializeStrict<'de> for VectorMetric {
4162 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4163 #[derive(Deserialize)]
4164 enum __Known {
4165 #[serde(rename = "cosine")]
4166 Cosine,
4167 #[serde(rename = "euclidean")]
4168 Euclidean,
4169 #[serde(rename = "dot")]
4170 Dot,
4171 }
4172 Ok(match __Known::deserialize(deserializer)? {
4173 __Known::Cosine => Self::Cosine,
4174 __Known::Euclidean => Self::Euclidean,
4175 __Known::Dot => Self::Dot,
4176 })
4177 }
4178}
4179
4180#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
4187pub struct VectorSearchInfo {
4188 #[serde(rename = "exhaustive")]
4190 pub exhaustive: bool,
4191 #[serde(rename = "indexedRows")]
4193 pub indexed_rows: SafeUnsignedLong,
4194 #[serde(rename = "limit")]
4196 pub limit: u32,
4197 #[serde(rename = "metric")]
4199 pub metric: VectorMetric,
4200 #[serde(rename = "origin")]
4202 pub origin: VectorIndexOrigin,
4203 #[serde(rename = "probes")]
4205 pub probes: u32,
4206 #[serde(rename = "rerank")]
4208 pub rerank: u32,
4209}
4210impl<'de> DeserializeStrict<'de> for VectorSearchInfo {
4211 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4212 #[derive(Deserialize)]
4213 #[serde(deny_unknown_fields)]
4214 struct __Wire {
4215 #[serde(rename = "exhaustive")]
4216 exhaustive: Strict<bool>,
4217 #[serde(rename = "indexedRows")]
4218 indexed_rows: Strict<SafeUnsignedLong>,
4219 #[serde(rename = "limit")]
4220 limit: Strict<u32>,
4221 #[serde(rename = "metric")]
4222 metric: Strict<VectorMetric>,
4223 #[serde(rename = "origin")]
4224 origin: Strict<VectorIndexOrigin>,
4225 #[serde(rename = "probes")]
4226 probes: Strict<u32>,
4227 #[serde(rename = "rerank")]
4228 rerank: Strict<u32>,
4229 }
4230 let wire = __Wire::deserialize(deserializer)?;
4231 Ok(Self {
4232 exhaustive: wire.exhaustive.0,
4233 indexed_rows: wire.indexed_rows.0,
4234 limit: wire.limit.0,
4235 metric: wire.metric.0,
4236 origin: wire.origin.0,
4237 probes: wire.probes.0,
4238 rerank: wire.rerank.0,
4239 })
4240 }
4241}
4242
4243#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
4245pub struct WidenType {
4246 #[serde(rename = "dataType")]
4248 pub data_type: ArrowDataType,
4249 #[serde(rename = "path")]
4251 pub path: Vec<String>,
4252}
4253impl<'de> DeserializeStrict<'de> for WidenType {
4254 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4255 #[derive(Deserialize)]
4256 #[serde(deny_unknown_fields)]
4257 struct __Wire {
4258 #[serde(rename = "dataType")]
4259 data_type: Strict<ArrowDataType>,
4260 #[serde(rename = "path")]
4261 path: Strict<Vec<String>>,
4262 }
4263 let wire = __Wire::deserialize(deserializer)?;
4264 Ok(Self {
4265 data_type: wire.data_type.0,
4266 path: wire.path.0,
4267 })
4268 }
4269}
4270
4271#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
4273pub struct WindowCounters {
4274 #[serde(rename = "prunedStatistics")]
4276 pub pruned_statistics: SafeUnsignedLong,
4277 #[serde(rename = "visited")]
4279 pub visited: SafeUnsignedLong,
4280}
4281impl<'de> DeserializeStrict<'de> for WindowCounters {
4282 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4283 #[derive(Deserialize)]
4284 #[serde(deny_unknown_fields)]
4285 struct __Wire {
4286 #[serde(rename = "prunedStatistics")]
4287 pruned_statistics: Strict<SafeUnsignedLong>,
4288 #[serde(rename = "visited")]
4289 visited: Strict<SafeUnsignedLong>,
4290 }
4291 let wire = __Wire::deserialize(deserializer)?;
4292 Ok(Self {
4293 pruned_statistics: wire.pruned_statistics.0,
4294 visited: wire.visited.0,
4295 })
4296 }
4297}
4298
4299#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
4306pub struct WriteAlignedRequest {
4307 #[serde(rename = "attempt")]
4309 #[serde(default, skip_serializing_if = "Option::is_none")]
4310 pub attempt: Option<Uuid>,
4311 #[serde(rename = "base")]
4313 #[serde(default, skip_serializing_if = "Option::is_none")]
4314 pub base: Option<Uuid>,
4315 #[serde(rename = "fragmentId")]
4317 pub fragment_id: Uuid,
4318 #[serde(rename = "source")]
4320 pub source: TableVersion,
4321 #[serde(rename = "sourceStorage")]
4323 #[serde(default, skip_serializing_if = "Option::is_none")]
4324 pub source_storage: Option<StorageBinding>,
4325 #[serde(rename = "table")]
4327 pub table: TableBinding,
4328}
4329impl<'de> DeserializeStrict<'de> for WriteAlignedRequest {
4330 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4331 #[derive(Deserialize)]
4332 #[serde(deny_unknown_fields)]
4333 struct __Wire {
4334 #[serde(rename = "attempt")]
4335 #[serde(default)]
4336 attempt: Strict<Option<Uuid>>,
4337 #[serde(rename = "base")]
4338 #[serde(default)]
4339 base: Strict<Option<Uuid>>,
4340 #[serde(rename = "fragmentId")]
4341 fragment_id: Strict<Uuid>,
4342 #[serde(rename = "source")]
4343 source: Strict<TableVersion>,
4344 #[serde(rename = "sourceStorage")]
4345 #[serde(default)]
4346 source_storage: Strict<Option<StorageBinding>>,
4347 #[serde(rename = "table")]
4348 table: Strict<TableBinding>,
4349 }
4350 let wire = __Wire::deserialize(deserializer)?;
4351 Ok(Self {
4352 attempt: wire.attempt.0,
4353 base: wire.base.0,
4354 fragment_id: wire.fragment_id.0,
4355 source: wire.source.0,
4356 source_storage: wire.source_storage.0,
4357 table: wire.table.0,
4358 })
4359 }
4360}
4361
4362#[derive(Clone, Debug, PartialEq, Eq)]
4367pub enum WriteBase {
4368 Aligned(AlignedBase),
4370 Append(SuccessorBase),
4372 Delete(Box<DeleteBase>),
4374 Edit(EditBase),
4376 Genesis(GenesisBase),
4378 Overwrite(SuccessorBase),
4380 Unknown { tag: String, value: Value },
4382}
4383impl Serialize for WriteBase {
4384 fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
4385 match self {
4386 Self::Aligned(value) => {
4387 let mut object = serde_json::Map::new();
4388 object.insert("type".into(), Value::String("aligned".into()));
4389 object.insert(
4390 "aligned".into(),
4391 serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
4392 );
4393 Value::Object(object).serialize(serializer)
4394 }
4395 Self::Append(value) => {
4396 let mut object = serde_json::Map::new();
4397 object.insert("type".into(), Value::String("append".into()));
4398 object.insert(
4399 "append".into(),
4400 serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
4401 );
4402 Value::Object(object).serialize(serializer)
4403 }
4404 Self::Delete(value) => {
4405 let mut object = serde_json::Map::new();
4406 object.insert("type".into(), Value::String("delete".into()));
4407 object.insert(
4408 "delete".into(),
4409 serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
4410 );
4411 Value::Object(object).serialize(serializer)
4412 }
4413 Self::Edit(value) => {
4414 let mut object = serde_json::Map::new();
4415 object.insert("type".into(), Value::String("edit".into()));
4416 object.insert(
4417 "edit".into(),
4418 serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
4419 );
4420 Value::Object(object).serialize(serializer)
4421 }
4422 Self::Genesis(value) => {
4423 let mut object = serde_json::Map::new();
4424 object.insert("type".into(), Value::String("genesis".into()));
4425 object.insert(
4426 "genesis".into(),
4427 serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
4428 );
4429 Value::Object(object).serialize(serializer)
4430 }
4431 Self::Overwrite(value) => {
4432 let mut object = serde_json::Map::new();
4433 object.insert("type".into(), Value::String("overwrite".into()));
4434 object.insert(
4435 "overwrite".into(),
4436 serde_json::to_value(value).map_err(serde::ser::Error::custom)?,
4437 );
4438 Value::Object(object).serialize(serializer)
4439 }
4440 Self::Unknown { tag, value } => {
4441 if value.get("type").and_then(Value::as_str) != Some(tag.as_str()) {
4442 return Err(serde::ser::Error::custom(
4443 "unknown union discriminator mismatch",
4444 ));
4445 }
4446 value.serialize(serializer)
4447 }
4448 }
4449 }
4450}
4451impl<'de> Deserialize<'de> for WriteBase {
4452 fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4453 let value = Value::deserialize(deserializer)?;
4454 let tag = value
4455 .get("type")
4456 .and_then(Value::as_str)
4457 .ok_or_else(|| serde::de::Error::custom("union requires type"))?;
4458 match tag {
4459 "aligned" => Ok(Self::Aligned(
4460 serde_json::from_value(
4461 value
4462 .get("aligned")
4463 .cloned()
4464 .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
4465 )
4466 .map_err(serde::de::Error::custom)?,
4467 )),
4468 "append" => Ok(Self::Append(
4469 serde_json::from_value(
4470 value
4471 .get("append")
4472 .cloned()
4473 .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
4474 )
4475 .map_err(serde::de::Error::custom)?,
4476 )),
4477 "delete" => Ok(Self::Delete(
4478 serde_json::from_value(
4479 value
4480 .get("delete")
4481 .cloned()
4482 .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
4483 )
4484 .map_err(serde::de::Error::custom)?,
4485 )),
4486 "edit" => Ok(Self::Edit(
4487 serde_json::from_value(
4488 value
4489 .get("edit")
4490 .cloned()
4491 .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
4492 )
4493 .map_err(serde::de::Error::custom)?,
4494 )),
4495 "genesis" => Ok(Self::Genesis(
4496 serde_json::from_value(
4497 value
4498 .get("genesis")
4499 .cloned()
4500 .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
4501 )
4502 .map_err(serde::de::Error::custom)?,
4503 )),
4504 "overwrite" => Ok(Self::Overwrite(
4505 serde_json::from_value(
4506 value
4507 .get("overwrite")
4508 .cloned()
4509 .ok_or_else(|| serde::de::Error::custom("union requires matching arm"))?,
4510 )
4511 .map_err(serde::de::Error::custom)?,
4512 )),
4513 tag => Ok(Self::Unknown {
4514 tag: tag.to_owned(),
4515 value,
4516 }),
4517 }
4518 }
4519}
4520impl<'de> DeserializeStrict<'de> for WriteBase {
4521 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4522 #[derive(Deserialize)]
4523 enum __Tag0 {
4524 #[serde(rename = "aligned")]
4525 Value,
4526 }
4527 #[derive(Deserialize)]
4528 #[serde(deny_unknown_fields)]
4529 struct __Arm0 {
4530 #[serde(rename = "type")]
4531 _tag: __Tag0,
4532 #[serde(rename = "aligned")]
4533 value: Strict<AlignedBase>,
4534 }
4535 #[derive(Deserialize)]
4536 enum __Tag1 {
4537 #[serde(rename = "append")]
4538 Value,
4539 }
4540 #[derive(Deserialize)]
4541 #[serde(deny_unknown_fields)]
4542 struct __Arm1 {
4543 #[serde(rename = "type")]
4544 _tag: __Tag1,
4545 #[serde(rename = "append")]
4546 value: Strict<SuccessorBase>,
4547 }
4548 #[derive(Deserialize)]
4549 enum __Tag2 {
4550 #[serde(rename = "delete")]
4551 Value,
4552 }
4553 #[derive(Deserialize)]
4554 #[serde(deny_unknown_fields)]
4555 struct __Arm2 {
4556 #[serde(rename = "type")]
4557 _tag: __Tag2,
4558 #[serde(rename = "delete")]
4559 value: Strict<DeleteBase>,
4560 }
4561 #[derive(Deserialize)]
4562 enum __Tag3 {
4563 #[serde(rename = "edit")]
4564 Value,
4565 }
4566 #[derive(Deserialize)]
4567 #[serde(deny_unknown_fields)]
4568 struct __Arm3 {
4569 #[serde(rename = "type")]
4570 _tag: __Tag3,
4571 #[serde(rename = "edit")]
4572 value: Strict<EditBase>,
4573 }
4574 #[derive(Deserialize)]
4575 enum __Tag4 {
4576 #[serde(rename = "genesis")]
4577 Value,
4578 }
4579 #[derive(Deserialize)]
4580 #[serde(deny_unknown_fields)]
4581 struct __Arm4 {
4582 #[serde(rename = "type")]
4583 _tag: __Tag4,
4584 #[serde(rename = "genesis")]
4585 value: Strict<GenesisBase>,
4586 }
4587 #[derive(Deserialize)]
4588 enum __Tag5 {
4589 #[serde(rename = "overwrite")]
4590 Value,
4591 }
4592 #[derive(Deserialize)]
4593 #[serde(deny_unknown_fields)]
4594 struct __Arm5 {
4595 #[serde(rename = "type")]
4596 _tag: __Tag5,
4597 #[serde(rename = "overwrite")]
4598 value: Strict<SuccessorBase>,
4599 }
4600 #[derive(Deserialize)]
4601 #[serde(untagged)]
4602 enum __Known {
4603 Aligned(Box<__Arm0>),
4604 Append(Box<__Arm1>),
4605 Delete(Box<__Arm2>),
4606 Edit(Box<__Arm3>),
4607 Genesis(Box<__Arm4>),
4608 Overwrite(Box<__Arm5>),
4609 }
4610 Ok(match __Known::deserialize(deserializer)? {
4611 __Known::Aligned(arm) => Self::Aligned(arm.value.0),
4612 __Known::Append(arm) => Self::Append(arm.value.0),
4613 __Known::Delete(arm) => Self::Delete(Box::new(arm.value.0)),
4614 __Known::Edit(arm) => Self::Edit(arm.value.0),
4615 __Known::Genesis(arm) => Self::Genesis(arm.value.0),
4616 __Known::Overwrite(arm) => Self::Overwrite(arm.value.0),
4617 })
4618 }
4619}
4620
4621#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
4623pub struct WriteBlobRequest {
4624 #[serde(rename = "maxBytes")]
4626 pub max_bytes: SafeUnsignedLong,
4627 #[serde(rename = "mediaType")]
4629 pub media_type: String,
4630 #[serde(rename = "table")]
4632 pub table: TableBinding,
4633}
4634impl<'de> DeserializeStrict<'de> for WriteBlobRequest {
4635 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4636 #[derive(Deserialize)]
4637 #[serde(deny_unknown_fields)]
4638 struct __Wire {
4639 #[serde(rename = "maxBytes")]
4640 max_bytes: Strict<SafeUnsignedLong>,
4641 #[serde(rename = "mediaType")]
4642 media_type: Strict<String>,
4643 #[serde(rename = "table")]
4644 table: Strict<TableBinding>,
4645 }
4646 let wire = __Wire::deserialize(deserializer)?;
4647 Ok(Self {
4648 max_bytes: wire.max_bytes.0,
4649 media_type: wire.media_type.0,
4650 table: wire.table.0,
4651 })
4652 }
4653}
4654
4655#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
4657pub struct WriteLayout {
4658 #[serde(rename = "ordering")]
4660 pub ordering: Vec<SortColumn>,
4661 #[serde(rename = "partitioning")]
4663 pub partitioning: Vec<PartitionColumn>,
4664}
4665impl<'de> DeserializeStrict<'de> for WriteLayout {
4666 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4667 #[derive(Deserialize)]
4668 #[serde(deny_unknown_fields)]
4669 struct __Wire {
4670 #[serde(rename = "ordering")]
4671 ordering: Strict<Vec<SortColumn>>,
4672 #[serde(rename = "partitioning")]
4673 partitioning: Strict<Vec<PartitionColumn>>,
4674 }
4675 let wire = __Wire::deserialize(deserializer)?;
4676 Ok(Self {
4677 ordering: wire.ordering.0,
4678 partitioning: wire.partitioning.0,
4679 })
4680 }
4681}
4682
4683#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
4687pub struct WriteProperties {
4688 #[serde(rename = "ordering")]
4690 pub ordering: Vec<SortColumn>,
4691}
4692impl<'de> DeserializeStrict<'de> for WriteProperties {
4693 fn deserialize_strict<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
4694 #[derive(Deserialize)]
4695 #[serde(deny_unknown_fields)]
4696 struct __Wire {
4697 #[serde(rename = "ordering")]
4698 ordering: Strict<Vec<SortColumn>>,
4699 }
4700 let wire = __Wire::deserialize(deserializer)?;
4701 Ok(Self {
4702 ordering: wire.ordering.0,
4703 })
4704 }
4705}
4706
4707#[derive(Clone, Debug, PartialEq, Eq)]
4709pub enum ScandalError {
4710 BudgetExceeded { message: String },
4712 Conflict { message: String },
4714 Internal { message: String },
4716 InvalidArgument { message: String },
4718 NotFound { resource: String },
4720 PermissionDenied { operation: String, resource: String },
4722 StorageUnavailable { message: String },
4724 Unauthenticated { message: String },
4726 Unavailable { message: String },
4728}
4729impl ScandalError {
4730 pub fn status(&self) -> u16 {
4732 match self {
4733 Self::BudgetExceeded { .. } => 400,
4734 Self::Conflict { .. } => 409,
4735 Self::Internal { .. } => 500,
4736 Self::InvalidArgument { .. } => 400,
4737 Self::NotFound { .. } => 404,
4738 Self::PermissionDenied { .. } => 403,
4739 Self::StorageUnavailable { .. } => 500,
4740 Self::Unauthenticated { .. } => 401,
4741 Self::Unavailable { .. } => 503,
4742 }
4743 }
4744 pub fn envelope(&self, instance: String) -> ErrorEnvelope {
4746 match self {
4747 Self::BudgetExceeded { message } => {
4748 let mut envelope =
4749 ErrorEnvelope::new("INVALID_ARGUMENT", "Scandal:BudgetExceeded", instance);
4750 envelope
4751 .parameters
4752 .insert("message".into(), message.to_string());
4753 envelope
4754 }
4755 Self::Conflict { message } => {
4756 let mut envelope = ErrorEnvelope::new("CONFLICT", "Scandal:Conflict", instance);
4757 envelope
4758 .parameters
4759 .insert("message".into(), message.to_string());
4760 envelope
4761 }
4762 Self::Internal { message } => {
4763 let mut envelope = ErrorEnvelope::new("INTERNAL", "Scandal:Internal", instance);
4764 envelope
4765 .parameters
4766 .insert("message".into(), message.to_string());
4767 envelope
4768 }
4769 Self::InvalidArgument { message } => {
4770 let mut envelope =
4771 ErrorEnvelope::new("INVALID_ARGUMENT", "Scandal:InvalidArgument", instance);
4772 envelope
4773 .parameters
4774 .insert("message".into(), message.to_string());
4775 envelope
4776 }
4777 Self::NotFound { resource } => {
4778 let mut envelope = ErrorEnvelope::new("NOT_FOUND", "Scandal:NotFound", instance);
4779 envelope
4780 .parameters
4781 .insert("resource".into(), resource.to_string());
4782 envelope
4783 }
4784 Self::PermissionDenied {
4785 operation,
4786 resource,
4787 } => {
4788 let mut envelope =
4789 ErrorEnvelope::new("PERMISSION_DENIED", "Scandal:PermissionDenied", instance);
4790 envelope
4791 .parameters
4792 .insert("operation".into(), operation.to_string());
4793 envelope
4794 .parameters
4795 .insert("resource".into(), resource.to_string());
4796 envelope
4797 }
4798 Self::StorageUnavailable { message } => {
4799 let mut envelope =
4800 ErrorEnvelope::new("INTERNAL", "Scandal:StorageUnavailable", instance);
4801 envelope
4802 .parameters
4803 .insert("message".into(), message.to_string());
4804 envelope
4805 }
4806 Self::Unauthenticated { message } => {
4807 let mut envelope =
4808 ErrorEnvelope::new("UNAUTHENTICATED", "Scandal:Unauthenticated", instance);
4809 envelope
4810 .parameters
4811 .insert("message".into(), message.to_string());
4812 envelope
4813 }
4814 Self::Unavailable { message } => {
4815 let mut envelope =
4816 ErrorEnvelope::new("UNAVAILABLE", "Scandal:Unavailable", instance);
4817 envelope
4818 .parameters
4819 .insert("message".into(), message.to_string());
4820 envelope
4821 }
4822 }
4823 }
4824 pub fn decode_envelope(envelope: &ErrorEnvelope) -> Option<Self> {
4826 if envelope.error_instance_id.len() != 36
4827 || Uuid::parse_str(&envelope.error_instance_id).is_err()
4828 {
4829 return None;
4830 }
4831 match envelope.error_name.as_str() {
4832 "Scandal:BudgetExceeded" => {
4833 if envelope.error_code != "INVALID_ARGUMENT" {
4834 return None;
4835 }
4836 let message = envelope.parameters.get("message")?.clone();
4837 Some(Self::BudgetExceeded { message })
4838 }
4839 "Scandal:Conflict" => {
4840 if envelope.error_code != "CONFLICT" {
4841 return None;
4842 }
4843 let message = envelope.parameters.get("message")?.clone();
4844 Some(Self::Conflict { message })
4845 }
4846 "Scandal:Internal" => {
4847 if envelope.error_code != "INTERNAL" {
4848 return None;
4849 }
4850 let message = envelope.parameters.get("message")?.clone();
4851 Some(Self::Internal { message })
4852 }
4853 "Scandal:InvalidArgument" => {
4854 if envelope.error_code != "INVALID_ARGUMENT" {
4855 return None;
4856 }
4857 let message = envelope.parameters.get("message")?.clone();
4858 Some(Self::InvalidArgument { message })
4859 }
4860 "Scandal:NotFound" => {
4861 if envelope.error_code != "NOT_FOUND" {
4862 return None;
4863 }
4864 let resource = envelope.parameters.get("resource")?.clone();
4865 Some(Self::NotFound { resource })
4866 }
4867 "Scandal:PermissionDenied" => {
4868 if envelope.error_code != "PERMISSION_DENIED" {
4869 return None;
4870 }
4871 let operation = envelope.parameters.get("operation")?.clone();
4872 let resource = envelope.parameters.get("resource")?.clone();
4873 Some(Self::PermissionDenied {
4874 operation,
4875 resource,
4876 })
4877 }
4878 "Scandal:StorageUnavailable" => {
4879 if envelope.error_code != "INTERNAL" {
4880 return None;
4881 }
4882 let message = envelope.parameters.get("message")?.clone();
4883 Some(Self::StorageUnavailable { message })
4884 }
4885 "Scandal:Unauthenticated" => {
4886 if envelope.error_code != "UNAUTHENTICATED" {
4887 return None;
4888 }
4889 let message = envelope.parameters.get("message")?.clone();
4890 Some(Self::Unauthenticated { message })
4891 }
4892 "Scandal:Unavailable" => {
4893 if envelope.error_code != "UNAVAILABLE" {
4894 return None;
4895 }
4896 let message = envelope.parameters.get("message")?.clone();
4897 Some(Self::Unavailable { message })
4898 }
4899 _ => None,
4900 }
4901 }
4902}
4903impl Display for ScandalError {
4904 fn fmt(&self, formatter: &mut Formatter<'_>) -> fmt::Result {
4905 match self {
4906 Self::BudgetExceeded { message } => {
4907 write!(formatter, "Scandal:BudgetExceeded (message: {})", message)
4908 }
4909 Self::Conflict { message } => {
4910 write!(formatter, "Scandal:Conflict (message: {})", message)
4911 }
4912 Self::Internal { message } => {
4913 write!(formatter, "Scandal:Internal (message: {})", message)
4914 }
4915 Self::InvalidArgument { message } => {
4916 write!(formatter, "Scandal:InvalidArgument (message: {})", message)
4917 }
4918 Self::NotFound { resource } => {
4919 write!(formatter, "Scandal:NotFound (resource: {})", resource)
4920 }
4921 Self::PermissionDenied {
4922 operation,
4923 resource,
4924 } => write!(
4925 formatter,
4926 "Scandal:PermissionDenied (operation: {}, resource: {})",
4927 operation, resource
4928 ),
4929 Self::StorageUnavailable { message } => write!(
4930 formatter,
4931 "Scandal:StorageUnavailable (message: {})",
4932 message
4933 ),
4934 Self::Unauthenticated { message } => {
4935 write!(formatter, "Scandal:Unauthenticated (message: {})", message)
4936 }
4937 Self::Unavailable { message } => {
4938 write!(formatter, "Scandal:Unavailable (message: {})", message)
4939 }
4940 }
4941 }
4942}
4943impl StdError for ScandalError {}
4944impl ServiceError for ScandalError {
4945 fn to_envelope(&self, instance: String) -> ErrorEnvelope {
4946 Self::envelope(self, instance)
4947 }
4948 fn from_envelope(envelope: &ErrorEnvelope) -> Option<Self> {
4949 Self::decode_envelope(envelope)
4950 }
4951}