mz_catalog_protos/
objects_v67.rs

1// Copyright Materialize, Inc. and contributors. All rights reserved.
2//
3// Use of this software is governed by the Business Source License
4// included in the LICENSE file.
5//
6// As of the Change Date specified in that file, in accordance with
7// the Business Source License, use of this software will be governed
8// by the Apache License, Version 2.0.
9
10use num_enum::{IntoPrimitive, TryFromPrimitive};
11use proptest_derive::Arbitrary;
12use serde::{Deserialize, Serialize};
13
14#[derive(
15    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
16)]
17pub struct ConfigKey {
18    pub key: String,
19}
20
21#[derive(
22    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
23)]
24pub struct ConfigValue {
25    pub value: u64,
26}
27
28#[derive(
29    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
30)]
31pub struct SettingKey {
32    pub name: String,
33}
34
35#[derive(
36    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
37)]
38pub struct SettingValue {
39    pub value: String,
40}
41
42#[derive(
43    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
44)]
45pub struct IdAllocKey {
46    pub name: String,
47}
48
49#[derive(
50    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
51)]
52pub struct IdAllocValue {
53    pub next_id: u64,
54}
55
56#[derive(
57    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
58)]
59pub struct GidMappingKey {
60    pub schema_name: String,
61    pub object_type: i32,
62    pub object_name: String,
63}
64
65#[derive(
66    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
67)]
68pub struct GidMappingValue {
69    pub id: u64,
70    pub fingerprint: String,
71}
72
73#[derive(
74    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
75)]
76pub struct ClusterKey {
77    pub id: Option<ClusterId>,
78}
79
80#[derive(
81    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
82)]
83pub struct ClusterValue {
84    pub name: String,
85    pub owner_id: Option<RoleId>,
86    pub privileges: Vec<MzAclItem>,
87    pub config: Option<ClusterConfig>,
88}
89
90#[derive(
91    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
92)]
93pub struct ClusterIntrospectionSourceIndexKey {
94    pub cluster_id: Option<ClusterId>,
95    pub name: String,
96}
97
98#[derive(
99    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
100)]
101pub struct ClusterIntrospectionSourceIndexValue {
102    pub index_id: u64,
103    pub oid: u32,
104}
105
106#[derive(
107    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
108)]
109pub struct ClusterReplicaKey {
110    pub id: Option<ReplicaId>,
111}
112
113#[derive(
114    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
115)]
116pub struct ClusterReplicaValue {
117    pub cluster_id: Option<ClusterId>,
118    pub name: String,
119    pub config: Option<ReplicaConfig>,
120    pub owner_id: Option<RoleId>,
121}
122
123#[derive(
124    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
125)]
126pub struct DatabaseKey {
127    pub id: Option<DatabaseId>,
128}
129
130#[derive(
131    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
132)]
133pub struct DatabaseValue {
134    pub name: String,
135    pub owner_id: Option<RoleId>,
136    pub privileges: Vec<MzAclItem>,
137    pub oid: u32,
138}
139
140#[derive(
141    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
142)]
143pub struct SchemaKey {
144    pub id: Option<SchemaId>,
145}
146
147#[derive(
148    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
149)]
150pub struct SchemaValue {
151    pub database_id: Option<DatabaseId>,
152    pub name: String,
153    pub owner_id: Option<RoleId>,
154    pub privileges: Vec<MzAclItem>,
155    pub oid: u32,
156}
157
158#[derive(
159    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
160)]
161pub struct ItemKey {
162    pub gid: Option<GlobalId>,
163}
164
165#[derive(
166    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
167)]
168pub struct ItemValue {
169    pub schema_id: Option<SchemaId>,
170    pub name: String,
171    pub definition: Option<CatalogItem>,
172    pub owner_id: Option<RoleId>,
173    pub privileges: Vec<MzAclItem>,
174    pub oid: u32,
175}
176
177#[derive(
178    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
179)]
180pub struct RoleKey {
181    pub id: Option<RoleId>,
182}
183
184#[derive(
185    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
186)]
187pub struct RoleValue {
188    pub name: String,
189    pub attributes: Option<RoleAttributes>,
190    pub membership: Option<RoleMembership>,
191    pub vars: Option<RoleVars>,
192    pub oid: u32,
193}
194
195#[derive(
196    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
197)]
198pub struct ServerConfigurationKey {
199    pub name: String,
200}
201
202#[derive(
203    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
204)]
205pub struct ServerConfigurationValue {
206    pub value: String,
207}
208
209#[derive(
210    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
211)]
212pub struct AuditLogKey {
213    pub event: Option<audit_log_key::Event>,
214}
215
216pub mod audit_log_key {
217    use super::*;
218
219    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
220    pub enum Event {
221        V1(AuditLogEventV1),
222    }
223}
224
225#[derive(
226    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
227)]
228pub struct CommentKey {
229    pub object: Option<comment_key::Object>,
230    pub sub_component: Option<comment_key::SubComponent>,
231}
232
233pub mod comment_key {
234    use super::*;
235
236    #[derive(
237        Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
238    )]
239    pub enum Object {
240        Table(GlobalId),
241        View(GlobalId),
242        MaterializedView(GlobalId),
243        Source(GlobalId),
244        Sink(GlobalId),
245        Index(GlobalId),
246        Func(GlobalId),
247        Connection(GlobalId),
248        Type(GlobalId),
249        Secret(GlobalId),
250        ContinualTask(GlobalId),
251        Role(RoleId),
252        Database(DatabaseId),
253        Schema(ResolvedSchema),
254        Cluster(ClusterId),
255        ClusterReplica(ClusterReplicaId),
256    }
257
258    #[derive(
259        Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
260    )]
261    pub enum SubComponent {
262        ColumnPos(u64),
263    }
264}
265
266#[derive(
267    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
268)]
269pub struct CommentValue {
270    pub comment: String,
271}
272
273#[derive(
274    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
275)]
276pub struct SourceReferencesKey {
277    pub source: Option<GlobalId>,
278}
279
280#[derive(
281    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
282)]
283pub struct SourceReferencesValue {
284    pub references: Vec<SourceReference>,
285    pub updated_at: Option<EpochMillis>,
286}
287
288#[derive(
289    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
290)]
291pub struct SourceReference {
292    pub name: String,
293    pub namespace: Option<String>,
294    pub columns: Vec<String>,
295}
296
297#[derive(
298    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
299)]
300pub struct StorageCollectionMetadataKey {
301    pub id: Option<GlobalId>,
302}
303
304#[derive(
305    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
306)]
307pub struct StorageCollectionMetadataValue {
308    pub shard: String,
309}
310
311#[derive(
312    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
313)]
314pub struct UnfinalizedShardKey {
315    pub shard: String,
316}
317
318#[derive(
319    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
320)]
321pub struct TxnWalShardValue {
322    pub shard: String,
323}
324
325#[derive(
326    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
327)]
328pub struct Empty {}
329
330#[derive(
331    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
332)]
333pub struct StringWrapper {
334    pub inner: String,
335}
336
337#[derive(
338    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
339)]
340pub struct Duration {
341    pub secs: u64,
342    pub nanos: u32,
343}
344
345#[derive(
346    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
347)]
348pub struct EpochMillis {
349    pub millis: u64,
350}
351
352#[derive(
353    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
354)]
355pub struct Timestamp {
356    pub internal: u64,
357}
358
359#[derive(
360    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
361)]
362pub struct CatalogItem {
363    pub value: Option<catalog_item::Value>,
364}
365
366pub mod catalog_item {
367    use super::*;
368
369    #[derive(
370        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
371    )]
372    pub struct V1 {
373        pub create_sql: String,
374    }
375
376    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
377    pub enum Value {
378        V1(V1),
379    }
380}
381
382#[derive(
383    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
384)]
385pub struct GlobalId {
386    pub value: Option<global_id::Value>,
387}
388
389pub mod global_id {
390    use super::*;
391
392    #[derive(
393        Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
394    )]
395    pub enum Value {
396        System(u64),
397        User(u64),
398        Transient(u64),
399        Explain(Empty),
400    }
401}
402
403#[derive(
404    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
405)]
406pub struct ClusterId {
407    pub value: Option<cluster_id::Value>,
408}
409
410pub mod cluster_id {
411    use super::*;
412
413    #[derive(
414        Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
415    )]
416    pub enum Value {
417        System(u64),
418        User(u64),
419    }
420}
421
422#[derive(
423    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
424)]
425pub struct DatabaseId {
426    pub value: Option<database_id::Value>,
427}
428
429pub mod database_id {
430    use super::*;
431
432    #[derive(
433        Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
434    )]
435    pub enum Value {
436        System(u64),
437        User(u64),
438    }
439}
440
441#[derive(
442    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
443)]
444pub struct ResolvedDatabaseSpecifier {
445    pub spec: Option<resolved_database_specifier::Spec>,
446}
447
448pub mod resolved_database_specifier {
449    use super::*;
450
451    #[derive(
452        Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
453    )]
454    pub enum Spec {
455        Ambient(Empty),
456        Id(DatabaseId),
457    }
458}
459
460#[derive(
461    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
462)]
463pub struct SchemaId {
464    pub value: Option<schema_id::Value>,
465}
466
467pub mod schema_id {
468    use super::*;
469
470    #[derive(
471        Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
472    )]
473    pub enum Value {
474        System(u64),
475        User(u64),
476    }
477}
478
479#[derive(
480    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
481)]
482pub struct SchemaSpecifier {
483    pub spec: Option<schema_specifier::Spec>,
484}
485
486pub mod schema_specifier {
487    use super::*;
488
489    #[derive(
490        Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
491    )]
492    pub enum Spec {
493        Temporary(Empty),
494        Id(SchemaId),
495    }
496}
497
498#[derive(
499    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
500)]
501pub struct ResolvedSchema {
502    pub database: Option<ResolvedDatabaseSpecifier>,
503    pub schema: Option<SchemaSpecifier>,
504}
505
506#[derive(
507    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
508)]
509pub struct ReplicaId {
510    pub value: Option<replica_id::Value>,
511}
512
513pub mod replica_id {
514    use super::*;
515
516    #[derive(
517        Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
518    )]
519    pub enum Value {
520        System(u64),
521        User(u64),
522    }
523}
524
525#[derive(
526    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
527)]
528pub struct ClusterReplicaId {
529    pub cluster_id: Option<ClusterId>,
530    pub replica_id: Option<ReplicaId>,
531}
532
533#[derive(
534    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
535)]
536pub struct ReplicaLogging {
537    pub log_logging: bool,
538    pub interval: Option<Duration>,
539}
540
541#[derive(
542    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
543)]
544pub struct OptimizerFeatureOverride {
545    pub name: String,
546    pub value: String,
547}
548
549#[derive(
550    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
551)]
552pub struct ClusterScheduleRefreshOptions {
553    pub rehydration_time_estimate: Option<Duration>,
554}
555
556#[derive(
557    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
558)]
559pub struct ClusterSchedule {
560    pub value: Option<cluster_schedule::Value>,
561}
562
563pub mod cluster_schedule {
564    use super::*;
565
566    #[derive(
567        Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
568    )]
569    pub enum Value {
570        Manual(Empty),
571        Refresh(ClusterScheduleRefreshOptions),
572    }
573}
574
575#[derive(
576    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
577)]
578pub struct ClusterConfig {
579    pub workload_class: Option<String>,
580    pub variant: Option<cluster_config::Variant>,
581}
582
583pub mod cluster_config {
584    use super::*;
585
586    #[derive(
587        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
588    )]
589    pub struct ManagedCluster {
590        pub size: String,
591        pub replication_factor: u32,
592        pub availability_zones: Vec<String>,
593        pub logging: Option<ReplicaLogging>,
594        pub disk: bool,
595        pub optimizer_feature_overrides: Vec<OptimizerFeatureOverride>,
596        pub schedule: Option<ClusterSchedule>,
597    }
598
599    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
600    pub enum Variant {
601        Unmanaged(Empty),
602        Managed(ManagedCluster),
603    }
604}
605
606#[derive(
607    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
608)]
609pub struct ReplicaConfig {
610    pub logging: Option<ReplicaLogging>,
611    pub location: Option<replica_config::Location>,
612}
613
614pub mod replica_config {
615    use super::*;
616
617    #[derive(
618        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
619    )]
620    pub struct UnmanagedLocation {
621        pub storagectl_addrs: Vec<String>,
622        pub storage_addrs: Vec<String>,
623        pub computectl_addrs: Vec<String>,
624        pub compute_addrs: Vec<String>,
625        pub workers: u64,
626    }
627
628    #[derive(
629        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
630    )]
631    pub struct ManagedLocation {
632        pub size: String,
633        pub availability_zone: Option<String>,
634        pub disk: bool,
635        pub internal: bool,
636        pub billed_as: Option<String>,
637        pub pending: bool,
638    }
639
640    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
641    pub enum Location {
642        Unmanaged(UnmanagedLocation),
643        Managed(ManagedLocation),
644    }
645}
646
647#[derive(
648    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
649)]
650pub struct RoleId {
651    pub value: Option<role_id::Value>,
652}
653
654pub mod role_id {
655    use super::*;
656
657    #[derive(
658        Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
659    )]
660    pub enum Value {
661        System(u64),
662        User(u64),
663        Public(Empty),
664        Predefined(u64),
665    }
666}
667
668#[derive(
669    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
670)]
671pub struct RoleAttributes {
672    pub inherit: bool,
673}
674
675#[derive(
676    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
677)]
678pub struct RoleMembership {
679    pub map: Vec<role_membership::Entry>,
680}
681
682pub mod role_membership {
683    use super::*;
684
685    #[derive(
686        Clone,
687        Copy,
688        Debug,
689        Default,
690        PartialEq,
691        Eq,
692        PartialOrd,
693        Ord,
694        Serialize,
695        Deserialize,
696        Arbitrary,
697    )]
698    pub struct Entry {
699        pub key: Option<RoleId>,
700        pub value: Option<RoleId>,
701    }
702}
703
704#[derive(
705    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
706)]
707pub struct RoleVars {
708    pub entries: Vec<role_vars::Entry>,
709}
710
711pub mod role_vars {
712    use super::*;
713
714    #[derive(
715        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
716    )]
717    pub struct SqlSet {
718        pub entries: Vec<String>,
719    }
720
721    #[derive(
722        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
723    )]
724    pub struct Entry {
725        pub key: String,
726        pub val: Option<entry::Val>,
727    }
728
729    pub mod entry {
730        use super::*;
731
732        #[derive(
733            Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
734        )]
735        pub enum Val {
736            Flat(String),
737            SqlSet(SqlSet),
738        }
739    }
740}
741
742#[derive(
743    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
744)]
745pub struct AclMode {
746    pub bitflags: u64,
747}
748
749#[derive(
750    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
751)]
752pub struct MzAclItem {
753    pub grantee: Option<RoleId>,
754    pub grantor: Option<RoleId>,
755    pub acl_mode: Option<AclMode>,
756}
757
758#[derive(
759    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
760)]
761pub struct DefaultPrivilegesKey {
762    pub role_id: Option<RoleId>,
763    pub database_id: Option<DatabaseId>,
764    pub schema_id: Option<SchemaId>,
765    pub object_type: i32,
766    pub grantee: Option<RoleId>,
767}
768
769#[derive(
770    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
771)]
772pub struct DefaultPrivilegesValue {
773    pub privileges: Option<AclMode>,
774}
775
776#[derive(
777    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
778)]
779pub struct SystemPrivilegesKey {
780    pub grantee: Option<RoleId>,
781    pub grantor: Option<RoleId>,
782}
783
784#[derive(
785    Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
786)]
787pub struct SystemPrivilegesValue {
788    pub acl_mode: Option<AclMode>,
789}
790
791#[derive(
792    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
793)]
794pub struct AuditLogEventV1 {
795    pub id: u64,
796    pub event_type: i32,
797    pub object_type: i32,
798    pub user: Option<StringWrapper>,
799    pub occurred_at: Option<EpochMillis>,
800    pub details: Option<audit_log_event_v1::Details>,
801}
802
803pub mod audit_log_event_v1 {
804    use super::*;
805
806    #[derive(
807        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
808    )]
809    pub struct IdFullNameV1 {
810        pub id: String,
811        pub name: Option<FullNameV1>,
812    }
813
814    #[derive(
815        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
816    )]
817    pub struct FullNameV1 {
818        pub database: String,
819        pub schema: String,
820        pub item: String,
821    }
822
823    #[derive(
824        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
825    )]
826    pub struct IdNameV1 {
827        pub id: String,
828        pub name: String,
829    }
830
831    #[derive(
832        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
833    )]
834    pub struct RenameClusterV1 {
835        pub id: String,
836        pub old_name: String,
837        pub new_name: String,
838    }
839
840    #[derive(
841        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
842    )]
843    pub struct RenameClusterReplicaV1 {
844        pub cluster_id: String,
845        pub replica_id: String,
846        pub old_name: String,
847        pub new_name: String,
848    }
849
850    #[derive(
851        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
852    )]
853    pub struct RenameItemV1 {
854        pub id: String,
855        pub old_name: Option<FullNameV1>,
856        pub new_name: Option<FullNameV1>,
857    }
858
859    #[derive(
860        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
861    )]
862    pub struct CreateClusterReplicaV1 {
863        pub cluster_id: String,
864        pub cluster_name: String,
865        pub replica_id: Option<StringWrapper>,
866        pub replica_name: String,
867        pub logical_size: String,
868        pub disk: bool,
869        pub billed_as: Option<String>,
870        pub internal: bool,
871    }
872
873    #[derive(
874        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
875    )]
876    pub struct CreateClusterReplicaV2 {
877        pub cluster_id: String,
878        pub cluster_name: String,
879        pub replica_id: Option<StringWrapper>,
880        pub replica_name: String,
881        pub logical_size: String,
882        pub disk: bool,
883        pub billed_as: Option<String>,
884        pub internal: bool,
885        pub reason: Option<CreateOrDropClusterReplicaReasonV1>,
886        pub scheduling_policies: Option<SchedulingDecisionsWithReasonsV1>,
887    }
888
889    #[derive(
890        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
891    )]
892    pub struct DropClusterReplicaV1 {
893        pub cluster_id: String,
894        pub cluster_name: String,
895        pub replica_id: Option<StringWrapper>,
896        pub replica_name: String,
897    }
898
899    #[derive(
900        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
901    )]
902    pub struct DropClusterReplicaV2 {
903        pub cluster_id: String,
904        pub cluster_name: String,
905        pub replica_id: Option<StringWrapper>,
906        pub replica_name: String,
907        pub reason: Option<CreateOrDropClusterReplicaReasonV1>,
908        pub scheduling_policies: Option<SchedulingDecisionsWithReasonsV1>,
909    }
910
911    #[derive(
912        Clone,
913        Copy,
914        Debug,
915        Default,
916        PartialEq,
917        Eq,
918        PartialOrd,
919        Ord,
920        Serialize,
921        Deserialize,
922        Arbitrary,
923    )]
924    pub struct CreateOrDropClusterReplicaReasonV1 {
925        pub reason: Option<create_or_drop_cluster_replica_reason_v1::Reason>,
926    }
927
928    pub mod create_or_drop_cluster_replica_reason_v1 {
929        use super::*;
930
931        #[derive(
932            Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
933        )]
934        pub enum Reason {
935            Manual(Empty),
936            Schedule(Empty),
937            System(Empty),
938        }
939    }
940
941    #[derive(
942        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
943    )]
944    pub struct SchedulingDecisionsWithReasonsV1 {
945        pub on_refresh: Option<RefreshDecisionWithReasonV1>,
946    }
947
948    #[derive(
949        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
950    )]
951    pub struct RefreshDecisionWithReasonV1 {
952        pub objects_needing_refresh: Vec<String>,
953        pub rehydration_time_estimate: String,
954        pub decision: Option<refresh_decision_with_reason_v1::Decision>,
955    }
956
957    pub mod refresh_decision_with_reason_v1 {
958        use super::*;
959
960        #[derive(
961            Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
962        )]
963        pub enum Decision {
964            On(Empty),
965            Off(Empty),
966        }
967    }
968
969    #[derive(
970        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
971    )]
972    pub struct CreateSourceSinkV1 {
973        pub id: String,
974        pub name: Option<FullNameV1>,
975        pub size: Option<StringWrapper>,
976    }
977
978    #[derive(
979        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
980    )]
981    pub struct CreateSourceSinkV2 {
982        pub id: String,
983        pub name: Option<FullNameV1>,
984        pub size: Option<StringWrapper>,
985        pub external_type: String,
986    }
987
988    #[derive(
989        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
990    )]
991    pub struct CreateSourceSinkV3 {
992        pub id: String,
993        pub name: Option<FullNameV1>,
994        pub external_type: String,
995    }
996
997    #[derive(
998        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
999    )]
1000    pub struct CreateSourceSinkV4 {
1001        pub id: String,
1002        pub cluster_id: Option<StringWrapper>,
1003        pub name: Option<FullNameV1>,
1004        pub external_type: String,
1005    }
1006
1007    #[derive(
1008        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1009    )]
1010    pub struct CreateIndexV1 {
1011        pub id: String,
1012        pub cluster_id: String,
1013        pub name: Option<FullNameV1>,
1014    }
1015
1016    #[derive(
1017        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1018    )]
1019    pub struct CreateMaterializedViewV1 {
1020        pub id: String,
1021        pub cluster_id: String,
1022        pub name: Option<FullNameV1>,
1023    }
1024
1025    #[derive(
1026        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1027    )]
1028    pub struct AlterSourceSinkV1 {
1029        pub id: String,
1030        pub name: Option<FullNameV1>,
1031        pub old_size: Option<StringWrapper>,
1032        pub new_size: Option<StringWrapper>,
1033    }
1034
1035    #[derive(
1036        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1037    )]
1038    pub struct AlterSetClusterV1 {
1039        pub id: String,
1040        pub name: Option<FullNameV1>,
1041        pub old_cluster: Option<StringWrapper>,
1042        pub new_cluster: Option<StringWrapper>,
1043    }
1044
1045    #[derive(
1046        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1047    )]
1048    pub struct GrantRoleV1 {
1049        pub role_id: String,
1050        pub member_id: String,
1051        pub grantor_id: String,
1052    }
1053
1054    #[derive(
1055        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1056    )]
1057    pub struct GrantRoleV2 {
1058        pub role_id: String,
1059        pub member_id: String,
1060        pub grantor_id: String,
1061        pub executed_by: String,
1062    }
1063
1064    #[derive(
1065        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1066    )]
1067    pub struct RevokeRoleV1 {
1068        pub role_id: String,
1069        pub member_id: String,
1070    }
1071
1072    #[derive(
1073        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1074    )]
1075    pub struct RevokeRoleV2 {
1076        pub role_id: String,
1077        pub member_id: String,
1078        pub grantor_id: String,
1079        pub executed_by: String,
1080    }
1081
1082    #[derive(
1083        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1084    )]
1085    pub struct UpdatePrivilegeV1 {
1086        pub object_id: String,
1087        pub grantee_id: String,
1088        pub grantor_id: String,
1089        pub privileges: String,
1090    }
1091
1092    #[derive(
1093        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1094    )]
1095    pub struct AlterDefaultPrivilegeV1 {
1096        pub role_id: String,
1097        pub database_id: Option<StringWrapper>,
1098        pub schema_id: Option<StringWrapper>,
1099        pub grantee_id: String,
1100        pub privileges: String,
1101    }
1102
1103    #[derive(
1104        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1105    )]
1106    pub struct UpdateOwnerV1 {
1107        pub object_id: String,
1108        pub old_owner_id: String,
1109        pub new_owner_id: String,
1110    }
1111
1112    #[derive(
1113        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1114    )]
1115    pub struct SchemaV1 {
1116        pub id: String,
1117        pub name: String,
1118        pub database_name: String,
1119    }
1120
1121    #[derive(
1122        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1123    )]
1124    pub struct SchemaV2 {
1125        pub id: String,
1126        pub name: String,
1127        pub database_name: Option<StringWrapper>,
1128    }
1129
1130    #[derive(
1131        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1132    )]
1133    pub struct RenameSchemaV1 {
1134        pub id: String,
1135        pub database_name: Option<String>,
1136        pub old_name: String,
1137        pub new_name: String,
1138    }
1139
1140    #[derive(
1141        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1142    )]
1143    pub struct UpdateItemV1 {
1144        pub id: String,
1145        pub name: Option<FullNameV1>,
1146    }
1147
1148    #[derive(
1149        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1150    )]
1151    pub struct AlterRetainHistoryV1 {
1152        pub id: String,
1153        pub old_history: Option<String>,
1154        pub new_history: Option<String>,
1155    }
1156
1157    #[derive(
1158        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1159    )]
1160    pub struct ToNewIdV1 {
1161        pub id: String,
1162        pub new_id: String,
1163    }
1164
1165    #[derive(
1166        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1167    )]
1168    pub struct FromPreviousIdV1 {
1169        pub id: String,
1170        pub previous_id: String,
1171    }
1172
1173    #[derive(
1174        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1175    )]
1176    pub struct SetV1 {
1177        pub name: String,
1178        pub value: Option<String>,
1179    }
1180
1181    #[derive(
1182        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1183    )]
1184    pub struct RotateKeysV1 {
1185        pub id: String,
1186        pub name: String,
1187    }
1188
1189    #[derive(
1190        Clone,
1191        Copy,
1192        Debug,
1193        PartialEq,
1194        Eq,
1195        Hash,
1196        PartialOrd,
1197        Ord,
1198        Arbitrary,
1199        IntoPrimitive,
1200        TryFromPrimitive,
1201    )]
1202    #[repr(i32)]
1203    pub enum EventType {
1204        Unknown = 0,
1205        Create = 1,
1206        Drop = 2,
1207        Alter = 3,
1208        Grant = 4,
1209        Revoke = 5,
1210        Comment = 6,
1211    }
1212
1213    #[derive(
1214        Clone,
1215        Copy,
1216        Debug,
1217        PartialEq,
1218        Eq,
1219        Hash,
1220        PartialOrd,
1221        Ord,
1222        Arbitrary,
1223        IntoPrimitive,
1224        TryFromPrimitive,
1225    )]
1226    #[repr(i32)]
1227    pub enum ObjectType {
1228        Unknown = 0,
1229        Cluster = 1,
1230        ClusterReplica = 2,
1231        Connection = 3,
1232        Database = 4,
1233        Func = 5,
1234        Index = 6,
1235        MaterializedView = 7,
1236        Role = 8,
1237        Secret = 9,
1238        Schema = 10,
1239        Sink = 11,
1240        Source = 12,
1241        Table = 13,
1242        Type = 14,
1243        View = 15,
1244        System = 16,
1245        ContinualTask = 17,
1246    }
1247
1248    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
1249    pub enum Details {
1250        CreateClusterReplicaV1(CreateClusterReplicaV1),
1251        CreateClusterReplicaV2(CreateClusterReplicaV2),
1252        DropClusterReplicaV1(DropClusterReplicaV1),
1253        DropClusterReplicaV2(DropClusterReplicaV2),
1254        CreateSourceSinkV1(CreateSourceSinkV1),
1255        CreateSourceSinkV2(CreateSourceSinkV2),
1256        AlterSourceSinkV1(AlterSourceSinkV1),
1257        AlterSetClusterV1(AlterSetClusterV1),
1258        GrantRoleV1(GrantRoleV1),
1259        GrantRoleV2(GrantRoleV2),
1260        RevokeRoleV1(RevokeRoleV1),
1261        RevokeRoleV2(RevokeRoleV2),
1262        UpdatePrivilegeV1(UpdatePrivilegeV1),
1263        AlterDefaultPrivilegeV1(AlterDefaultPrivilegeV1),
1264        UpdateOwnerV1(UpdateOwnerV1),
1265        IdFullNameV1(IdFullNameV1),
1266        RenameClusterV1(RenameClusterV1),
1267        RenameClusterReplicaV1(RenameClusterReplicaV1),
1268        RenameItemV1(RenameItemV1),
1269        IdNameV1(IdNameV1),
1270        SchemaV1(SchemaV1),
1271        SchemaV2(SchemaV2),
1272        RenameSchemaV1(RenameSchemaV1),
1273        UpdateItemV1(UpdateItemV1),
1274        CreateSourceSinkV3(CreateSourceSinkV3),
1275        AlterRetainHistoryV1(AlterRetainHistoryV1),
1276        ToNewIdV1(ToNewIdV1),
1277        FromPreviousIdV1(FromPreviousIdV1),
1278        SetV1(SetV1),
1279        ResetAllV1(Empty),
1280        RotateKeysV1(RotateKeysV1),
1281        CreateSourceSinkV4(CreateSourceSinkV4),
1282        CreateIndexV1(CreateIndexV1),
1283        CreateMaterializedViewV1(CreateMaterializedViewV1),
1284    }
1285}
1286
1287#[derive(
1288    Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1289)]
1290pub struct StateUpdateKind {
1291    pub kind: Option<state_update_kind::Kind>,
1292}
1293
1294pub mod state_update_kind {
1295    use super::*;
1296
1297    #[derive(
1298        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1299    )]
1300    pub struct AuditLog {
1301        pub key: Option<AuditLogKey>,
1302    }
1303
1304    #[derive(
1305        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1306    )]
1307    pub struct Cluster {
1308        pub key: Option<ClusterKey>,
1309        pub value: Option<ClusterValue>,
1310    }
1311
1312    #[derive(
1313        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1314    )]
1315    pub struct ClusterReplica {
1316        pub key: Option<ClusterReplicaKey>,
1317        pub value: Option<ClusterReplicaValue>,
1318    }
1319
1320    #[derive(
1321        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1322    )]
1323    pub struct Comment {
1324        pub key: Option<CommentKey>,
1325        pub value: Option<CommentValue>,
1326    }
1327
1328    #[derive(
1329        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1330    )]
1331    pub struct Config {
1332        pub key: Option<ConfigKey>,
1333        pub value: Option<ConfigValue>,
1334    }
1335
1336    #[derive(
1337        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1338    )]
1339    pub struct Database {
1340        pub key: Option<DatabaseKey>,
1341        pub value: Option<DatabaseValue>,
1342    }
1343
1344    #[derive(
1345        Clone,
1346        Copy,
1347        Debug,
1348        Default,
1349        PartialEq,
1350        Eq,
1351        PartialOrd,
1352        Ord,
1353        Serialize,
1354        Deserialize,
1355        Arbitrary,
1356    )]
1357    pub struct DefaultPrivileges {
1358        pub key: Option<DefaultPrivilegesKey>,
1359        pub value: Option<DefaultPrivilegesValue>,
1360    }
1361
1362    #[derive(
1363        Clone,
1364        Copy,
1365        Debug,
1366        Default,
1367        PartialEq,
1368        Eq,
1369        PartialOrd,
1370        Ord,
1371        Serialize,
1372        Deserialize,
1373        Arbitrary,
1374    )]
1375    pub struct FenceToken {
1376        pub deploy_generation: u64,
1377        pub epoch: i64,
1378    }
1379
1380    #[derive(
1381        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1382    )]
1383    pub struct IdAlloc {
1384        pub key: Option<IdAllocKey>,
1385        pub value: Option<IdAllocValue>,
1386    }
1387
1388    #[derive(
1389        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1390    )]
1391    pub struct ClusterIntrospectionSourceIndex {
1392        pub key: Option<ClusterIntrospectionSourceIndexKey>,
1393        pub value: Option<ClusterIntrospectionSourceIndexValue>,
1394    }
1395
1396    #[derive(
1397        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1398    )]
1399    pub struct Item {
1400        pub key: Option<ItemKey>,
1401        pub value: Option<ItemValue>,
1402    }
1403
1404    #[derive(
1405        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1406    )]
1407    pub struct Role {
1408        pub key: Option<RoleKey>,
1409        pub value: Option<RoleValue>,
1410    }
1411
1412    #[derive(
1413        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1414    )]
1415    pub struct Schema {
1416        pub key: Option<SchemaKey>,
1417        pub value: Option<SchemaValue>,
1418    }
1419
1420    #[derive(
1421        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1422    )]
1423    pub struct Setting {
1424        pub key: Option<SettingKey>,
1425        pub value: Option<SettingValue>,
1426    }
1427
1428    #[derive(
1429        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1430    )]
1431    pub struct ServerConfiguration {
1432        pub key: Option<ServerConfigurationKey>,
1433        pub value: Option<ServerConfigurationValue>,
1434    }
1435
1436    #[derive(
1437        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1438    )]
1439    pub struct SourceReferences {
1440        pub key: Option<SourceReferencesKey>,
1441        pub value: Option<SourceReferencesValue>,
1442    }
1443
1444    #[derive(
1445        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1446    )]
1447    pub struct GidMapping {
1448        pub key: Option<GidMappingKey>,
1449        pub value: Option<GidMappingValue>,
1450    }
1451
1452    #[derive(
1453        Clone,
1454        Copy,
1455        Debug,
1456        Default,
1457        PartialEq,
1458        Eq,
1459        PartialOrd,
1460        Ord,
1461        Serialize,
1462        Deserialize,
1463        Arbitrary,
1464    )]
1465    pub struct SystemPrivileges {
1466        pub key: Option<SystemPrivilegesKey>,
1467        pub value: Option<SystemPrivilegesValue>,
1468    }
1469
1470    #[derive(
1471        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1472    )]
1473    pub struct StorageCollectionMetadata {
1474        pub key: Option<StorageCollectionMetadataKey>,
1475        pub value: Option<StorageCollectionMetadataValue>,
1476    }
1477
1478    #[derive(
1479        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1480    )]
1481    pub struct UnfinalizedShard {
1482        pub key: Option<UnfinalizedShardKey>,
1483    }
1484
1485    #[derive(
1486        Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
1487    )]
1488    pub struct TxnWalShard {
1489        pub value: Option<TxnWalShardValue>,
1490    }
1491
1492    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
1493    // Serialize the top-level enum in the persist-backed catalog as internally tagged to set up
1494    // persist pushdown statistics for success.
1495    #[serde(tag = "kind")]
1496    pub enum Kind {
1497        AuditLog(AuditLog),
1498        Cluster(Cluster),
1499        ClusterReplica(ClusterReplica),
1500        Comment(Comment),
1501        Config(Config),
1502        Database(Database),
1503        DefaultPrivileges(DefaultPrivileges),
1504        IdAlloc(IdAlloc),
1505        ClusterIntrospectionSourceIndex(ClusterIntrospectionSourceIndex),
1506        Item(Item),
1507        Role(Role),
1508        Schema(Schema),
1509        Setting(Setting),
1510        ServerConfiguration(ServerConfiguration),
1511        GidMapping(GidMapping),
1512        SystemPrivileges(SystemPrivileges),
1513        StorageCollectionMetadata(StorageCollectionMetadata),
1514        UnfinalizedShard(UnfinalizedShard),
1515        TxnWalShard(TxnWalShard),
1516        SourceReferences(SourceReferences),
1517        FenceToken(FenceToken),
1518    }
1519}
1520
1521#[derive(
1522    Clone,
1523    Copy,
1524    Debug,
1525    PartialEq,
1526    Eq,
1527    Hash,
1528    PartialOrd,
1529    Ord,
1530    Arbitrary,
1531    IntoPrimitive,
1532    TryFromPrimitive,
1533)]
1534#[repr(i32)]
1535pub enum CatalogItemType {
1536    Unknown = 0,
1537    Table = 1,
1538    Source = 2,
1539    Sink = 3,
1540    View = 4,
1541    MaterializedView = 5,
1542    Index = 6,
1543    Type = 7,
1544    Func = 8,
1545    Secret = 9,
1546    Connection = 10,
1547    ContinualTask = 11,
1548}
1549
1550#[derive(
1551    Clone,
1552    Copy,
1553    Debug,
1554    PartialEq,
1555    Eq,
1556    Hash,
1557    PartialOrd,
1558    Ord,
1559    Arbitrary,
1560    IntoPrimitive,
1561    TryFromPrimitive,
1562)]
1563#[repr(i32)]
1564pub enum ObjectType {
1565    Unknown = 0,
1566    Table = 1,
1567    View = 2,
1568    MaterializedView = 3,
1569    Source = 4,
1570    Sink = 5,
1571    Index = 6,
1572    Type = 7,
1573    Role = 8,
1574    Cluster = 9,
1575    ClusterReplica = 10,
1576    Secret = 11,
1577    Connection = 12,
1578    Database = 13,
1579    Schema = 14,
1580    Func = 15,
1581    ContinualTask = 16,
1582}