mz_catalog_protos/
objects_v80.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 proptest_derive::Arbitrary;
11use serde::{Deserialize, Serialize};
12use serde_repr::{Deserialize_repr, Serialize_repr};
13
14#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
15pub struct ConfigKey {
16    pub key: String,
17}
18
19#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
20pub struct ConfigValue {
21    pub value: u64,
22}
23
24#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
25pub struct SettingKey {
26    pub name: String,
27}
28
29#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
30pub struct SettingValue {
31    pub value: String,
32}
33
34#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
35pub struct IdAllocKey {
36    pub name: String,
37}
38
39#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
40pub struct IdAllocValue {
41    pub next_id: u64,
42}
43
44#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
45pub struct GidMappingKey {
46    pub schema_name: String,
47    pub object_type: CatalogItemType,
48    pub object_name: String,
49}
50
51#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
52pub struct GidMappingValue {
53    pub catalog_id: SystemCatalogItemId,
54    pub global_id: SystemGlobalId,
55    pub fingerprint: String,
56}
57
58#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
59pub struct ClusterKey {
60    pub id: ClusterId,
61}
62
63#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
64pub struct ClusterValue {
65    pub name: String,
66    pub owner_id: RoleId,
67    pub privileges: Vec<MzAclItem>,
68    pub config: ClusterConfig,
69}
70
71#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
72pub struct ClusterIntrospectionSourceIndexKey {
73    pub cluster_id: ClusterId,
74    pub name: String,
75}
76
77#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
78pub struct ClusterIntrospectionSourceIndexValue {
79    pub catalog_id: IntrospectionSourceIndexCatalogItemId,
80    pub global_id: IntrospectionSourceIndexGlobalId,
81    pub oid: u32,
82}
83
84#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
85pub struct ClusterReplicaKey {
86    pub id: ReplicaId,
87}
88
89#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
90pub struct ClusterReplicaValue {
91    pub cluster_id: ClusterId,
92    pub name: String,
93    pub config: ReplicaConfig,
94    pub owner_id: RoleId,
95}
96
97#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
98pub struct DatabaseKey {
99    pub id: DatabaseId,
100}
101
102#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
103pub struct DatabaseValue {
104    pub name: String,
105    pub owner_id: RoleId,
106    pub privileges: Vec<MzAclItem>,
107    pub oid: u32,
108}
109
110#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
111pub struct SchemaKey {
112    pub id: SchemaId,
113}
114
115#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
116pub struct SchemaValue {
117    pub database_id: Option<DatabaseId>,
118    pub name: String,
119    pub owner_id: RoleId,
120    pub privileges: Vec<MzAclItem>,
121    pub oid: u32,
122}
123
124#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
125pub struct ItemKey {
126    pub gid: CatalogItemId,
127}
128
129#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
130pub struct ItemValue {
131    pub schema_id: SchemaId,
132    pub name: String,
133    pub definition: CatalogItem,
134    pub owner_id: RoleId,
135    pub privileges: Vec<MzAclItem>,
136    pub oid: u32,
137    pub global_id: GlobalId,
138    pub extra_versions: Vec<ItemVersion>,
139}
140
141#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
142pub struct ItemVersion {
143    pub global_id: GlobalId,
144    pub version: Version,
145}
146
147#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
148pub struct RoleKey {
149    pub id: RoleId,
150}
151
152#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
153pub struct RoleValue {
154    pub name: String,
155    pub attributes: RoleAttributes,
156    pub membership: RoleMembership,
157    pub vars: RoleVars,
158    pub oid: u32,
159}
160
161#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
162pub struct RoleAuthKey {
163    pub id: RoleId,
164}
165
166#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
167pub struct RoleAuthValue {
168    pub password_hash: Option<String>,
169    pub updated_at: EpochMillis,
170}
171
172#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
173pub struct NetworkPolicyKey {
174    pub id: NetworkPolicyId,
175}
176
177#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
178pub struct NetworkPolicyValue {
179    pub name: String,
180    pub rules: Vec<NetworkPolicyRule>,
181    pub owner_id: RoleId,
182    pub privileges: Vec<MzAclItem>,
183    pub oid: u32,
184}
185
186#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
187pub struct ServerConfigurationKey {
188    pub name: String,
189}
190
191#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
192pub struct ServerConfigurationValue {
193    pub value: String,
194}
195
196#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
197pub struct AuditLogKey {
198    pub event: AuditLogEvent,
199}
200
201#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
202pub enum AuditLogEvent {
203    V1(AuditLogEventV1),
204}
205
206#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
207pub struct CommentKey {
208    pub object: CommentObject,
209    pub sub_component: Option<CommentSubComponent>,
210}
211
212#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
213pub enum CommentObject {
214    Table(CatalogItemId),
215    View(CatalogItemId),
216    MaterializedView(CatalogItemId),
217    Source(CatalogItemId),
218    Sink(CatalogItemId),
219    Index(CatalogItemId),
220    Func(CatalogItemId),
221    Connection(CatalogItemId),
222    Type(CatalogItemId),
223    Secret(CatalogItemId),
224    ContinualTask(CatalogItemId),
225    Role(RoleId),
226    Database(DatabaseId),
227    Schema(ResolvedSchema),
228    Cluster(ClusterId),
229    ClusterReplica(ClusterReplicaId),
230    NetworkPolicy(NetworkPolicyId),
231}
232
233#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
234pub enum CommentSubComponent {
235    ColumnPos(u64),
236}
237
238#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
239pub struct CommentValue {
240    pub comment: String,
241}
242
243#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
244pub struct SourceReferencesKey {
245    pub source: CatalogItemId,
246}
247
248#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
249pub struct SourceReferencesValue {
250    pub references: Vec<SourceReference>,
251    pub updated_at: EpochMillis,
252}
253
254#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
255pub struct SourceReference {
256    pub name: String,
257    pub namespace: Option<String>,
258    pub columns: Vec<String>,
259}
260
261#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
262pub struct StorageCollectionMetadataKey {
263    pub id: GlobalId,
264}
265
266#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
267pub struct StorageCollectionMetadataValue {
268    pub shard: String,
269}
270
271#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
272pub struct UnfinalizedShardKey {
273    pub shard: String,
274}
275
276#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
277pub struct TxnWalShardValue {
278    pub shard: String,
279}
280
281#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
282pub struct Empty {}
283
284#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
285pub struct StringWrapper {
286    pub inner: String,
287}
288
289#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
290pub struct Duration {
291    pub secs: u64,
292    pub nanos: u32,
293}
294
295#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
296pub struct EpochMillis {
297    pub millis: u64,
298}
299
300#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
301pub struct Version {
302    pub value: u64,
303}
304
305#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
306pub enum CatalogItem {
307    V1(CatalogItemV1),
308}
309
310#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
311pub struct CatalogItemV1 {
312    pub create_sql: String,
313}
314
315#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
316pub enum CatalogItemId {
317    System(u64),
318    User(u64),
319    Transient(u64),
320    IntrospectionSourceIndex(u64),
321}
322
323#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
324pub struct SystemCatalogItemId(pub u64);
325
326#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
327pub struct IntrospectionSourceIndexCatalogItemId(pub u64);
328
329#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
330pub enum GlobalId {
331    System(u64),
332    User(u64),
333    Transient(u64),
334    Explain,
335    IntrospectionSourceIndex(u64),
336}
337
338#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
339pub struct SystemGlobalId(pub u64);
340
341#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
342pub struct IntrospectionSourceIndexGlobalId(pub u64);
343
344#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
345pub enum ClusterId {
346    System(u64),
347    User(u64),
348}
349
350#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
351pub enum DatabaseId {
352    System(u64),
353    User(u64),
354}
355
356#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
357pub enum ResolvedDatabaseSpecifier {
358    Ambient,
359    Id(DatabaseId),
360}
361
362#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
363pub enum SchemaId {
364    System(u64),
365    User(u64),
366}
367
368#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
369pub enum SchemaSpecifier {
370    Temporary,
371    Id(SchemaId),
372}
373
374#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
375pub struct ResolvedSchema {
376    pub database: ResolvedDatabaseSpecifier,
377    pub schema: SchemaSpecifier,
378}
379
380#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
381pub enum ReplicaId {
382    System(u64),
383    User(u64),
384}
385
386#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
387pub struct ClusterReplicaId {
388    pub cluster_id: ClusterId,
389    pub replica_id: ReplicaId,
390}
391
392#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
393pub enum NetworkPolicyId {
394    System(u64),
395    User(u64),
396}
397
398#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
399pub struct ReplicaLogging {
400    pub log_logging: bool,
401    pub interval: Option<Duration>,
402}
403
404#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
405pub struct OptimizerFeatureOverride {
406    pub name: String,
407    pub value: String,
408}
409
410#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
411pub struct ClusterScheduleRefreshOptions {
412    pub rehydration_time_estimate: Duration,
413}
414
415#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
416pub enum ClusterSchedule {
417    Manual,
418    Refresh(ClusterScheduleRefreshOptions),
419}
420
421#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
422pub struct ClusterConfig {
423    pub workload_class: Option<String>,
424    pub variant: ClusterVariant,
425}
426
427#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
428pub enum ClusterVariant {
429    Unmanaged,
430    Managed(ManagedCluster),
431}
432
433#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
434pub struct ManagedCluster {
435    pub size: String,
436    pub replication_factor: u32,
437    pub availability_zones: Vec<String>,
438    pub logging: ReplicaLogging,
439    pub optimizer_feature_overrides: Vec<OptimizerFeatureOverride>,
440    pub schedule: ClusterSchedule,
441}
442
443#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
444pub struct ReplicaConfig {
445    pub logging: ReplicaLogging,
446    pub location: ReplicaLocation,
447}
448
449#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
450pub struct UnmanagedLocation {
451    pub storagectl_addrs: Vec<String>,
452    pub computectl_addrs: Vec<String>,
453}
454
455#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
456pub struct ManagedLocation {
457    pub size: String,
458    pub availability_zone: Option<String>,
459    pub internal: bool,
460    pub billed_as: Option<String>,
461    pub pending: bool,
462}
463
464#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
465pub enum ReplicaLocation {
466    Unmanaged(UnmanagedLocation),
467    Managed(ManagedLocation),
468}
469
470#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
471pub enum RoleId {
472    System(u64),
473    User(u64),
474    Public,
475    Predefined(u64),
476}
477
478#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
479pub struct RoleAttributes {
480    pub inherit: bool,
481    pub superuser: Option<bool>,
482    pub login: Option<bool>,
483}
484
485#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
486pub struct RoleMembership {
487    pub map: Vec<RoleMembershipEntry>,
488}
489
490#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
491pub struct RoleMembershipEntry {
492    pub key: RoleId,
493    pub value: RoleId,
494}
495
496#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
497pub struct RoleVars {
498    pub entries: Vec<RoleVarsEntry>,
499}
500
501#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
502pub struct RoleVarsEntry {
503    pub key: String,
504    pub val: RoleVar,
505}
506
507#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
508pub enum RoleVar {
509    Flat(String),
510    SqlSet(Vec<String>),
511}
512
513#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
514pub struct NetworkPolicyRule {
515    pub name: String,
516    pub address: String,
517    pub action: NetworkPolicyRuleAction,
518    pub direction: NetworkPolicyRuleDirection,
519}
520
521#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
522pub enum NetworkPolicyRuleAction {
523    Allow,
524}
525
526#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
527pub enum NetworkPolicyRuleDirection {
528    Ingress,
529}
530
531#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
532pub struct AclMode {
533    pub bitflags: u64,
534}
535
536#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
537pub struct MzAclItem {
538    pub grantee: RoleId,
539    pub grantor: RoleId,
540    pub acl_mode: AclMode,
541}
542
543#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
544pub struct DefaultPrivilegesKey {
545    pub role_id: RoleId,
546    pub database_id: Option<DatabaseId>,
547    pub schema_id: Option<SchemaId>,
548    pub object_type: ObjectType,
549    pub grantee: RoleId,
550}
551
552#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
553pub struct DefaultPrivilegesValue {
554    pub privileges: AclMode,
555}
556
557#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
558pub struct SystemPrivilegesKey {
559    pub grantee: RoleId,
560    pub grantor: RoleId,
561}
562
563#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
564pub struct SystemPrivilegesValue {
565    pub acl_mode: AclMode,
566}
567
568#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
569pub struct AuditLogEventV1 {
570    pub id: u64,
571    pub event_type: audit_log_event_v1::EventType,
572    pub object_type: audit_log_event_v1::ObjectType,
573    pub user: Option<StringWrapper>,
574    pub occurred_at: EpochMillis,
575    pub details: audit_log_event_v1::Details,
576}
577
578pub mod audit_log_event_v1 {
579    use super::*;
580
581    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
582    pub struct IdFullNameV1 {
583        pub id: String,
584        pub name: FullNameV1,
585    }
586
587    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
588    pub struct FullNameV1 {
589        pub database: String,
590        pub schema: String,
591        pub item: String,
592    }
593
594    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
595    pub struct IdNameV1 {
596        pub id: String,
597        pub name: String,
598    }
599
600    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
601    pub struct RenameClusterV1 {
602        pub id: String,
603        pub old_name: String,
604        pub new_name: String,
605    }
606
607    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
608    pub struct RenameClusterReplicaV1 {
609        pub cluster_id: String,
610        pub replica_id: String,
611        pub old_name: String,
612        pub new_name: String,
613    }
614
615    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
616    pub struct RenameItemV1 {
617        pub id: String,
618        pub old_name: FullNameV1,
619        pub new_name: FullNameV1,
620    }
621
622    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
623    pub struct CreateClusterReplicaV1 {
624        pub cluster_id: String,
625        pub cluster_name: String,
626        pub replica_id: Option<StringWrapper>,
627        pub replica_name: String,
628        pub logical_size: String,
629        pub disk: bool,
630        pub billed_as: Option<String>,
631        pub internal: bool,
632    }
633
634    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
635    pub struct CreateClusterReplicaV2 {
636        pub cluster_id: String,
637        pub cluster_name: String,
638        pub replica_id: Option<StringWrapper>,
639        pub replica_name: String,
640        pub logical_size: String,
641        pub disk: bool,
642        pub billed_as: Option<String>,
643        pub internal: bool,
644        pub reason: CreateOrDropClusterReplicaReasonV1,
645        pub scheduling_policies: Option<SchedulingDecisionsWithReasonsV1>,
646    }
647
648    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
649    pub struct CreateClusterReplicaV3 {
650        pub cluster_id: String,
651        pub cluster_name: String,
652        pub replica_id: Option<StringWrapper>,
653        pub replica_name: String,
654        pub logical_size: String,
655        pub disk: bool,
656        pub billed_as: Option<String>,
657        pub internal: bool,
658        pub reason: CreateOrDropClusterReplicaReasonV1,
659        pub scheduling_policies: Option<SchedulingDecisionsWithReasonsV2>,
660    }
661
662    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
663    pub struct CreateClusterReplicaV4 {
664        pub cluster_id: String,
665        pub cluster_name: String,
666        pub replica_id: Option<StringWrapper>,
667        pub replica_name: String,
668        pub logical_size: String,
669        pub billed_as: Option<String>,
670        pub internal: bool,
671        pub reason: CreateOrDropClusterReplicaReasonV1,
672        pub scheduling_policies: Option<SchedulingDecisionsWithReasonsV2>,
673    }
674
675    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
676    pub struct DropClusterReplicaV1 {
677        pub cluster_id: String,
678        pub cluster_name: String,
679        pub replica_id: Option<StringWrapper>,
680        pub replica_name: String,
681    }
682
683    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
684    pub struct DropClusterReplicaV2 {
685        pub cluster_id: String,
686        pub cluster_name: String,
687        pub replica_id: Option<StringWrapper>,
688        pub replica_name: String,
689        pub reason: CreateOrDropClusterReplicaReasonV1,
690        pub scheduling_policies: Option<SchedulingDecisionsWithReasonsV1>,
691    }
692
693    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
694    pub struct DropClusterReplicaV3 {
695        pub cluster_id: String,
696        pub cluster_name: String,
697        pub replica_id: Option<StringWrapper>,
698        pub replica_name: String,
699        pub reason: CreateOrDropClusterReplicaReasonV1,
700        pub scheduling_policies: Option<SchedulingDecisionsWithReasonsV2>,
701    }
702
703    #[derive(
704        Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
705    )]
706    pub struct CreateOrDropClusterReplicaReasonV1 {
707        pub reason: CreateOrDropClusterReplicaReasonV1Reason,
708    }
709
710    #[derive(
711        Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary,
712    )]
713    pub enum CreateOrDropClusterReplicaReasonV1Reason {
714        Manual(Empty),
715        Schedule(Empty),
716        System(Empty),
717    }
718
719    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
720    pub struct SchedulingDecisionsWithReasonsV1 {
721        pub on_refresh: RefreshDecisionWithReasonV1,
722    }
723
724    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
725    pub struct SchedulingDecisionsWithReasonsV2 {
726        pub on_refresh: RefreshDecisionWithReasonV2,
727    }
728
729    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
730    pub enum RefreshDecision {
731        On(Empty),
732        Off(Empty),
733    }
734
735    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
736    pub struct RefreshDecisionWithReasonV1 {
737        pub objects_needing_refresh: Vec<String>,
738        pub rehydration_time_estimate: String,
739        pub decision: RefreshDecision,
740    }
741
742    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
743    pub struct RefreshDecisionWithReasonV2 {
744        pub objects_needing_refresh: Vec<String>,
745        pub objects_needing_compaction: Vec<String>,
746        pub rehydration_time_estimate: String,
747        pub decision: RefreshDecision,
748    }
749
750    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
751    pub struct CreateSourceSinkV1 {
752        pub id: String,
753        pub name: FullNameV1,
754        pub size: Option<StringWrapper>,
755    }
756
757    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
758    pub struct CreateSourceSinkV2 {
759        pub id: String,
760        pub name: FullNameV1,
761        pub size: Option<StringWrapper>,
762        pub external_type: String,
763    }
764
765    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
766    pub struct CreateSourceSinkV3 {
767        pub id: String,
768        pub name: FullNameV1,
769        pub external_type: String,
770    }
771
772    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
773    pub struct CreateSourceSinkV4 {
774        pub id: String,
775        pub cluster_id: Option<StringWrapper>,
776        pub name: FullNameV1,
777        pub external_type: String,
778    }
779
780    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
781    pub struct CreateIndexV1 {
782        pub id: String,
783        pub cluster_id: String,
784        pub name: FullNameV1,
785    }
786
787    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
788    pub struct CreateMaterializedViewV1 {
789        pub id: String,
790        pub cluster_id: String,
791        pub name: FullNameV1,
792        pub replacement_target_id: Option<String>,
793    }
794
795    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
796    pub struct AlterApplyReplacementV1 {
797        pub target: IdFullNameV1,
798        pub replacement: IdFullNameV1,
799    }
800
801    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
802    pub struct AlterSourceSinkV1 {
803        pub id: String,
804        pub name: FullNameV1,
805        pub old_size: Option<StringWrapper>,
806        pub new_size: Option<StringWrapper>,
807    }
808
809    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
810    pub struct AlterSetClusterV1 {
811        pub id: String,
812        pub name: FullNameV1,
813        pub old_cluster_id: String,
814        pub new_cluster_id: String,
815    }
816
817    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
818    pub struct GrantRoleV1 {
819        pub role_id: String,
820        pub member_id: String,
821        pub grantor_id: String,
822    }
823
824    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
825    pub struct GrantRoleV2 {
826        pub role_id: String,
827        pub member_id: String,
828        pub grantor_id: String,
829        pub executed_by: String,
830    }
831
832    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
833    pub struct RevokeRoleV1 {
834        pub role_id: String,
835        pub member_id: String,
836    }
837
838    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
839    pub struct RevokeRoleV2 {
840        pub role_id: String,
841        pub member_id: String,
842        pub grantor_id: String,
843        pub executed_by: String,
844    }
845
846    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
847    pub struct UpdatePrivilegeV1 {
848        pub object_id: String,
849        pub grantee_id: String,
850        pub grantor_id: String,
851        pub privileges: String,
852    }
853
854    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
855    pub struct AlterDefaultPrivilegeV1 {
856        pub role_id: String,
857        pub database_id: Option<StringWrapper>,
858        pub schema_id: Option<StringWrapper>,
859        pub grantee_id: String,
860        pub privileges: String,
861    }
862
863    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
864    pub struct UpdateOwnerV1 {
865        pub object_id: String,
866        pub old_owner_id: String,
867        pub new_owner_id: String,
868    }
869
870    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
871    pub struct SchemaV1 {
872        pub id: String,
873        pub name: String,
874        pub database_name: String,
875    }
876
877    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
878    pub struct SchemaV2 {
879        pub id: String,
880        pub name: String,
881        pub database_name: Option<StringWrapper>,
882    }
883
884    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
885    pub struct RenameSchemaV1 {
886        pub id: String,
887        pub database_name: Option<String>,
888        pub old_name: String,
889        pub new_name: String,
890    }
891
892    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
893    pub struct UpdateItemV1 {
894        pub id: String,
895        pub name: FullNameV1,
896    }
897
898    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
899    pub struct AlterRetainHistoryV1 {
900        pub id: String,
901        pub old_history: Option<String>,
902        pub new_history: Option<String>,
903    }
904
905    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
906    pub struct ToNewIdV1 {
907        pub id: String,
908        pub new_id: String,
909    }
910
911    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
912    pub struct FromPreviousIdV1 {
913        pub id: String,
914        pub previous_id: String,
915    }
916
917    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
918    pub struct SetV1 {
919        pub name: String,
920        pub value: Option<String>,
921    }
922
923    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
924    pub struct RotateKeysV1 {
925        pub id: String,
926        pub name: String,
927    }
928
929    #[derive(
930        Clone,
931        Copy,
932        Debug,
933        PartialEq,
934        Eq,
935        Hash,
936        PartialOrd,
937        Ord,
938        Serialize_repr,
939        Deserialize_repr,
940        Arbitrary,
941    )]
942    #[repr(u8)]
943    pub enum EventType {
944        Unknown = 0,
945        Create = 1,
946        Drop = 2,
947        Alter = 3,
948        Grant = 4,
949        Revoke = 5,
950        Comment = 6,
951    }
952
953    #[derive(
954        Clone,
955        Copy,
956        Debug,
957        PartialEq,
958        Eq,
959        Hash,
960        PartialOrd,
961        Ord,
962        Serialize_repr,
963        Deserialize_repr,
964        Arbitrary,
965    )]
966    #[repr(u8)]
967    pub enum ObjectType {
968        Unknown = 0,
969        Cluster = 1,
970        ClusterReplica = 2,
971        Connection = 3,
972        Database = 4,
973        Func = 5,
974        Index = 6,
975        MaterializedView = 7,
976        Role = 8,
977        Secret = 9,
978        Schema = 10,
979        Sink = 11,
980        Source = 12,
981        Table = 13,
982        Type = 14,
983        View = 15,
984        System = 16,
985        ContinualTask = 17,
986        NetworkPolicy = 18,
987    }
988
989    #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
990    pub enum Details {
991        CreateClusterReplicaV1(CreateClusterReplicaV1),
992        CreateClusterReplicaV2(CreateClusterReplicaV2),
993        CreateClusterReplicaV3(CreateClusterReplicaV3),
994        CreateClusterReplicaV4(CreateClusterReplicaV4),
995        DropClusterReplicaV1(DropClusterReplicaV1),
996        DropClusterReplicaV2(DropClusterReplicaV2),
997        DropClusterReplicaV3(DropClusterReplicaV3),
998        CreateSourceSinkV1(CreateSourceSinkV1),
999        CreateSourceSinkV2(CreateSourceSinkV2),
1000        AlterSourceSinkV1(AlterSourceSinkV1),
1001        AlterSetClusterV1(AlterSetClusterV1),
1002        GrantRoleV1(GrantRoleV1),
1003        GrantRoleV2(GrantRoleV2),
1004        RevokeRoleV1(RevokeRoleV1),
1005        RevokeRoleV2(RevokeRoleV2),
1006        UpdatePrivilegeV1(UpdatePrivilegeV1),
1007        AlterDefaultPrivilegeV1(AlterDefaultPrivilegeV1),
1008        UpdateOwnerV1(UpdateOwnerV1),
1009        IdFullNameV1(IdFullNameV1),
1010        RenameClusterV1(RenameClusterV1),
1011        RenameClusterReplicaV1(RenameClusterReplicaV1),
1012        RenameItemV1(RenameItemV1),
1013        IdNameV1(IdNameV1),
1014        SchemaV1(SchemaV1),
1015        SchemaV2(SchemaV2),
1016        RenameSchemaV1(RenameSchemaV1),
1017        UpdateItemV1(UpdateItemV1),
1018        CreateSourceSinkV3(CreateSourceSinkV3),
1019        AlterRetainHistoryV1(AlterRetainHistoryV1),
1020        ToNewIdV1(ToNewIdV1),
1021        FromPreviousIdV1(FromPreviousIdV1),
1022        SetV1(SetV1),
1023        ResetAllV1(Empty),
1024        RotateKeysV1(RotateKeysV1),
1025        CreateSourceSinkV4(CreateSourceSinkV4),
1026        CreateIndexV1(CreateIndexV1),
1027        CreateMaterializedViewV1(CreateMaterializedViewV1),
1028        AlterApplyReplacementV1(AlterApplyReplacementV1),
1029    }
1030}
1031
1032/// The contents of a single state update.
1033#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
1034// Serialize the top-level enum in the persist-backed catalog as internally tagged to set up
1035// persist pushdown statistics for success.
1036#[serde(tag = "kind")]
1037pub enum StateUpdateKind {
1038    AuditLog(AuditLog),
1039    Cluster(Cluster),
1040    ClusterIntrospectionSourceIndex(ClusterIntrospectionSourceIndex),
1041    ClusterReplica(ClusterReplica),
1042    Comment(Comment),
1043    Config(Config),
1044    Database(Database),
1045    DefaultPrivileges(DefaultPrivileges),
1046    FenceToken(FenceToken),
1047    GidMapping(GidMapping),
1048    IdAlloc(IdAlloc),
1049    Item(Item),
1050    NetworkPolicy(NetworkPolicy),
1051    Role(Role),
1052    RoleAuth(RoleAuth),
1053    Schema(Schema),
1054    ServerConfiguration(ServerConfiguration),
1055    Setting(Setting),
1056    SourceReferences(SourceReferences),
1057    StorageCollectionMetadata(StorageCollectionMetadata),
1058    SystemPrivileges(SystemPrivileges),
1059    TxnWalShard(TxnWalShard),
1060    UnfinalizedShard(UnfinalizedShard),
1061}
1062
1063#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
1064pub struct AuditLog {
1065    pub key: AuditLogKey,
1066}
1067
1068#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
1069pub struct Cluster {
1070    pub key: ClusterKey,
1071    pub value: ClusterValue,
1072}
1073
1074#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
1075pub struct ClusterReplica {
1076    pub key: ClusterReplicaKey,
1077    pub value: ClusterReplicaValue,
1078}
1079
1080#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
1081pub struct Comment {
1082    pub key: CommentKey,
1083    pub value: CommentValue,
1084}
1085
1086#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
1087pub struct Config {
1088    pub key: ConfigKey,
1089    pub value: ConfigValue,
1090}
1091
1092#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
1093pub struct Database {
1094    pub key: DatabaseKey,
1095    pub value: DatabaseValue,
1096}
1097
1098#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
1099pub struct DefaultPrivileges {
1100    pub key: DefaultPrivilegesKey,
1101    pub value: DefaultPrivilegesValue,
1102}
1103
1104#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
1105pub struct FenceToken {
1106    pub deploy_generation: u64,
1107    pub epoch: i64,
1108}
1109
1110#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
1111pub struct IdAlloc {
1112    pub key: IdAllocKey,
1113    pub value: IdAllocValue,
1114}
1115
1116#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
1117pub struct ClusterIntrospectionSourceIndex {
1118    pub key: ClusterIntrospectionSourceIndexKey,
1119    pub value: ClusterIntrospectionSourceIndexValue,
1120}
1121
1122#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
1123pub struct Item {
1124    pub key: ItemKey,
1125    pub value: ItemValue,
1126}
1127
1128#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
1129pub struct Role {
1130    pub key: RoleKey,
1131    pub value: RoleValue,
1132}
1133
1134#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
1135pub struct RoleAuth {
1136    pub key: RoleAuthKey,
1137    pub value: RoleAuthValue,
1138}
1139
1140#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
1141pub struct NetworkPolicy {
1142    pub key: NetworkPolicyKey,
1143    pub value: NetworkPolicyValue,
1144}
1145
1146#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
1147pub struct Schema {
1148    pub key: SchemaKey,
1149    pub value: SchemaValue,
1150}
1151
1152#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
1153pub struct Setting {
1154    pub key: SettingKey,
1155    pub value: SettingValue,
1156}
1157
1158#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
1159pub struct ServerConfiguration {
1160    pub key: ServerConfigurationKey,
1161    pub value: ServerConfigurationValue,
1162}
1163
1164#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
1165pub struct SourceReferences {
1166    pub key: SourceReferencesKey,
1167    pub value: SourceReferencesValue,
1168}
1169
1170#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
1171pub struct GidMapping {
1172    pub key: GidMappingKey,
1173    pub value: GidMappingValue,
1174}
1175
1176#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
1177pub struct SystemPrivileges {
1178    pub key: SystemPrivilegesKey,
1179    pub value: SystemPrivilegesValue,
1180}
1181
1182#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
1183pub struct StorageCollectionMetadata {
1184    pub key: StorageCollectionMetadataKey,
1185    pub value: StorageCollectionMetadataValue,
1186}
1187
1188#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
1189pub struct UnfinalizedShard {
1190    pub key: UnfinalizedShardKey,
1191}
1192
1193#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)]
1194pub struct TxnWalShard {
1195    pub value: TxnWalShardValue,
1196}
1197
1198#[derive(
1199    Clone,
1200    Copy,
1201    Debug,
1202    PartialEq,
1203    Eq,
1204    Hash,
1205    PartialOrd,
1206    Ord,
1207    Serialize_repr,
1208    Deserialize_repr,
1209    Arbitrary,
1210)]
1211#[repr(u8)]
1212pub enum CatalogItemType {
1213    Unknown = 0,
1214    Table = 1,
1215    Source = 2,
1216    Sink = 3,
1217    View = 4,
1218    MaterializedView = 5,
1219    Index = 6,
1220    Type = 7,
1221    Func = 8,
1222    Secret = 9,
1223    Connection = 10,
1224    ContinualTask = 11,
1225}
1226
1227#[derive(
1228    Clone,
1229    Copy,
1230    Debug,
1231    PartialEq,
1232    Eq,
1233    Hash,
1234    PartialOrd,
1235    Ord,
1236    Serialize_repr,
1237    Deserialize_repr,
1238    Arbitrary,
1239)]
1240#[repr(u8)]
1241pub enum ObjectType {
1242    Unknown = 0,
1243    Table = 1,
1244    View = 2,
1245    MaterializedView = 3,
1246    Source = 4,
1247    Sink = 5,
1248    Index = 6,
1249    Type = 7,
1250    Role = 8,
1251    Cluster = 9,
1252    ClusterReplica = 10,
1253    Secret = 11,
1254    Connection = 12,
1255    Database = 13,
1256    Schema = 14,
1257    Func = 15,
1258    ContinualTask = 16,
1259    NetworkPolicy = 17,
1260}