diff --git a/Cargo.lock b/Cargo.lock index 6a1fd2b62ec7d..08edb7945ec2c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5794,7 +5794,6 @@ dependencies = [ "anyhow", "md-5", "mz-audit-log", - "mz-build-tools", "mz-compute-types", "mz-controller-types", "mz-ore", @@ -5802,11 +5801,9 @@ dependencies = [ "mz-repr", "mz-sql", "mz-storage-types", - "paste", + "num_enum 0.7.4", "proptest", "proptest-derive", - "prost", - "prost-build", "serde", "serde_json", "similar-asserts", diff --git a/src/catalog-protos/BUILD.bazel b/src/catalog-protos/BUILD.bazel index e82468496c3f5..8d2a384e552af 100644 --- a/src/catalog-protos/BUILD.bazel +++ b/src/catalog-protos/BUILD.bazel @@ -59,7 +59,7 @@ rust_test( compile_data = [], crate = ":mz_catalog_protos", crate_features = ["default"], - data = [] + glob(["protos/**"]), + data = [], env = {}, lint_config = ":lints", proc_macro_deps = [] + all_crate_deps( @@ -71,7 +71,6 @@ rust_test( version = "0.0.0", deps = [ "//src/audit-log:mz_audit_log", - "//src/build-tools:mz_build_tools", "//src/compute-types:mz_compute_types", "//src/controller-types:mz_controller_types", "//src/ore:mz_ore", @@ -90,7 +89,6 @@ rust_doc_test( crate = ":mz_catalog_protos", deps = [ "//src/audit-log:mz_audit_log", - "//src/build-tools:mz_build_tools", "//src/compute-types:mz_compute_types", "//src/controller-types:mz_controller_types", "//src/ore:mz_ore", @@ -109,16 +107,11 @@ cargo_build_script( srcs = ["build.rs"], build_script_env = {}, compile_data = [], - data = [] + glob(["protos/**"]), + data = [], proc_macro_deps = [] + all_crate_deps(build_proc_macro = True), rustc_env = {}, rustc_flags = [], - deps = ["//src/build-tools:mz_build_tools"] + all_crate_deps(build = True), -) - -filegroup( - name = "all_protos", - srcs = glob(["protos/**"]), + deps = [] + all_crate_deps(build = True), ) extract_cargo_lints( diff --git a/src/catalog-protos/Cargo.toml b/src/catalog-protos/Cargo.toml index e925a24d0fadf..e5e1b870dd4b4 100644 --- a/src/catalog-protos/Cargo.toml +++ b/src/catalog-protos/Cargo.toml @@ -16,47 +16,24 @@ mz-proto = { path = "../proto" } mz-repr = { path = "../repr" } mz-sql = { path = "../sql" } mz-storage-types = { path = "../storage-types" } -paste = "1.0.11" +num_enum = "0.7.4" proptest = { version = "1.7.0", default-features = false, features = ["std"] } -proptest-derive = { version = "0.5.1", features = ["boxed_union"] } -prost = "0.13.5" +proptest-derive = "0.5.1" serde = { version = "1.0.219", features = ["derive"] } workspace-hack = { version = "0.0.0", path = "../workspace-hack", optional = true } [dev-dependencies] -mz-build-tools = { path = "../build-tools", default-features = false } mz-ore = { path = "../ore", features = ["test"] } -mz-proto = { path = "../proto" } -proptest = { version = "1.7.0", default-features = false, features = ["std"] } similar-asserts = "1.7" [build-dependencies] anyhow = "1.0.100" md-5 = "0.10.6" -mz-build-tools = { path = "../build-tools", default-features = false, features = ["protobuf-src"] } -prost-build = "0.13.5" serde = { version = "1.0.219", features = ["derive"] } serde_json = "1.0.145" [package.metadata.cargo-udeps.ignore] normal = ["workspace-hack"] -[package.metadata.cargo-gazelle] -# TODO(parkmycar): Get rid of this hack by introducing a `catalog-types` crate. -# This exists because there is a test in the `catalog` crate (`test_proto_serialization_stability`) -# that needs both the protobuf definitions, but also some catalog types. -additive_content = """ -filegroup( - name = "all_protos", - srcs = glob(["protos/**"]), -) -""" - -[package.metadata.cargo-gazelle.build] -data = ["protos/**"] - -[package.metadata.cargo-gazelle.test.lib] -data = ["protos/**"] - [features] default = ["workspace-hack"] diff --git a/src/catalog-protos/build.rs b/src/catalog-protos/build.rs index a724949b29861..54274c31b7feb 100644 --- a/src/catalog-protos/build.rs +++ b/src/catalog-protos/build.rs @@ -9,47 +9,46 @@ use std::collections::BTreeMap; use std::fs; -use std::io::{BufReader, Write}; +use std::io::Write; +use std::path::PathBuf; use anyhow::Context; use md5::{Digest, Md5}; use serde::{Deserialize, Serialize}; -/// The path of a protobuf file and its [`md5`] hash. +/// The path of an object definition file and its [`md5`] hash. /// /// We store a hash of all the files to make sure they don't accidentally change, which would /// invalidate our snapshotted types, and could silently introduce bugs. #[derive(Debug, Clone, Deserialize, Serialize)] -struct ProtoHash { +struct ObjectsHash { name: String, md5: String, } -const PROTO_DIRECTORY: &str = "protos"; -const PROTO_HASHES: &str = "protos/hashes.json"; +const OBJECTS_HASHES: &str = "objects_hashes.json"; fn main() -> anyhow::Result<()> { - println!("cargo:rerun-if-changed={PROTO_DIRECTORY}"); + let crate_root = PathBuf::from(env!("CARGO_MANIFEST_DIR")); // Read in the persisted hashes from disk. - let hashes = fs::File::open(PROTO_HASHES).context("opening proto hashes")?; - let reader = BufReader::new(&hashes); - let hashes: Vec = serde_json::from_reader(reader)?; + let hashes_path = crate_root.join(OBJECTS_HASHES); + let hashes_json = fs::read_to_string(&hashes_path)?; + let hashes: Vec = serde_json::from_str(&hashes_json)?; let mut persisted: BTreeMap = hashes.into_iter().map(|e| (e.name, e.md5)).collect(); - // Discover all of the protobuf files on disk. - let protos: BTreeMap = fs::read_dir(PROTO_DIRECTORY)? + // Discover all of the object definition files on disk. + let src_dir = crate_root.join("src"); + let objects: BTreeMap = fs::read_dir(src_dir)? // If we fail to read one file, fail everything. .collect::, _>>()? .into_iter() - // Filter to only files with the .proto extension. + // Filter to only files with the of the form `objects*.rs`. .filter(|entry| { - entry - .path() - .extension() - .map(|e| e.to_string_lossy().contains("proto")) - .unwrap_or(false) + let name = entry.file_name(); + let s = name.to_string_lossy(); + s.starts_with("objects") && s.ends_with(".rs") }) .map(|file| { let path = file.path(); @@ -71,34 +70,34 @@ fn main() -> anyhow::Result<()> { }) .collect(); - // After validating our hashes we'll re-write the file if any new protos + // After validating our hashes we'll re-write the file if any new object definitions // have been added. - let mut to_persist: Vec = Vec::new(); + let mut to_persist: Vec = Vec::new(); let mut any_new = false; // Check the persisted hashes against what we just read in from disk. - for (name, hash) in protos { + for (name, hash) in objects { match persisted.remove(&name) { // Hashes have changed! Some(og_hash) if hash != og_hash => { anyhow::bail!(error_message(og_hash, hash, name)); } - // Found a proto file on disk that we didn't have persisted, we'll just persist it. + // Found an objects file on disk that we didn't have persisted, we'll just persist it. None => { - to_persist.push(ProtoHash { name, md5: hash }); + to_persist.push(ObjectsHash { name, md5: hash }); any_new = true; } // We match! - Some(_) => to_persist.push(ProtoHash { name, md5: hash }), + Some(_) => to_persist.push(ObjectsHash { name, md5: hash }), } } - // Check if there are any proto files we should have had hashes for, but didn't exist. + // Check if there are any objects files we should have had hashes for, but didn't exist. if !persisted.is_empty() { anyhow::bail!("Have persisted hashes, but no files on disk? {persisted:#?}"); } - // Write the hashes back out to disk if and only if there are new protos. We + // Write the hashes back out to disk if and only if there are new object definitions. We // don't do this unconditionally or we'll get stuck in a rebuild loop: // executing this build script will change the mtime on the hashes file, // which will force the next compile to rebuild the crate, even if nothing @@ -107,103 +106,23 @@ fn main() -> anyhow::Result<()> { let mut file = fs::File::options() .write(true) .truncate(true) - .open(PROTO_HASHES) + .open(hashes_path) .context("opening hashes file to write")?; serde_json::to_writer_pretty(&mut file, &to_persist).context("persisting hashes")?; write!(&mut file, "\n").context("writing newline")?; } - // Generate protos! - let paths: Vec<_> = to_persist - .iter() - .map(|entry| format!("protos/{}", entry.name)) - .collect(); - - const ATTR: &str = "#[derive(Eq, PartialOrd, Ord, ::serde::Serialize, ::serde::Deserialize)]"; - const ARBITRARY_ATTR: &str = "#[derive(::proptest_derive::Arbitrary)]"; - - // 'as' is okay here because we're using it to define the type of the empty slice, which is - // necessary since the method takes the slice as a generic arg. - #[allow(clippy::as_conversions)] - // DO NOT change how JSON serialization works for these objects. The catalog relies on the JSON - // serialization of these objects remaining stable for a specific objects_vX version. If you - // want to change the JSON serialization format then follow these steps: - // - // 1. Create a new version of the `objects.proto` file. - // 2. Update the path of .proto files given to this compile block so that it is only the - // previous .proto files. - // 3. Add a new `prost_build::Config::new()...compile_protos(...)` block that only compiles - // the new and all future .proto files with the changed JSON serialization. - // - // Once we delete all the `.proto` that use the old JSON serialization, then we can delete - // the compile block for them as well. - prost_build::Config::new() - .protoc_executable(mz_build_tools::protoc()) - .btree_map(["."]) - .bytes(["."]) - .message_attribute(".", ATTR) - // Note(parkmycar): This is annoying, but we need to manually specify each oneof so we can - // get them to implement Eq, PartialEq, and Ord. If you define a new oneof you should add - // it here. - .enum_attribute("CatalogItem.value", ATTR) - .enum_attribute("ClusterConfig.variant", ATTR) - .enum_attribute("GlobalId.value", ATTR) - .enum_attribute("CatalogItemId.value", ATTR) - .enum_attribute("ClusterId.value", ATTR) - .enum_attribute("DatabaseId.value", ATTR) - .enum_attribute("SchemaId.value", ATTR) - .enum_attribute("ReplicaId.value", ATTR) - .enum_attribute("RoleId.value", ATTR) - .enum_attribute("NetworkPolicyId.value", ATTR) - .enum_attribute("NetworkPolicyRule.action", ATTR) - .enum_attribute("NetworkPolicyRule.direction", ATTR) - .enum_attribute("ReplicaConfig.location", ATTR) - .enum_attribute("AuditLogEventV1.details", ATTR) - .enum_attribute("AuditLogKey.event", ATTR) - .enum_attribute("StorageUsageKey.usage", ATTR) - .enum_attribute("ResolvedDatabaseSpecifier.value", ATTR) - .enum_attribute("CommentKey.object", ATTR) - .enum_attribute("CommentKey.sub_component", ATTR) - .enum_attribute("ResolvedDatabaseSpecifier.spec", ATTR) - .enum_attribute("SchemaSpecifier.spec", ATTR) - .enum_attribute("RoleVars.Entry.val", ATTR) - .enum_attribute("StateUpdateKind.kind", ATTR) - .enum_attribute("ClusterScheduleOptionValue.value", ATTR) - .enum_attribute("ClusterSchedule.value", ATTR) - .enum_attribute("CreateOrDropClusterReplicaReasonV1.reason", ATTR) - .enum_attribute("RefreshDecisionWithReasonV1.decision", ATTR) - .enum_attribute("RefreshDecisionWithReasonV2.decision", ATTR) - // Serialize/deserialize the top-level enum in the persist-backed - // catalog as "internally tagged"[^1] to set up persist pushdown - // statistics for success. - // - // [^1]: https://serde.rs/enum-representations.html#internally-tagged - .enum_attribute("StateUpdateKind.kind", "#[serde(tag = \"kind\")]") - // We derive Arbitrary for all protobuf types for wire compatibility testing. - .message_attribute(".", ARBITRARY_ATTR) - .enum_attribute(".", ARBITRARY_ATTR) - .compile_protos( - &paths, - &[ /* - This is purposefully empty, and we should never - add any includes because we don't want to allow - our protos to have dependencies. This allows us - to ensure our snapshots can't silently change. - */ - ] as &[&str], - )?; - Ok(()) } /// A (hopefully) helpful error message that describes what to do when the hashes differ. fn error_message(og_hash: String, hash: String, filename: String) -> String { - let title = "Hashes changed for the persisted protobuf files!"; + let title = "Hashes changed for the persisted object definition files!"; let body1 = format!( - "If you changed '{filename}' without first making a snapshot, then you need to copy '{filename}' and rename it with a suffix like '_vX.proto'." + "If you changed '{filename}' without first making a snapshot, then you need to copy '{filename}' and rename it with a suffix like '_vX.rs'." ); let body2 = format!( - "Otherwise you can update the hash for '{filename}' in '{PROTO_HASHES}' to be '{hash}'." + "Otherwise you can update the hash for '{filename}' in '{OBJECTS_HASHES}' to be '{hash}'." ); let hashes = format!("persisted_hash({og_hash}) != current_hash({hash})\nFile: {filename}"); diff --git a/src/catalog-protos/objects_hashes.json b/src/catalog-protos/objects_hashes.json new file mode 100644 index 0000000000000..5b3be09a49991 --- /dev/null +++ b/src/catalog-protos/objects_hashes.json @@ -0,0 +1,50 @@ +[ + { + "name": "objects.rs", + "md5": "29f67ac98b87677b1614e903fdcdcc3c" + }, + { + "name": "objects_v67.rs", + "md5": "f48b00a2411914ae34c9302239b05f45" + }, + { + "name": "objects_v68.rs", + "md5": "3c8dc82e6b72b779421fbc149bb32ff1" + }, + { + "name": "objects_v69.rs", + "md5": "5cb8a1457a03469a775fe69ea6c73f98" + }, + { + "name": "objects_v70.rs", + "md5": "b309df83ddd6674155f6e775ff4482ae" + }, + { + "name": "objects_v71.rs", + "md5": "b309df83ddd6674155f6e775ff4482ae" + }, + { + "name": "objects_v72.rs", + "md5": "b309df83ddd6674155f6e775ff4482ae" + }, + { + "name": "objects_v73.rs", + "md5": "f6419eac6283d905f60d1d8ef6d3f9c1" + }, + { + "name": "objects_v74.rs", + "md5": "2b7edb2f05ab659498c9012f68455d4d" + }, + { + "name": "objects_v75.rs", + "md5": "1f19ff5f0926ca340f28727b93c4fe98" + }, + { + "name": "objects_v76.rs", + "md5": "29f67ac98b87677b1614e903fdcdcc3c" + }, + { + "name": "objects_v77.rs", + "md5": "29f67ac98b87677b1614e903fdcdcc3c" + } +] diff --git a/src/catalog-protos/protos/hashes.json b/src/catalog-protos/protos/hashes.json deleted file mode 100644 index 1e7b3aab02ce2..0000000000000 --- a/src/catalog-protos/protos/hashes.json +++ /dev/null @@ -1,50 +0,0 @@ -[ - { - "name": "objects.proto", - "md5": "3e9f4c62f87441ac7897d96462f3c0c9" - }, - { - "name": "objects_v67.proto", - "md5": "ce8acf8bc724dc3121e3014555f00250" - }, - { - "name": "objects_v68.proto", - "md5": "6c7cae7aeb2da4bdd6aa8bca367850ce" - }, - { - "name": "objects_v69.proto", - "md5": "638e206754da134b10a0712d63bdd8dc" - }, - { - "name": "objects_v70.proto", - "md5": "a43660c9160c900f00d62d3031e2fad0" - }, - { - "name": "objects_v71.proto", - "md5": "26b6c8620c7d2cdcdddcad7b75d7afb2" - }, - { - "name": "objects_v72.proto", - "md5": "b21cb2b1b41649c78405731e53560d59" - }, - { - "name": "objects_v73.proto", - "md5": "d5d1a8c6b1aa8212245cfd343a3b8417" - }, - { - "name": "objects_v74.proto", - "md5": "f8dd1defd3b20c13ecca54b0321d5d25" - }, - { - "name": "objects_v75.proto", - "md5": "cf8eda8ad7f8d26e5abcc34eaa6e39f7" - }, - { - "name": "objects_v76.proto", - "md5": "ab9d60f50e22a4e2cfea38d98a5b6421" - }, - { - "name": "objects_v77.proto", - "md5": "2dc9da6bcf13afb0db7233b26720c18f" - } -] diff --git a/src/catalog-protos/protos/objects.proto b/src/catalog-protos/protos/objects.proto deleted file mode 100644 index f68bafb7c8817..0000000000000 --- a/src/catalog-protos/protos/objects.proto +++ /dev/null @@ -1,1097 +0,0 @@ -// Copyright Materialize, Inc. and contributors. All rights reserved. -// -// Use of this software is governed by the Business Source License -// included in the LICENSE file. -// -// As of the Change Date specified in that file, in accordance with -// the Business Source License, use of this software will be governed -// by the Apache License, Version 2.0. - -// This protobuf file defines the types we store in the Stash. -// -// Before and after modifying this file, make sure you have a snapshot of the before version, -// e.g. a copy of this file named 'objects_v{CATALOG_VERSION}.proto', and a snapshot of the file -// after your modifications, e.g. 'objects_v{CATALOG_VERSION + 1}.proto'. Then you can write a -// migration using these two files, and no matter how the types change in the future, we'll always -// have these snapshots to facilitate the migration. - -// buf breaking: ignore (does currently not require backward-compatibility) - -syntax = "proto3"; - -package objects; - -message ConfigKey { - string key = 1; -} - -message ConfigValue { - uint64 value = 1; -} - -message SettingKey { - string name = 1; -} - -message SettingValue { - string value = 1; -} - -message IdAllocKey { - string name = 1; -} - -message IdAllocValue { - uint64 next_id = 1; -} - -message GidMappingKey { - string schema_name = 1; - CatalogItemType object_type = 2; - string object_name = 3; -} - -message GidMappingValue { - // TODO(parkmycar): Ideally this is a SystemCatalogItemId but making this change panics 0dt - // upgrades if there were new builtin objects added since the older version of Materialize - // doesn't know how to read the new SystemCatalogItemId type. - uint64 id = 1; - string fingerprint = 2; - SystemGlobalId global_id = 3; -} - -message ClusterKey { - ClusterId id = 1; -} - -message ClusterValue { - reserved 2; - string name = 1; - RoleId owner_id = 3; - repeated MzAclItem privileges = 4; - ClusterConfig config = 5; -} - -message ClusterIntrospectionSourceIndexKey { - ClusterId cluster_id = 1; - string name = 2; -} - -message ClusterIntrospectionSourceIndexValue { - // TODO(parkmycar): Ideally this is a IntrospectionSourceCatalogItemId but making this change panics 0dt - // upgrades if there were new builtin objects added since the older version of Materialize - // doesn't know how to read the new IntrospectionSourceCatalogItemId type. - uint64 index_id = 1; - uint32 oid = 2; - IntrospectionSourceIndexGlobalId global_id = 3; -} - -message ClusterReplicaKey { - ReplicaId id = 1; -} - -message ClusterReplicaValue { - ClusterId cluster_id = 1; - string name = 2; - ReplicaConfig config = 3; - RoleId owner_id = 4; -} - -message DatabaseKey { - DatabaseId id = 1; -} - -message DatabaseValue { - string name = 1; - RoleId owner_id = 2; - repeated MzAclItem privileges = 3; - uint32 oid = 4; -} - -message SchemaKey { - SchemaId id = 1; -} - -message SchemaValue { - DatabaseId database_id = 1; - string name = 2; - RoleId owner_id = 3; - repeated MzAclItem privileges = 4; - uint32 oid = 5; -} - -message ItemKey { - CatalogItemId gid = 1; -} - -message ItemValue { - SchemaId schema_id = 1; - string name = 2; - CatalogItem definition = 3; - RoleId owner_id = 4; - repeated MzAclItem privileges = 5; - uint32 oid = 6; - GlobalId global_id = 7; - repeated ItemVersion extra_versions = 8; -} - -message ItemVersion { - GlobalId global_id = 1; - Version version = 2; -} - -message RoleKey { - RoleId id = 1; -} - -message RoleValue { - string name = 1; - RoleAttributes attributes = 2; - RoleMembership membership = 3; - RoleVars vars = 4; - uint32 oid = 5; -} - -message RoleAuthKey { - RoleId id = 1; -} - -message RoleAuthValue { - optional string password_hash = 1; - EpochMillis updated_at = 2; -} - -message NetworkPolicyKey { - NetworkPolicyId id = 1; -} - -message NetworkPolicyValue { - string name = 1; - repeated NetworkPolicyRule rules = 2; - RoleId owner_id = 3; - repeated MzAclItem privileges = 4; - uint32 oid = 5; -} - -message ServerConfigurationKey { - string name = 1; -} - -message ServerConfigurationValue { - string value = 1; -} - -message AuditLogKey { - oneof event { - AuditLogEventV1 v1 = 1; - } -} - -message CommentKey { - oneof object { - CatalogItemId table = 1; - CatalogItemId view = 2; - CatalogItemId materialized_view = 4; - CatalogItemId source = 5; - CatalogItemId sink = 6; - CatalogItemId index = 7; - CatalogItemId func = 8; - CatalogItemId connection = 9; - CatalogItemId type = 10; - CatalogItemId secret = 11; - CatalogItemId continual_task = 17; - RoleId role = 12; - DatabaseId database = 13; - ResolvedSchema schema = 14; - ClusterId cluster = 15; - ClusterReplicaId cluster_replica = 16; - NetworkPolicyId network_policy = 18; - } - oneof sub_component { - uint64 column_pos = 3; - } -} - -message CommentValue { - string comment = 1; -} - -message SourceReferencesKey { - CatalogItemId source = 1; -} - -message SourceReferencesValue { - repeated SourceReference references = 1; - EpochMillis updated_at = 2; -} - -message SourceReference { - string name = 1; - optional string namespace = 2; - repeated string columns = 3; -} - -message StorageCollectionMetadataKey { - GlobalId id = 1; -} - -// This value is stored transparently, however, it should only ever be -// manipulated by the storage controller. -message StorageCollectionMetadataValue { - string shard = 1; -} - -// This value is stored transparently, however, it should only ever be -// manipulated by the storage controller. -message UnfinalizedShardKey { - string shard = 1; -} - -// This value is stored transparently, however, it should only ever be -// manipulated by the storage controller. -message TxnWalShardValue { - string shard = 1; -} - -// ---- Common Types -// -// Note: Normally types like this would go in some sort of `common.proto` file, but we want to keep -// our proto definitions in a single file to make snapshotting easier, hence them living here. - -message Empty { - /* purposefully empty */ -} - -// In protobuf a "None" string is the same thing as an empty string. To get the same semantics of -// an `Option` from Rust, we need to wrap a string in a message. -message StringWrapper { - string inner = 1; -} - -message Duration { - uint64 secs = 1; - uint32 nanos = 2; -} - -message EpochMillis { - uint64 millis = 1; -} - -// Opaque timestamp type that is specific to Materialize. -message Timestamp { - uint64 internal = 1; -} - -message Version { - uint64 value = 2; -} - -enum CatalogItemType { - CATALOG_ITEM_TYPE_UNKNOWN = 0; - CATALOG_ITEM_TYPE_TABLE = 1; - CATALOG_ITEM_TYPE_SOURCE = 2; - CATALOG_ITEM_TYPE_SINK = 3; - CATALOG_ITEM_TYPE_VIEW = 4; - CATALOG_ITEM_TYPE_MATERIALIZED_VIEW = 5; - CATALOG_ITEM_TYPE_INDEX = 6; - CATALOG_ITEM_TYPE_TYPE = 7; - CATALOG_ITEM_TYPE_FUNC = 8; - CATALOG_ITEM_TYPE_SECRET = 9; - CATALOG_ITEM_TYPE_CONNECTION = 10; - CATALOG_ITEM_TYPE_CONTINUAL_TASK = 11; -} - -message CatalogItem { - message V1 { - string create_sql = 1; - } - - oneof value { - V1 v1 = 1; - } -} - -message CatalogItemId { - oneof value { - uint64 system = 1; - uint64 user = 2; - uint64 transient = 3; - uint64 introspection_source_index = 4; - } -} - -/// A newtype wrapper for a `CatalogItemId` that is always in the "system" namespace. -message SystemCatalogItemId { - uint64 value = 1; -} - -/// A newtype wrapper for a `CatalogItemId` that is always in the "introspection source index" namespace. -message IntrospectionSourceIndexCatalogItemId { - uint64 value = 1; -} - -message GlobalId { - oneof value { - uint64 system = 1; - uint64 user = 2; - uint64 transient = 3; - Empty explain = 4; - uint64 introspection_source_index = 5; - } -} - -/// A newtype wrapper for a `GlobalId` that is always in the "system" namespace. -message SystemGlobalId { - uint64 value = 1; -} - -/// A newtype wrapper for a `GlobalId` that is always in the "introspection source index" namespace. -message IntrospectionSourceIndexGlobalId { - uint64 value = 1; -} - -message ClusterId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message DatabaseId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message ResolvedDatabaseSpecifier { - oneof spec { - Empty ambient = 1; - DatabaseId id = 2; - } -} - -message SchemaId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message SchemaSpecifier { - oneof spec { - Empty temporary = 1; - SchemaId id = 2; - } -} - -message ResolvedSchema { - ResolvedDatabaseSpecifier database = 1; - SchemaSpecifier schema = 2; -} - -message ReplicaId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message ClusterReplicaId { - ClusterId cluster_id = 1; - ReplicaId replica_id = 2; -} - -message NetworkPolicyId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message ReplicaLogging { - bool log_logging = 1; - Duration interval = 2; -} - -message OptimizerFeatureOverride { - string name = 1; - string value = 2; -} - -message ClusterScheduleRefreshOptions { - Duration rehydration_time_estimate = 1; -} - -message ClusterSchedule { - oneof value { - Empty manual = 1; - ClusterScheduleRefreshOptions refresh = 2; - } -} - -message ClusterConfig { - message ManagedCluster { - string size = 1; - uint32 replication_factor = 2; - repeated string availability_zones = 3; - ReplicaLogging logging = 4; - repeated OptimizerFeatureOverride optimizer_feature_overrides = 7; - ClusterSchedule schedule = 8; - } - - oneof variant { - Empty unmanaged = 1; - ManagedCluster managed = 2; - } - optional string workload_class = 3; -} - -message ReplicaConfig { - message UnmanagedLocation { - repeated string storagectl_addrs = 1; - repeated string computectl_addrs = 3; - } - - message ManagedLocation { - string size = 1; - optional string availability_zone = 2; - bool internal = 5; - optional string billed_as = 6; - bool pending = 7; - } - - oneof location { - UnmanagedLocation unmanaged = 1; - ManagedLocation managed = 2; - } - ReplicaLogging logging = 3; -} - -message RoleId { - oneof value { - uint64 system = 1; - uint64 user = 2; - Empty public = 3; - uint64 predefined = 4; - } -} - -message RoleAttributes { - bool inherit = 1; - optional bool superuser = 2; - optional bool login = 3; -} - -message RoleMembership { - message Entry { - RoleId key = 1; - RoleId value = 2; - } - - repeated Entry map = 1; -} - -message RoleVars { - message SqlSet { - repeated string entries = 1; - } - - message Entry { - string key = 1; - oneof val { - string flat = 2; - SqlSet sql_set = 3; - } - } - - repeated Entry entries = 1; -} - -message NetworkPolicyRule { - string name = 1; - oneof action { - Empty allow = 2; - } - oneof direction { - Empty ingress = 3; - } - string address = 4; -} - -message AclMode { - // A bit flag representing all the privileges that can be granted to a role. - uint64 bitflags = 1; -} - -message MzAclItem { - RoleId grantee = 1; - RoleId grantor = 2; - AclMode acl_mode = 3; -} - -enum ObjectType { - OBJECT_TYPE_UNKNOWN = 0; - OBJECT_TYPE_TABLE = 1; - OBJECT_TYPE_VIEW = 2; - OBJECT_TYPE_MATERIALIZED_VIEW = 3; - OBJECT_TYPE_SOURCE = 4; - OBJECT_TYPE_SINK = 5; - OBJECT_TYPE_INDEX = 6; - OBJECT_TYPE_TYPE = 7; - OBJECT_TYPE_ROLE = 8; - OBJECT_TYPE_CLUSTER = 9; - OBJECT_TYPE_CLUSTER_REPLICA = 10; - OBJECT_TYPE_SECRET = 11; - OBJECT_TYPE_CONNECTION = 12; - OBJECT_TYPE_DATABASE = 13; - OBJECT_TYPE_SCHEMA = 14; - OBJECT_TYPE_FUNC = 15; - OBJECT_TYPE_CONTINUAL_TASK = 16; - OBJECT_TYPE_NETWORK_POLICY = 17; -} - -message DefaultPrivilegesKey { - RoleId role_id = 1; - DatabaseId database_id = 2; - SchemaId schema_id = 3; - ObjectType object_type = 4; - RoleId grantee = 5; -} - -message DefaultPrivilegesValue { - AclMode privileges = 1; -} - -message SystemPrivilegesKey { - RoleId grantee = 1; - RoleId grantor = 2; -} - -message SystemPrivilegesValue { - AclMode acl_mode = 1; -} - -message AuditLogEventV1 { - enum EventType { - EVENT_TYPE_UNKNOWN = 0; - EVENT_TYPE_CREATE = 1; - EVENT_TYPE_DROP = 2; - EVENT_TYPE_ALTER = 3; - EVENT_TYPE_GRANT = 4; - EVENT_TYPE_REVOKE = 5; - EVENT_TYPE_COMMENT = 6; - } - - enum ObjectType { - OBJECT_TYPE_UNKNOWN = 0; - OBJECT_TYPE_CLUSTER = 1; - OBJECT_TYPE_CLUSTER_REPLICA = 2; - OBJECT_TYPE_CONNECTION = 3; - OBJECT_TYPE_DATABASE = 4; - OBJECT_TYPE_FUNC = 5; - OBJECT_TYPE_INDEX = 6; - OBJECT_TYPE_MATERIALIZED_VIEW = 7; - OBJECT_TYPE_ROLE = 8; - OBJECT_TYPE_SECRET = 9; - OBJECT_TYPE_SCHEMA = 10; - OBJECT_TYPE_SINK = 11; - OBJECT_TYPE_SOURCE = 12; - OBJECT_TYPE_TABLE = 13; - OBJECT_TYPE_TYPE = 14; - OBJECT_TYPE_VIEW = 15; - OBJECT_TYPE_SYSTEM = 16; - OBJECT_TYPE_CONTINUAL_TASK = 17; - OBJECT_TYPE_NETWORK_POLICY = 18; - } - - message IdFullNameV1 { - string id = 1; - FullNameV1 name = 2; - } - - message FullNameV1 { - string database = 1; - string schema = 2; - string item = 3; - } - - message IdNameV1 { - string id = 1; - string name = 2; - } - - message RenameClusterV1 { - string id = 1; - string old_name = 2; - string new_name = 3; - } - - message RenameClusterReplicaV1 { - string cluster_id = 1; - string replica_id = 2; - string old_name = 3; - string new_name = 4; - } - - message RenameItemV1 { - string id = 1; - FullNameV1 old_name = 2; - FullNameV1 new_name = 3; - } - - message CreateClusterReplicaV1 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - string logical_size = 5; - bool disk = 6; - optional string billed_as = 7; - bool internal = 8; - } - - message CreateClusterReplicaV2 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - string logical_size = 5; - bool disk = 6; - optional string billed_as = 7; - bool internal = 8; - CreateOrDropClusterReplicaReasonV1 reason = 9; - SchedulingDecisionsWithReasonsV1 scheduling_policies = 10; - } - - message CreateClusterReplicaV3 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - string logical_size = 5; - bool disk = 6; - optional string billed_as = 7; - bool internal = 8; - CreateOrDropClusterReplicaReasonV1 reason = 9; - SchedulingDecisionsWithReasonsV2 scheduling_policies = 10; - } - - message CreateClusterReplicaV4 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - string logical_size = 5; - optional string billed_as = 6; - bool internal = 7; - CreateOrDropClusterReplicaReasonV1 reason = 8; - SchedulingDecisionsWithReasonsV2 scheduling_policies = 9; - } - - message DropClusterReplicaV1 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - } - - message DropClusterReplicaV2 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - CreateOrDropClusterReplicaReasonV1 reason = 5; - SchedulingDecisionsWithReasonsV1 scheduling_policies = 6; - } - - message DropClusterReplicaV3 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - CreateOrDropClusterReplicaReasonV1 reason = 5; - SchedulingDecisionsWithReasonsV2 scheduling_policies = 6; - } - - message CreateOrDropClusterReplicaReasonV1 { - oneof reason { - Empty Manual = 1; - Empty Schedule = 2; - Empty System = 3; - } - } - - message SchedulingDecisionsWithReasonsV1 { - RefreshDecisionWithReasonV1 on_refresh = 1; - } - - message SchedulingDecisionsWithReasonsV2 { - RefreshDecisionWithReasonV2 on_refresh = 1; - } - - message RefreshDecisionWithReasonV1 { - oneof decision { - Empty On = 1; - Empty Off = 2; - } - repeated string objects_needing_refresh = 3; - string rehydration_time_estimate = 4; - } - - message RefreshDecisionWithReasonV2 { - oneof decision { - Empty On = 1; - Empty Off = 2; - } - repeated string objects_needing_refresh = 3; - repeated string objects_needing_compaction = 5; - string rehydration_time_estimate = 4; - } - - message CreateSourceSinkV1 { - string id = 1; - FullNameV1 name = 2; - StringWrapper size = 3; - } - - message CreateSourceSinkV2 { - string id = 1; - FullNameV1 name = 2; - StringWrapper size = 3; - string external_type = 4; - } - - message CreateSourceSinkV3 { - string id = 1; - FullNameV1 name = 2; - string external_type = 3; - } - - message CreateSourceSinkV4 { - string id = 1; - StringWrapper cluster_id = 2; - FullNameV1 name = 3; - string external_type = 4; - } - - message CreateIndexV1 { - string id = 1; - string cluster_id = 2; - FullNameV1 name = 3; - } - - message CreateMaterializedViewV1 { - string id = 1; - string cluster_id = 2; - FullNameV1 name = 3; - } - - message AlterSourceSinkV1 { - string id = 1; - FullNameV1 name = 2; - StringWrapper old_size = 3; - StringWrapper new_size = 4; - } - - message AlterSetClusterV1 { - string id = 1; - FullNameV1 name = 2; - StringWrapper old_cluster = 3; - StringWrapper new_cluster = 4; - } - - message GrantRoleV1 { - string role_id = 1; - string member_id = 2; - string grantor_id = 3; - } - - message GrantRoleV2 { - string role_id = 1; - string member_id = 2; - string grantor_id = 3; - string executed_by = 4; - } - - message RevokeRoleV1 { - string role_id = 1; - string member_id = 2; - } - - message RevokeRoleV2 { - string role_id = 1; - string member_id = 2; - string grantor_id = 3; - string executed_by = 4; - } - - message UpdatePrivilegeV1 { - string object_id = 1; - string grantee_id = 2; - string grantor_id = 3; - string privileges = 4; - } - - message AlterDefaultPrivilegeV1 { - string role_id = 1; - StringWrapper database_id = 2; - StringWrapper schema_id = 3; - string grantee_id = 4; - string privileges = 5; - } - - message UpdateOwnerV1 { - string object_id = 1; - string old_owner_id = 2; - string new_owner_id = 3; - } - - message SchemaV1 { - string id = 1; - string name = 2; - string database_name = 3; - } - - message SchemaV2 { - string id = 1; - string name = 2; - StringWrapper database_name = 3; - } - - message RenameSchemaV1 { - string id = 1; - optional string database_name = 2; - string old_name = 3; - string new_name = 4; - } - - message UpdateItemV1 { - string id = 1; - FullNameV1 name = 2; - } - - message AlterRetainHistoryV1 { - string id = 1; - optional string old_history = 2; - optional string new_history = 3; - } - - message ToNewIdV1 { - string id = 1; - string new_id = 2; - } - - message FromPreviousIdV1 { - string id = 1; - string previous_id = 2; - } - - message SetV1 { - string name = 1; - optional string value = 2; - } - - message RotateKeysV1 { - string id = 1; - string name = 2; - } - - uint64 id = 1; - EventType event_type = 2; - ObjectType object_type = 3; - StringWrapper user = 4; - EpochMillis occurred_at = 5; - - oneof details { - CreateClusterReplicaV1 create_cluster_replica_v1 = 6; - CreateClusterReplicaV2 create_cluster_replica_v2 = 33; - CreateClusterReplicaV3 create_cluster_replica_v3 = 41; - CreateClusterReplicaV4 create_cluster_replica_v4 = 43; - DropClusterReplicaV1 drop_cluster_replica_v1 = 7; - DropClusterReplicaV2 drop_cluster_replica_v2 = 34; - DropClusterReplicaV3 drop_cluster_replica_v3 = 42; - CreateSourceSinkV1 create_source_sink_v1 = 8; - CreateSourceSinkV2 create_source_sink_v2 = 9; - AlterSourceSinkV1 alter_source_sink_v1 = 10; - AlterSetClusterV1 alter_set_cluster_v1 = 25; - GrantRoleV1 grant_role_v1 = 11; - GrantRoleV2 grant_role_v2 = 12; - RevokeRoleV1 revoke_role_v1 = 13; - RevokeRoleV2 revoke_role_v2 = 14; - UpdatePrivilegeV1 update_privilege_v1 = 22; - AlterDefaultPrivilegeV1 alter_default_privilege_v1 = 23; - UpdateOwnerV1 update_owner_v1 = 24; - IdFullNameV1 id_full_name_v1 = 15; - RenameClusterV1 rename_cluster_v1 = 20; - RenameClusterReplicaV1 rename_cluster_replica_v1 = 21; - RenameItemV1 rename_item_v1 = 16; - IdNameV1 id_name_v1 = 17; - SchemaV1 schema_v1 = 18; - SchemaV2 schema_v2 = 19; - RenameSchemaV1 rename_schema_v1 = 27; - UpdateItemV1 update_item_v1 = 26; - CreateSourceSinkV3 create_source_sink_v3 = 29; - AlterRetainHistoryV1 alter_retain_history_v1 = 30; - ToNewIdV1 to_new_id_v1 = 31; - FromPreviousIdV1 from_previous_id_v1 = 32; - SetV1 set_v1 = 35; - Empty reset_all_v1 = 36; - RotateKeysV1 rotate_keys_v1 = 37; - CreateSourceSinkV4 create_source_sink_v4 = 38; - CreateIndexV1 create_index_v1 = 39; - CreateMaterializedViewV1 create_materialized_view_v1 = 40; - } -} - -// Wrapper of key-values used by the persist implementation to serialize the catalog. -message StateUpdateKind { - reserved "Epoch"; - - message AuditLog { - AuditLogKey key = 1; - } - - message Cluster { - ClusterKey key = 1; - ClusterValue value = 2; - } - - message ClusterReplica { - ClusterReplicaKey key = 1; - ClusterReplicaValue value = 2; - } - - message Comment { - CommentKey key = 1; - CommentValue value = 2; - } - - message Config { - ConfigKey key = 1; - ConfigValue value = 2; - } - - message Database { - DatabaseKey key = 1; - DatabaseValue value = 2; - } - - message DefaultPrivileges { - DefaultPrivilegesKey key = 1; - DefaultPrivilegesValue value = 2; - } - - message FenceToken { - uint64 deploy_generation = 1; - int64 epoch = 2; - } - - message IdAlloc { - IdAllocKey key = 1; - IdAllocValue value = 2; - } - - message ClusterIntrospectionSourceIndex { - ClusterIntrospectionSourceIndexKey key = 1; - ClusterIntrospectionSourceIndexValue value = 2; - } - - message Item { - ItemKey key = 1; - ItemValue value = 2; - } - - message Role { - RoleKey key = 1; - RoleValue value = 2; - } - - message RoleAuth { - RoleAuthKey key = 1; - RoleAuthValue value = 2; - } - - message NetworkPolicy { - NetworkPolicyKey key = 1; - NetworkPolicyValue value = 2; - } - - message Schema { - SchemaKey key = 1; - SchemaValue value = 2; - } - - message Setting { - SettingKey key = 1; - SettingValue value = 2; - } - - message ServerConfiguration { - ServerConfigurationKey key = 1; - ServerConfigurationValue value = 2; - } - - message SourceReferences { - SourceReferencesKey key = 1; - SourceReferencesValue value = 2; - } - - message GidMapping { - GidMappingKey key = 1; - GidMappingValue value = 2; - } - - message SystemPrivileges { - SystemPrivilegesKey key = 1; - SystemPrivilegesValue value = 2; - } - - message StorageCollectionMetadata { - StorageCollectionMetadataKey key = 1; - StorageCollectionMetadataValue value = 2; - } - - message UnfinalizedShard { - UnfinalizedShardKey key = 1; - } - - message TxnWalShard { - TxnWalShardValue value = 1; - } - - reserved 15; - reserved "storage_usage"; - reserved 19; - reserved "timestamp"; - reserved 22; - reserved "persist_txn_shard"; - reserved 8; - reserved "epoch"; - - oneof kind { - AuditLog audit_log = 1; - Cluster cluster = 2; - ClusterReplica cluster_replica = 3; - Comment comment = 4; - Config config = 5; - Database database = 6; - DefaultPrivileges default_privileges = 7; - IdAlloc id_alloc = 9; - ClusterIntrospectionSourceIndex cluster_introspection_source_index = 10; - Item item = 11; - Role role = 12; - Schema schema = 13; - Setting setting = 14; - ServerConfiguration server_configuration = 16; - GidMapping gid_mapping = 17; - SystemPrivileges system_privileges = 18; - StorageCollectionMetadata storage_collection_metadata = 20; - UnfinalizedShard unfinalized_shard = 21; - TxnWalShard txn_wal_shard = 23; - SourceReferences source_references = 24; - FenceToken fence_token = 25; - NetworkPolicy network_policy = 26; - RoleAuth role_auth = 27; - } -} diff --git a/src/catalog-protos/protos/objects_v67.proto b/src/catalog-protos/protos/objects_v67.proto deleted file mode 100644 index 835d426ddf934..0000000000000 --- a/src/catalog-protos/protos/objects_v67.proto +++ /dev/null @@ -1,947 +0,0 @@ -// Copyright Materialize, Inc. and contributors. All rights reserved. -// -// Use of this software is governed by the Business Source License -// included in the LICENSE file. -// -// As of the Change Date specified in that file, in accordance with -// the Business Source License, use of this software will be governed -// by the Apache License, Version 2.0. - -// This protobuf file defines the types we store in the Stash. -// -// Before and after modifying this file, make sure you have a snapshot of the before version, -// e.g. a copy of this file named 'objects_v{CATALOG_VERSION}.proto', and a snapshot of the file -// after your modifications, e.g. 'objects_v{CATALOG_VERSION + 1}.proto'. Then you can write a -// migration using these two files, and no matter how the types change in the future, we'll always -// have these snapshots to facilitate the migration. - -// buf breaking: ignore (does currently not require backward-compatibility) - -syntax = "proto3"; - -package objects_v67; - -message ConfigKey { - string key = 1; -} - -message ConfigValue { - uint64 value = 1; -} - -message SettingKey { - string name = 1; -} - -message SettingValue { - string value = 1; -} - -message IdAllocKey { - string name = 1; -} - -message IdAllocValue { - uint64 next_id = 1; -} - -message GidMappingKey { - string schema_name = 1; - CatalogItemType object_type = 2; - string object_name = 3; -} - -message GidMappingValue { - uint64 id = 1; - string fingerprint = 2; -} - -message ClusterKey { - ClusterId id = 1; -} - -message ClusterValue { - reserved 2; - string name = 1; - RoleId owner_id = 3; - repeated MzAclItem privileges = 4; - ClusterConfig config = 5; -} - -message ClusterIntrospectionSourceIndexKey { - ClusterId cluster_id = 1; - string name = 2; -} - -message ClusterIntrospectionSourceIndexValue { - uint64 index_id = 1; - uint32 oid = 2; -} - -message ClusterReplicaKey { - ReplicaId id = 1; -} - -message ClusterReplicaValue { - ClusterId cluster_id = 1; - string name = 2; - ReplicaConfig config = 3; - RoleId owner_id = 4; -} - -message DatabaseKey { - DatabaseId id = 1; -} - -message DatabaseValue { - string name = 1; - RoleId owner_id = 2; - repeated MzAclItem privileges = 3; - uint32 oid = 4; -} - -message SchemaKey { - SchemaId id = 1; -} - -message SchemaValue { - DatabaseId database_id = 1; - string name = 2; - RoleId owner_id = 3; - repeated MzAclItem privileges = 4; - uint32 oid = 5; -} - -message ItemKey { - GlobalId gid = 1; -} - -message ItemValue { - SchemaId schema_id = 1; - string name = 2; - CatalogItem definition = 3; - RoleId owner_id = 4; - repeated MzAclItem privileges = 5; - uint32 oid = 6; -} - -message RoleKey { - RoleId id = 1; -} - -message RoleValue { - string name = 1; - RoleAttributes attributes = 2; - RoleMembership membership = 3; - RoleVars vars = 4; - uint32 oid = 5; -} - -message ServerConfigurationKey { - string name = 1; -} - -message ServerConfigurationValue { - string value = 1; -} - -message AuditLogKey { - oneof event { - AuditLogEventV1 v1 = 1; - } -} - -message CommentKey { - oneof object { - GlobalId table = 1; - GlobalId view = 2; - GlobalId materialized_view = 4; - GlobalId source = 5; - GlobalId sink = 6; - GlobalId index = 7; - GlobalId func = 8; - GlobalId connection = 9; - GlobalId type = 10; - GlobalId secret = 11; - GlobalId continual_task = 17; - RoleId role = 12; - DatabaseId database = 13; - ResolvedSchema schema = 14; - ClusterId cluster = 15; - ClusterReplicaId cluster_replica = 16; - } - oneof sub_component { - uint64 column_pos = 3; - } -} - -message CommentValue { - string comment = 1; -} - -message SourceReferencesKey { - GlobalId source = 1; -} - -message SourceReferencesValue { - repeated SourceReference references = 1; - EpochMillis updated_at = 2; -} - -message SourceReference { - string name = 1; - optional string namespace = 2; - repeated string columns = 3; -} - -message StorageCollectionMetadataKey { - GlobalId id = 1; -} - -// This value is stored transparently, however, it should only ever be -// manipulated by the storage controller. -message StorageCollectionMetadataValue { - string shard = 1; -} - -// This value is stored transparently, however, it should only ever be -// manipulated by the storage controller. -message UnfinalizedShardKey { - string shard = 1; -} - -// This value is stored transparently, however, it should only ever be -// manipulated by the storage controller. -message TxnWalShardValue { - string shard = 1; -} - -// ---- Common Types -// -// Note: Normally types like this would go in some sort of `common.proto` file, but we want to keep -// our proto definitions in a single file to make snapshotting easier, hence them living here. - -message Empty { - /* purposefully empty */ -} - -// In protobuf a "None" string is the same thing as an empty string. To get the same semantics of -// an `Option` from Rust, we need to wrap a string in a message. -message StringWrapper { - string inner = 1; -} - -message Duration { - uint64 secs = 1; - uint32 nanos = 2; -} - -message EpochMillis { - uint64 millis = 1; -} - -// Opaque timestamp type that is specific to Materialize. -message Timestamp { - uint64 internal = 1; -} - -enum CatalogItemType { - CATALOG_ITEM_TYPE_UNKNOWN = 0; - CATALOG_ITEM_TYPE_TABLE = 1; - CATALOG_ITEM_TYPE_SOURCE = 2; - CATALOG_ITEM_TYPE_SINK = 3; - CATALOG_ITEM_TYPE_VIEW = 4; - CATALOG_ITEM_TYPE_MATERIALIZED_VIEW = 5; - CATALOG_ITEM_TYPE_INDEX = 6; - CATALOG_ITEM_TYPE_TYPE = 7; - CATALOG_ITEM_TYPE_FUNC = 8; - CATALOG_ITEM_TYPE_SECRET = 9; - CATALOG_ITEM_TYPE_CONNECTION = 10; - CATALOG_ITEM_TYPE_CONTINUAL_TASK = 11; -} - -message CatalogItem { - message V1 { - string create_sql = 1; - } - - oneof value { - V1 v1 = 1; - } -} - -message GlobalId { - oneof value { - uint64 system = 1; - uint64 user = 2; - uint64 transient = 3; - Empty explain = 4; - } -} - -message ClusterId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message DatabaseId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message ResolvedDatabaseSpecifier { - oneof spec { - Empty ambient = 1; - DatabaseId id = 2; - } -} - -message SchemaId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message SchemaSpecifier { - oneof spec { - Empty temporary = 1; - SchemaId id = 2; - } -} - -message ResolvedSchema { - ResolvedDatabaseSpecifier database = 1; - SchemaSpecifier schema = 2; -} - -message ReplicaId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message ClusterReplicaId { - ClusterId cluster_id = 1; - ReplicaId replica_id = 2; -} - -message ReplicaLogging { - bool log_logging = 1; - Duration interval = 2; -} - -message OptimizerFeatureOverride { - string name = 1; - string value = 2; -} - -message ClusterScheduleRefreshOptions { - Duration rehydration_time_estimate = 1; -} - -message ClusterSchedule { - oneof value { - Empty manual = 1; - ClusterScheduleRefreshOptions refresh = 2; - } -} - -message ClusterConfig { - message ManagedCluster { - string size = 1; - uint32 replication_factor = 2; - repeated string availability_zones = 3; - ReplicaLogging logging = 4; - bool disk = 6; - repeated OptimizerFeatureOverride optimizer_feature_overrides = 7; - ClusterSchedule schedule = 8; - } - - oneof variant { - Empty unmanaged = 1; - ManagedCluster managed = 2; - } - optional string workload_class = 3; -} - -message ReplicaConfig { - message UnmanagedLocation { - repeated string storagectl_addrs = 1; - repeated string storage_addrs = 2; - repeated string computectl_addrs = 3; - repeated string compute_addrs = 4; - uint64 workers = 5; - } - - message ManagedLocation { - string size = 1; - optional string availability_zone = 2; - bool disk = 4; - bool internal = 5; - optional string billed_as = 6; - bool pending = 7; - } - - oneof location { - UnmanagedLocation unmanaged = 1; - ManagedLocation managed = 2; - } - ReplicaLogging logging = 3; -} - -message RoleId { - oneof value { - uint64 system = 1; - uint64 user = 2; - Empty public = 3; - uint64 predefined = 4; - } -} - -message RoleAttributes { - bool inherit = 1; -} - -message RoleMembership { - message Entry { - RoleId key = 1; - RoleId value = 2; - } - - repeated Entry map = 1; -} - -message RoleVars { - message SqlSet { - repeated string entries = 1; - } - - message Entry { - string key = 1; - oneof val { - string flat = 2; - SqlSet sql_set = 3; - } - } - - repeated Entry entries = 1; -} - -message AclMode { - // A bit flag representing all the privileges that can be granted to a role. - uint64 bitflags = 1; -} - -message MzAclItem { - RoleId grantee = 1; - RoleId grantor = 2; - AclMode acl_mode = 3; -} - -enum ObjectType { - OBJECT_TYPE_UNKNOWN = 0; - OBJECT_TYPE_TABLE = 1; - OBJECT_TYPE_VIEW = 2; - OBJECT_TYPE_MATERIALIZED_VIEW = 3; - OBJECT_TYPE_SOURCE = 4; - OBJECT_TYPE_SINK = 5; - OBJECT_TYPE_INDEX = 6; - OBJECT_TYPE_TYPE = 7; - OBJECT_TYPE_ROLE = 8; - OBJECT_TYPE_CLUSTER = 9; - OBJECT_TYPE_CLUSTER_REPLICA = 10; - OBJECT_TYPE_SECRET = 11; - OBJECT_TYPE_CONNECTION = 12; - OBJECT_TYPE_DATABASE = 13; - OBJECT_TYPE_SCHEMA = 14; - OBJECT_TYPE_FUNC = 15; - OBJECT_TYPE_CONTINUAL_TASK = 16; -} - -message DefaultPrivilegesKey { - RoleId role_id = 1; - DatabaseId database_id = 2; - SchemaId schema_id = 3; - ObjectType object_type = 4; - RoleId grantee = 5; -} - -message DefaultPrivilegesValue { - AclMode privileges = 1; -} - -message SystemPrivilegesKey { - RoleId grantee = 1; - RoleId grantor = 2; -} - -message SystemPrivilegesValue { - AclMode acl_mode = 1; -} - -message AuditLogEventV1 { - enum EventType { - EVENT_TYPE_UNKNOWN = 0; - EVENT_TYPE_CREATE = 1; - EVENT_TYPE_DROP = 2; - EVENT_TYPE_ALTER = 3; - EVENT_TYPE_GRANT = 4; - EVENT_TYPE_REVOKE = 5; - EVENT_TYPE_COMMENT = 6; - } - - enum ObjectType { - OBJECT_TYPE_UNKNOWN = 0; - OBJECT_TYPE_CLUSTER = 1; - OBJECT_TYPE_CLUSTER_REPLICA = 2; - OBJECT_TYPE_CONNECTION = 3; - OBJECT_TYPE_DATABASE = 4; - OBJECT_TYPE_FUNC = 5; - OBJECT_TYPE_INDEX = 6; - OBJECT_TYPE_MATERIALIZED_VIEW = 7; - OBJECT_TYPE_ROLE = 8; - OBJECT_TYPE_SECRET = 9; - OBJECT_TYPE_SCHEMA = 10; - OBJECT_TYPE_SINK = 11; - OBJECT_TYPE_SOURCE = 12; - OBJECT_TYPE_TABLE = 13; - OBJECT_TYPE_TYPE = 14; - OBJECT_TYPE_VIEW = 15; - OBJECT_TYPE_SYSTEM = 16; - OBJECT_TYPE_CONTINUAL_TASK = 17; - } - - message IdFullNameV1 { - string id = 1; - FullNameV1 name = 2; - } - - message FullNameV1 { - string database = 1; - string schema = 2; - string item = 3; - } - - message IdNameV1 { - string id = 1; - string name = 2; - } - - message RenameClusterV1 { - string id = 1; - string old_name = 2; - string new_name = 3; - } - - message RenameClusterReplicaV1 { - string cluster_id = 1; - string replica_id = 2; - string old_name = 3; - string new_name = 4; - } - - message RenameItemV1 { - string id = 1; - FullNameV1 old_name = 2; - FullNameV1 new_name = 3; - } - - message CreateClusterReplicaV1 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - string logical_size = 5; - bool disk = 6; - optional string billed_as = 7; - bool internal = 8; - } - - message CreateClusterReplicaV2 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - string logical_size = 5; - bool disk = 6; - optional string billed_as = 7; - bool internal = 8; - CreateOrDropClusterReplicaReasonV1 reason = 9; - SchedulingDecisionsWithReasonsV1 scheduling_policies = 10; - } - - message DropClusterReplicaV1 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - } - - message DropClusterReplicaV2 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - CreateOrDropClusterReplicaReasonV1 reason = 5; - SchedulingDecisionsWithReasonsV1 scheduling_policies = 6; - } - - message CreateOrDropClusterReplicaReasonV1 { - oneof reason { - Empty Manual = 1; - Empty Schedule = 2; - Empty System = 3; - } - } - - message SchedulingDecisionsWithReasonsV1 { - RefreshDecisionWithReasonV1 on_refresh = 1; - } - - message RefreshDecisionWithReasonV1 { - oneof decision { - Empty On = 1; - Empty Off = 2; - } - repeated string objects_needing_refresh = 3; - string rehydration_time_estimate = 4; - } - - message CreateSourceSinkV1 { - string id = 1; - FullNameV1 name = 2; - StringWrapper size = 3; - } - - message CreateSourceSinkV2 { - string id = 1; - FullNameV1 name = 2; - StringWrapper size = 3; - string external_type = 4; - } - - message CreateSourceSinkV3 { - string id = 1; - FullNameV1 name = 2; - string external_type = 3; - } - - message CreateSourceSinkV4 { - string id = 1; - StringWrapper cluster_id = 2; - FullNameV1 name = 3; - string external_type = 4; - } - - message CreateIndexV1 { - string id = 1; - string cluster_id = 2; - FullNameV1 name = 3; - } - - message CreateMaterializedViewV1 { - string id = 1; - string cluster_id = 2; - FullNameV1 name = 3; - } - - message AlterSourceSinkV1 { - string id = 1; - FullNameV1 name = 2; - StringWrapper old_size = 3; - StringWrapper new_size = 4; - } - - message AlterSetClusterV1 { - string id = 1; - FullNameV1 name = 2; - StringWrapper old_cluster = 3; - StringWrapper new_cluster = 4; - } - - message GrantRoleV1 { - string role_id = 1; - string member_id = 2; - string grantor_id = 3; - } - - message GrantRoleV2 { - string role_id = 1; - string member_id = 2; - string grantor_id = 3; - string executed_by = 4; - } - - message RevokeRoleV1 { - string role_id = 1; - string member_id = 2; - } - - message RevokeRoleV2 { - string role_id = 1; - string member_id = 2; - string grantor_id = 3; - string executed_by = 4; - } - - message UpdatePrivilegeV1 { - string object_id = 1; - string grantee_id = 2; - string grantor_id = 3; - string privileges = 4; - } - - message AlterDefaultPrivilegeV1 { - string role_id = 1; - StringWrapper database_id = 2; - StringWrapper schema_id = 3; - string grantee_id = 4; - string privileges = 5; - } - - message UpdateOwnerV1 { - string object_id = 1; - string old_owner_id = 2; - string new_owner_id = 3; - } - - message SchemaV1 { - string id = 1; - string name = 2; - string database_name = 3; - } - - message SchemaV2 { - string id = 1; - string name = 2; - StringWrapper database_name = 3; - } - - message RenameSchemaV1 { - string id = 1; - optional string database_name = 2; - string old_name = 3; - string new_name = 4; - } - - message UpdateItemV1 { - string id = 1; - FullNameV1 name = 2; - } - - message AlterRetainHistoryV1 { - string id = 1; - optional string old_history = 2; - optional string new_history = 3; - } - - message ToNewIdV1 { - string id = 1; - string new_id = 2; - } - - message FromPreviousIdV1 { - string id = 1; - string previous_id = 2; - } - - message SetV1 { - string name = 1; - optional string value = 2; - } - - message RotateKeysV1 { - string id = 1; - string name = 2; - } - - uint64 id = 1; - EventType event_type = 2; - ObjectType object_type = 3; - StringWrapper user = 4; - EpochMillis occurred_at = 5; - - // next-id: 40 - oneof details { - CreateClusterReplicaV1 create_cluster_replica_v1 = 6; - CreateClusterReplicaV2 create_cluster_replica_v2 = 33; - DropClusterReplicaV1 drop_cluster_replica_v1 = 7; - DropClusterReplicaV2 drop_cluster_replica_v2 = 34; - CreateSourceSinkV1 create_source_sink_v1 = 8; - CreateSourceSinkV2 create_source_sink_v2 = 9; - AlterSourceSinkV1 alter_source_sink_v1 = 10; - AlterSetClusterV1 alter_set_cluster_v1 = 25; - GrantRoleV1 grant_role_v1 = 11; - GrantRoleV2 grant_role_v2 = 12; - RevokeRoleV1 revoke_role_v1 = 13; - RevokeRoleV2 revoke_role_v2 = 14; - UpdatePrivilegeV1 update_privilege_v1 = 22; - AlterDefaultPrivilegeV1 alter_default_privilege_v1 = 23; - UpdateOwnerV1 update_owner_v1 = 24; - IdFullNameV1 id_full_name_v1 = 15; - RenameClusterV1 rename_cluster_v1 = 20; - RenameClusterReplicaV1 rename_cluster_replica_v1 = 21; - RenameItemV1 rename_item_v1 = 16; - IdNameV1 id_name_v1 = 17; - SchemaV1 schema_v1 = 18; - SchemaV2 schema_v2 = 19; - RenameSchemaV1 rename_schema_v1 = 27; - UpdateItemV1 update_item_v1 = 26; - CreateSourceSinkV3 create_source_sink_v3 = 29; - AlterRetainHistoryV1 alter_retain_history_v1 = 30; - ToNewIdV1 to_new_id_v1 = 31; - FromPreviousIdV1 from_previous_id_v1 = 32; - SetV1 set_v1 = 35; - Empty reset_all_v1 = 36; - RotateKeysV1 rotate_keys_v1 = 37; - CreateSourceSinkV4 create_source_sink_v4 = 38; - CreateIndexV1 create_index_v1 = 39; - CreateMaterializedViewV1 create_materialized_view_v1 = 40; - } -} - -// Wrapper of key-values used by the persist implementation to serialize the catalog. -message StateUpdateKind { - reserved "Epoch"; - - message AuditLog { - AuditLogKey key = 1; - } - - message Cluster { - ClusterKey key = 1; - ClusterValue value = 2; - } - - message ClusterReplica { - ClusterReplicaKey key = 1; - ClusterReplicaValue value = 2; - } - - message Comment { - CommentKey key = 1; - CommentValue value = 2; - } - - message Config { - ConfigKey key = 1; - ConfigValue value = 2; - } - - message Database { - DatabaseKey key = 1; - DatabaseValue value = 2; - } - - message DefaultPrivileges { - DefaultPrivilegesKey key = 1; - DefaultPrivilegesValue value = 2; - } - - message FenceToken { - uint64 deploy_generation = 1; - int64 epoch = 2; - } - - message IdAlloc { - IdAllocKey key = 1; - IdAllocValue value = 2; - } - - message ClusterIntrospectionSourceIndex { - ClusterIntrospectionSourceIndexKey key = 1; - ClusterIntrospectionSourceIndexValue value = 2; - } - - message Item { - ItemKey key = 1; - ItemValue value = 2; - } - - message Role { - RoleKey key = 1; - RoleValue value = 2; - } - - message Schema { - SchemaKey key = 1; - SchemaValue value = 2; - } - - message Setting { - SettingKey key = 1; - SettingValue value = 2; - } - - message ServerConfiguration { - ServerConfigurationKey key = 1; - ServerConfigurationValue value = 2; - } - - message SourceReferences { - SourceReferencesKey key = 1; - SourceReferencesValue value = 2; - } - - message GidMapping { - GidMappingKey key = 1; - GidMappingValue value = 2; - } - - message SystemPrivileges { - SystemPrivilegesKey key = 1; - SystemPrivilegesValue value = 2; - } - - message StorageCollectionMetadata { - StorageCollectionMetadataKey key = 1; - StorageCollectionMetadataValue value = 2; - } - - message UnfinalizedShard { - UnfinalizedShardKey key = 1; - } - - message TxnWalShard { - TxnWalShardValue value = 1; - } - - reserved 15; - reserved "storage_usage"; - reserved 19; - reserved "timestamp"; - reserved 22; - reserved "persist_txn_shard"; - reserved 8; - reserved "epoch"; - - oneof kind { - AuditLog audit_log = 1; - Cluster cluster = 2; - ClusterReplica cluster_replica = 3; - Comment comment = 4; - Config config = 5; - Database database = 6; - DefaultPrivileges default_privileges = 7; - IdAlloc id_alloc = 9; - ClusterIntrospectionSourceIndex cluster_introspection_source_index = 10; - Item item = 11; - Role role = 12; - Schema schema = 13; - Setting setting = 14; - ServerConfiguration server_configuration = 16; - GidMapping gid_mapping = 17; - SystemPrivileges system_privileges = 18; - StorageCollectionMetadata storage_collection_metadata = 20; - UnfinalizedShard unfinalized_shard = 21; - TxnWalShard txn_wal_shard = 23; - SourceReferences source_references = 24; - FenceToken fence_token = 25; - } -} diff --git a/src/catalog-protos/protos/objects_v68.proto b/src/catalog-protos/protos/objects_v68.proto deleted file mode 100644 index 1db91b5ed02fe..0000000000000 --- a/src/catalog-protos/protos/objects_v68.proto +++ /dev/null @@ -1,984 +0,0 @@ -// Copyright Materialize, Inc. and contributors. All rights reserved. -// -// Use of this software is governed by the Business Source License -// included in the LICENSE file. -// -// As of the Change Date specified in that file, in accordance with -// the Business Source License, use of this software will be governed -// by the Apache License, Version 2.0. - -// This protobuf file defines the types we store in the Stash. -// -// Before and after modifying this file, make sure you have a snapshot of the before version, -// e.g. a copy of this file named 'objects_v{CATALOG_VERSION}.proto', and a snapshot of the file -// after your modifications, e.g. 'objects_v{CATALOG_VERSION + 1}.proto'. Then you can write a -// migration using these two files, and no matter how the types change in the future, we'll always -// have these snapshots to facilitate the migration. - -// buf breaking: ignore (does currently not require backward-compatibility) - -syntax = "proto3"; - -package objects_v68; - -message ConfigKey { - string key = 1; -} - -message ConfigValue { - uint64 value = 1; -} - -message SettingKey { - string name = 1; -} - -message SettingValue { - string value = 1; -} - -message IdAllocKey { - string name = 1; -} - -message IdAllocValue { - uint64 next_id = 1; -} - -message GidMappingKey { - string schema_name = 1; - CatalogItemType object_type = 2; - string object_name = 3; -} - -message GidMappingValue { - // TODO(parkmycar): Ideally this is a SystemCatalogItemId but making this change panics 0dt - // upgrades if there were new builtin objects added since the older version of Materialize - // doesn't know how to read the new SystemCatalogItemId type. - uint64 id = 1; - string fingerprint = 2; - SystemGlobalId global_id = 3; -} - -message ClusterKey { - ClusterId id = 1; -} - -message ClusterValue { - reserved 2; - string name = 1; - RoleId owner_id = 3; - repeated MzAclItem privileges = 4; - ClusterConfig config = 5; -} - -message ClusterIntrospectionSourceIndexKey { - ClusterId cluster_id = 1; - string name = 2; -} - -message ClusterIntrospectionSourceIndexValue { - // TODO(parkmycar): Ideally this is a SystemCatalogItemId but making this change panics 0dt - // upgrades if there were new builtin objects added since the older version of Materialize - // doesn't know how to read the new SystemCatalogItemId type. - uint64 index_id = 1; - uint32 oid = 2; - SystemGlobalId global_id = 3; -} - -message ClusterReplicaKey { - ReplicaId id = 1; -} - -message ClusterReplicaValue { - ClusterId cluster_id = 1; - string name = 2; - ReplicaConfig config = 3; - RoleId owner_id = 4; -} - -message DatabaseKey { - DatabaseId id = 1; -} - -message DatabaseValue { - string name = 1; - RoleId owner_id = 2; - repeated MzAclItem privileges = 3; - uint32 oid = 4; -} - -message SchemaKey { - SchemaId id = 1; -} - -message SchemaValue { - DatabaseId database_id = 1; - string name = 2; - RoleId owner_id = 3; - repeated MzAclItem privileges = 4; - uint32 oid = 5; -} - -message ItemKey { - CatalogItemId gid = 1; -} - -message ItemValue { - SchemaId schema_id = 1; - string name = 2; - CatalogItem definition = 3; - RoleId owner_id = 4; - repeated MzAclItem privileges = 5; - uint32 oid = 6; - GlobalId global_id = 7; - repeated ItemVersion extra_versions = 8; -} - -message ItemVersion { - GlobalId global_id = 1; - Version version = 2; -} - -message RoleKey { - RoleId id = 1; -} - -message RoleValue { - string name = 1; - RoleAttributes attributes = 2; - RoleMembership membership = 3; - RoleVars vars = 4; - uint32 oid = 5; -} - -message ServerConfigurationKey { - string name = 1; -} - -message ServerConfigurationValue { - string value = 1; -} - -message AuditLogKey { - oneof event { - AuditLogEventV1 v1 = 1; - } -} - -message CommentKey { - oneof object { - CatalogItemId table = 1; - CatalogItemId view = 2; - CatalogItemId materialized_view = 4; - CatalogItemId source = 5; - CatalogItemId sink = 6; - CatalogItemId index = 7; - CatalogItemId func = 8; - CatalogItemId connection = 9; - CatalogItemId type = 10; - CatalogItemId secret = 11; - CatalogItemId continual_task = 17; - RoleId role = 12; - DatabaseId database = 13; - ResolvedSchema schema = 14; - ClusterId cluster = 15; - ClusterReplicaId cluster_replica = 16; - } - oneof sub_component { - uint64 column_pos = 3; - } -} - -message CommentValue { - string comment = 1; -} - -message SourceReferencesKey { - CatalogItemId source = 1; -} - -message SourceReferencesValue { - repeated SourceReference references = 1; - EpochMillis updated_at = 2; -} - -message SourceReference { - string name = 1; - optional string namespace = 2; - repeated string columns = 3; -} - -message StorageCollectionMetadataKey { - GlobalId id = 1; -} - -// This value is stored transparently, however, it should only ever be -// manipulated by the storage controller. -message StorageCollectionMetadataValue { - string shard = 1; -} - -// This value is stored transparently, however, it should only ever be -// manipulated by the storage controller. -message UnfinalizedShardKey { - string shard = 1; -} - -// This value is stored transparently, however, it should only ever be -// manipulated by the storage controller. -message TxnWalShardValue { - string shard = 1; -} - -// ---- Common Types -// -// Note: Normally types like this would go in some sort of `common.proto` file, but we want to keep -// our proto definitions in a single file to make snapshotting easier, hence them living here. - -message Empty { - /* purposefully empty */ -} - -// In protobuf a "None" string is the same thing as an empty string. To get the same semantics of -// an `Option` from Rust, we need to wrap a string in a message. -message StringWrapper { - string inner = 1; -} - -message Duration { - uint64 secs = 1; - uint32 nanos = 2; -} - -message EpochMillis { - uint64 millis = 1; -} - -// Opaque timestamp type that is specific to Materialize. -message Timestamp { - uint64 internal = 1; -} - -message Version { - uint64 value = 2; -} - -enum CatalogItemType { - CATALOG_ITEM_TYPE_UNKNOWN = 0; - CATALOG_ITEM_TYPE_TABLE = 1; - CATALOG_ITEM_TYPE_SOURCE = 2; - CATALOG_ITEM_TYPE_SINK = 3; - CATALOG_ITEM_TYPE_VIEW = 4; - CATALOG_ITEM_TYPE_MATERIALIZED_VIEW = 5; - CATALOG_ITEM_TYPE_INDEX = 6; - CATALOG_ITEM_TYPE_TYPE = 7; - CATALOG_ITEM_TYPE_FUNC = 8; - CATALOG_ITEM_TYPE_SECRET = 9; - CATALOG_ITEM_TYPE_CONNECTION = 10; - CATALOG_ITEM_TYPE_CONTINUAL_TASK = 11; -} - -message CatalogItem { - message V1 { - string create_sql = 1; - } - - oneof value { - V1 v1 = 1; - } -} - -message CatalogItemId { - oneof value { - uint64 system = 1; - uint64 user = 2; - uint64 transient = 3; - } -} - -/// A newtype wrapper for a `CatalogItemId` that is always in the "system" namespace. -message SystemCatalogItemId { - uint64 value = 1; -} - -message GlobalId { - oneof value { - uint64 system = 1; - uint64 user = 2; - uint64 transient = 3; - Empty explain = 4; - } -} - -/// A newtype wrapper for a `GlobalId` that is always in the "system" namespace. -message SystemGlobalId { - uint64 value = 1; -} - -message ClusterId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message DatabaseId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message ResolvedDatabaseSpecifier { - oneof spec { - Empty ambient = 1; - DatabaseId id = 2; - } -} - -message SchemaId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message SchemaSpecifier { - oneof spec { - Empty temporary = 1; - SchemaId id = 2; - } -} - -message ResolvedSchema { - ResolvedDatabaseSpecifier database = 1; - SchemaSpecifier schema = 2; -} - -message ReplicaId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message ClusterReplicaId { - ClusterId cluster_id = 1; - ReplicaId replica_id = 2; -} - -message ReplicaLogging { - bool log_logging = 1; - Duration interval = 2; -} - -message OptimizerFeatureOverride { - string name = 1; - string value = 2; -} - -message ClusterScheduleRefreshOptions { - Duration rehydration_time_estimate = 1; -} - -message ClusterSchedule { - oneof value { - Empty manual = 1; - ClusterScheduleRefreshOptions refresh = 2; - } -} - -message ClusterConfig { - message ManagedCluster { - string size = 1; - uint32 replication_factor = 2; - repeated string availability_zones = 3; - ReplicaLogging logging = 4; - bool disk = 6; - repeated OptimizerFeatureOverride optimizer_feature_overrides = 7; - ClusterSchedule schedule = 8; - } - - oneof variant { - Empty unmanaged = 1; - ManagedCluster managed = 2; - } - optional string workload_class = 3; -} - -message ReplicaConfig { - message UnmanagedLocation { - repeated string storagectl_addrs = 1; - repeated string storage_addrs = 2; - repeated string computectl_addrs = 3; - repeated string compute_addrs = 4; - uint64 workers = 5; - } - - message ManagedLocation { - string size = 1; - optional string availability_zone = 2; - bool disk = 4; - bool internal = 5; - optional string billed_as = 6; - bool pending = 7; - } - - oneof location { - UnmanagedLocation unmanaged = 1; - ManagedLocation managed = 2; - } - ReplicaLogging logging = 3; -} - -message RoleId { - oneof value { - uint64 system = 1; - uint64 user = 2; - Empty public = 3; - uint64 predefined = 4; - } -} - -message RoleAttributes { - bool inherit = 1; -} - -message RoleMembership { - message Entry { - RoleId key = 1; - RoleId value = 2; - } - - repeated Entry map = 1; -} - -message RoleVars { - message SqlSet { - repeated string entries = 1; - } - - message Entry { - string key = 1; - oneof val { - string flat = 2; - SqlSet sql_set = 3; - } - } - - repeated Entry entries = 1; -} - -message AclMode { - // A bit flag representing all the privileges that can be granted to a role. - uint64 bitflags = 1; -} - -message MzAclItem { - RoleId grantee = 1; - RoleId grantor = 2; - AclMode acl_mode = 3; -} - -enum ObjectType { - OBJECT_TYPE_UNKNOWN = 0; - OBJECT_TYPE_TABLE = 1; - OBJECT_TYPE_VIEW = 2; - OBJECT_TYPE_MATERIALIZED_VIEW = 3; - OBJECT_TYPE_SOURCE = 4; - OBJECT_TYPE_SINK = 5; - OBJECT_TYPE_INDEX = 6; - OBJECT_TYPE_TYPE = 7; - OBJECT_TYPE_ROLE = 8; - OBJECT_TYPE_CLUSTER = 9; - OBJECT_TYPE_CLUSTER_REPLICA = 10; - OBJECT_TYPE_SECRET = 11; - OBJECT_TYPE_CONNECTION = 12; - OBJECT_TYPE_DATABASE = 13; - OBJECT_TYPE_SCHEMA = 14; - OBJECT_TYPE_FUNC = 15; - OBJECT_TYPE_CONTINUAL_TASK = 16; -} - -message DefaultPrivilegesKey { - RoleId role_id = 1; - DatabaseId database_id = 2; - SchemaId schema_id = 3; - ObjectType object_type = 4; - RoleId grantee = 5; -} - -message DefaultPrivilegesValue { - AclMode privileges = 1; -} - -message SystemPrivilegesKey { - RoleId grantee = 1; - RoleId grantor = 2; -} - -message SystemPrivilegesValue { - AclMode acl_mode = 1; -} - -message AuditLogEventV1 { - enum EventType { - EVENT_TYPE_UNKNOWN = 0; - EVENT_TYPE_CREATE = 1; - EVENT_TYPE_DROP = 2; - EVENT_TYPE_ALTER = 3; - EVENT_TYPE_GRANT = 4; - EVENT_TYPE_REVOKE = 5; - EVENT_TYPE_COMMENT = 6; - } - - enum ObjectType { - OBJECT_TYPE_UNKNOWN = 0; - OBJECT_TYPE_CLUSTER = 1; - OBJECT_TYPE_CLUSTER_REPLICA = 2; - OBJECT_TYPE_CONNECTION = 3; - OBJECT_TYPE_DATABASE = 4; - OBJECT_TYPE_FUNC = 5; - OBJECT_TYPE_INDEX = 6; - OBJECT_TYPE_MATERIALIZED_VIEW = 7; - OBJECT_TYPE_ROLE = 8; - OBJECT_TYPE_SECRET = 9; - OBJECT_TYPE_SCHEMA = 10; - OBJECT_TYPE_SINK = 11; - OBJECT_TYPE_SOURCE = 12; - OBJECT_TYPE_TABLE = 13; - OBJECT_TYPE_TYPE = 14; - OBJECT_TYPE_VIEW = 15; - OBJECT_TYPE_SYSTEM = 16; - OBJECT_TYPE_CONTINUAL_TASK = 17; - } - - message IdFullNameV1 { - string id = 1; - FullNameV1 name = 2; - } - - message FullNameV1 { - string database = 1; - string schema = 2; - string item = 3; - } - - message IdNameV1 { - string id = 1; - string name = 2; - } - - message RenameClusterV1 { - string id = 1; - string old_name = 2; - string new_name = 3; - } - - message RenameClusterReplicaV1 { - string cluster_id = 1; - string replica_id = 2; - string old_name = 3; - string new_name = 4; - } - - message RenameItemV1 { - string id = 1; - FullNameV1 old_name = 2; - FullNameV1 new_name = 3; - } - - message CreateClusterReplicaV1 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - string logical_size = 5; - bool disk = 6; - optional string billed_as = 7; - bool internal = 8; - } - - message CreateClusterReplicaV2 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - string logical_size = 5; - bool disk = 6; - optional string billed_as = 7; - bool internal = 8; - CreateOrDropClusterReplicaReasonV1 reason = 9; - SchedulingDecisionsWithReasonsV1 scheduling_policies = 10; - } - - message DropClusterReplicaV1 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - } - - message DropClusterReplicaV2 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - CreateOrDropClusterReplicaReasonV1 reason = 5; - SchedulingDecisionsWithReasonsV1 scheduling_policies = 6; - } - - message CreateOrDropClusterReplicaReasonV1 { - oneof reason { - Empty Manual = 1; - Empty Schedule = 2; - Empty System = 3; - } - } - - message SchedulingDecisionsWithReasonsV1 { - RefreshDecisionWithReasonV1 on_refresh = 1; - } - - message RefreshDecisionWithReasonV1 { - oneof decision { - Empty On = 1; - Empty Off = 2; - } - repeated string objects_needing_refresh = 3; - string rehydration_time_estimate = 4; - } - - message CreateSourceSinkV1 { - string id = 1; - FullNameV1 name = 2; - StringWrapper size = 3; - } - - message CreateSourceSinkV2 { - string id = 1; - FullNameV1 name = 2; - StringWrapper size = 3; - string external_type = 4; - } - - message CreateSourceSinkV3 { - string id = 1; - FullNameV1 name = 2; - string external_type = 3; - } - - message CreateSourceSinkV4 { - string id = 1; - StringWrapper cluster_id = 2; - FullNameV1 name = 3; - string external_type = 4; - } - - message CreateIndexV1 { - string id = 1; - string cluster_id = 2; - FullNameV1 name = 3; - } - - message CreateMaterializedViewV1 { - string id = 1; - string cluster_id = 2; - FullNameV1 name = 3; - } - - message AlterSourceSinkV1 { - string id = 1; - FullNameV1 name = 2; - StringWrapper old_size = 3; - StringWrapper new_size = 4; - } - - message AlterSetClusterV1 { - string id = 1; - FullNameV1 name = 2; - StringWrapper old_cluster = 3; - StringWrapper new_cluster = 4; - } - - message GrantRoleV1 { - string role_id = 1; - string member_id = 2; - string grantor_id = 3; - } - - message GrantRoleV2 { - string role_id = 1; - string member_id = 2; - string grantor_id = 3; - string executed_by = 4; - } - - message RevokeRoleV1 { - string role_id = 1; - string member_id = 2; - } - - message RevokeRoleV2 { - string role_id = 1; - string member_id = 2; - string grantor_id = 3; - string executed_by = 4; - } - - message UpdatePrivilegeV1 { - string object_id = 1; - string grantee_id = 2; - string grantor_id = 3; - string privileges = 4; - } - - message AlterDefaultPrivilegeV1 { - string role_id = 1; - StringWrapper database_id = 2; - StringWrapper schema_id = 3; - string grantee_id = 4; - string privileges = 5; - } - - message UpdateOwnerV1 { - string object_id = 1; - string old_owner_id = 2; - string new_owner_id = 3; - } - - message SchemaV1 { - string id = 1; - string name = 2; - string database_name = 3; - } - - message SchemaV2 { - string id = 1; - string name = 2; - StringWrapper database_name = 3; - } - - message RenameSchemaV1 { - string id = 1; - optional string database_name = 2; - string old_name = 3; - string new_name = 4; - } - - message UpdateItemV1 { - string id = 1; - FullNameV1 name = 2; - } - - message AlterRetainHistoryV1 { - string id = 1; - optional string old_history = 2; - optional string new_history = 3; - } - - message ToNewIdV1 { - string id = 1; - string new_id = 2; - } - - message FromPreviousIdV1 { - string id = 1; - string previous_id = 2; - } - - message SetV1 { - string name = 1; - optional string value = 2; - } - - message RotateKeysV1 { - string id = 1; - string name = 2; - } - - uint64 id = 1; - EventType event_type = 2; - ObjectType object_type = 3; - StringWrapper user = 4; - EpochMillis occurred_at = 5; - - // next-id: 40 - oneof details { - CreateClusterReplicaV1 create_cluster_replica_v1 = 6; - CreateClusterReplicaV2 create_cluster_replica_v2 = 33; - DropClusterReplicaV1 drop_cluster_replica_v1 = 7; - DropClusterReplicaV2 drop_cluster_replica_v2 = 34; - CreateSourceSinkV1 create_source_sink_v1 = 8; - CreateSourceSinkV2 create_source_sink_v2 = 9; - AlterSourceSinkV1 alter_source_sink_v1 = 10; - AlterSetClusterV1 alter_set_cluster_v1 = 25; - GrantRoleV1 grant_role_v1 = 11; - GrantRoleV2 grant_role_v2 = 12; - RevokeRoleV1 revoke_role_v1 = 13; - RevokeRoleV2 revoke_role_v2 = 14; - UpdatePrivilegeV1 update_privilege_v1 = 22; - AlterDefaultPrivilegeV1 alter_default_privilege_v1 = 23; - UpdateOwnerV1 update_owner_v1 = 24; - IdFullNameV1 id_full_name_v1 = 15; - RenameClusterV1 rename_cluster_v1 = 20; - RenameClusterReplicaV1 rename_cluster_replica_v1 = 21; - RenameItemV1 rename_item_v1 = 16; - IdNameV1 id_name_v1 = 17; - SchemaV1 schema_v1 = 18; - SchemaV2 schema_v2 = 19; - RenameSchemaV1 rename_schema_v1 = 27; - UpdateItemV1 update_item_v1 = 26; - CreateSourceSinkV3 create_source_sink_v3 = 29; - AlterRetainHistoryV1 alter_retain_history_v1 = 30; - ToNewIdV1 to_new_id_v1 = 31; - FromPreviousIdV1 from_previous_id_v1 = 32; - SetV1 set_v1 = 35; - Empty reset_all_v1 = 36; - RotateKeysV1 rotate_keys_v1 = 37; - CreateSourceSinkV4 create_source_sink_v4 = 38; - CreateIndexV1 create_index_v1 = 39; - CreateMaterializedViewV1 create_materialized_view_v1 = 40; - } -} - -// Wrapper of key-values used by the persist implementation to serialize the catalog. -message StateUpdateKind { - reserved "Epoch"; - - message AuditLog { - AuditLogKey key = 1; - } - - message Cluster { - ClusterKey key = 1; - ClusterValue value = 2; - } - - message ClusterReplica { - ClusterReplicaKey key = 1; - ClusterReplicaValue value = 2; - } - - message Comment { - CommentKey key = 1; - CommentValue value = 2; - } - - message Config { - ConfigKey key = 1; - ConfigValue value = 2; - } - - message Database { - DatabaseKey key = 1; - DatabaseValue value = 2; - } - - message DefaultPrivileges { - DefaultPrivilegesKey key = 1; - DefaultPrivilegesValue value = 2; - } - - message FenceToken { - uint64 deploy_generation = 1; - int64 epoch = 2; - } - - message IdAlloc { - IdAllocKey key = 1; - IdAllocValue value = 2; - } - - message ClusterIntrospectionSourceIndex { - ClusterIntrospectionSourceIndexKey key = 1; - ClusterIntrospectionSourceIndexValue value = 2; - } - - message Item { - ItemKey key = 1; - ItemValue value = 2; - } - - message Role { - RoleKey key = 1; - RoleValue value = 2; - } - - message Schema { - SchemaKey key = 1; - SchemaValue value = 2; - } - - message Setting { - SettingKey key = 1; - SettingValue value = 2; - } - - message ServerConfiguration { - ServerConfigurationKey key = 1; - ServerConfigurationValue value = 2; - } - - message SourceReferences { - SourceReferencesKey key = 1; - SourceReferencesValue value = 2; - } - - message GidMapping { - GidMappingKey key = 1; - GidMappingValue value = 2; - } - - message SystemPrivileges { - SystemPrivilegesKey key = 1; - SystemPrivilegesValue value = 2; - } - - message StorageCollectionMetadata { - StorageCollectionMetadataKey key = 1; - StorageCollectionMetadataValue value = 2; - } - - message UnfinalizedShard { - UnfinalizedShardKey key = 1; - } - - message TxnWalShard { - TxnWalShardValue value = 1; - } - - reserved 15; - reserved "storage_usage"; - reserved 19; - reserved "timestamp"; - reserved 22; - reserved "persist_txn_shard"; - reserved 8; - reserved "epoch"; - - oneof kind { - AuditLog audit_log = 1; - Cluster cluster = 2; - ClusterReplica cluster_replica = 3; - Comment comment = 4; - Config config = 5; - Database database = 6; - DefaultPrivileges default_privileges = 7; - IdAlloc id_alloc = 9; - ClusterIntrospectionSourceIndex cluster_introspection_source_index = 10; - Item item = 11; - Role role = 12; - Schema schema = 13; - Setting setting = 14; - ServerConfiguration server_configuration = 16; - GidMapping gid_mapping = 17; - SystemPrivileges system_privileges = 18; - StorageCollectionMetadata storage_collection_metadata = 20; - UnfinalizedShard unfinalized_shard = 21; - TxnWalShard txn_wal_shard = 23; - SourceReferences source_references = 24; - FenceToken fence_token = 25; - } -} diff --git a/src/catalog-protos/protos/objects_v69.proto b/src/catalog-protos/protos/objects_v69.proto deleted file mode 100644 index e5eb59ed6f49b..0000000000000 --- a/src/catalog-protos/protos/objects_v69.proto +++ /dev/null @@ -1,1023 +0,0 @@ -// Copyright Materialize, Inc. and contributors. All rights reserved. -// -// Use of this software is governed by the Business Source License -// included in the LICENSE file. -// -// As of the Change Date specified in that file, in accordance with -// the Business Source License, use of this software will be governed -// by the Apache License, Version 2.0. - -// This protobuf file defines the types we store in the Stash. -// -// Before and after modifying this file, make sure you have a snapshot of the before version, -// e.g. a copy of this file named 'objects_v{CATALOG_VERSION}.proto', and a snapshot of the file -// after your modifications, e.g. 'objects_v{CATALOG_VERSION + 1}.proto'. Then you can write a -// migration using these two files, and no matter how the types change in the future, we'll always -// have these snapshots to facilitate the migration. - -// buf breaking: ignore (does currently not require backward-compatibility) - -syntax = "proto3"; - -package objects_v69; - -message ConfigKey { - string key = 1; -} - -message ConfigValue { - uint64 value = 1; -} - -message SettingKey { - string name = 1; -} - -message SettingValue { - string value = 1; -} - -message IdAllocKey { - string name = 1; -} - -message IdAllocValue { - uint64 next_id = 1; -} - -message GidMappingKey { - string schema_name = 1; - CatalogItemType object_type = 2; - string object_name = 3; -} - -message GidMappingValue { - // TODO(parkmycar): Ideally this is a SystemCatalogItemId but making this change panics 0dt - // upgrades if there were new builtin objects added since the older version of Materialize - // doesn't know how to read the new SystemCatalogItemId type. - uint64 id = 1; - string fingerprint = 2; - SystemGlobalId global_id = 3; -} - -message ClusterKey { - ClusterId id = 1; -} - -message ClusterValue { - reserved 2; - string name = 1; - RoleId owner_id = 3; - repeated MzAclItem privileges = 4; - ClusterConfig config = 5; -} - -message ClusterIntrospectionSourceIndexKey { - ClusterId cluster_id = 1; - string name = 2; -} - -message ClusterIntrospectionSourceIndexValue { - // TODO(parkmycar): Ideally this is a SystemCatalogItemId but making this change panics 0dt - // upgrades if there were new builtin objects added since the older version of Materialize - // doesn't know how to read the new SystemCatalogItemId type. - uint64 index_id = 1; - uint32 oid = 2; - SystemGlobalId global_id = 3; -} - -message ClusterReplicaKey { - ReplicaId id = 1; -} - -message ClusterReplicaValue { - ClusterId cluster_id = 1; - string name = 2; - ReplicaConfig config = 3; - RoleId owner_id = 4; -} - -message DatabaseKey { - DatabaseId id = 1; -} - -message DatabaseValue { - string name = 1; - RoleId owner_id = 2; - repeated MzAclItem privileges = 3; - uint32 oid = 4; -} - -message SchemaKey { - SchemaId id = 1; -} - -message SchemaValue { - DatabaseId database_id = 1; - string name = 2; - RoleId owner_id = 3; - repeated MzAclItem privileges = 4; - uint32 oid = 5; -} - -message ItemKey { - CatalogItemId gid = 1; -} - -message ItemValue { - SchemaId schema_id = 1; - string name = 2; - CatalogItem definition = 3; - RoleId owner_id = 4; - repeated MzAclItem privileges = 5; - uint32 oid = 6; - GlobalId global_id = 7; - repeated ItemVersion extra_versions = 8; -} - -message ItemVersion { - GlobalId global_id = 1; - Version version = 2; -} - -message RoleKey { - RoleId id = 1; -} - -message RoleValue { - string name = 1; - RoleAttributes attributes = 2; - RoleMembership membership = 3; - RoleVars vars = 4; - uint32 oid = 5; -} - -message NetworkPolicyKey { - NetworkPolicyId id = 1; -} - -message NetworkPolicyValue { - string name = 1; - repeated NetworkPolicyRule rules = 2; - RoleId owner_id = 3; - repeated MzAclItem privileges = 4; - uint32 oid = 5; -} - -message ServerConfigurationKey { - string name = 1; -} - -message ServerConfigurationValue { - string value = 1; -} - -message AuditLogKey { - oneof event { - AuditLogEventV1 v1 = 1; - } -} - -message CommentKey { - oneof object { - CatalogItemId table = 1; - CatalogItemId view = 2; - CatalogItemId materialized_view = 4; - CatalogItemId source = 5; - CatalogItemId sink = 6; - CatalogItemId index = 7; - CatalogItemId func = 8; - CatalogItemId connection = 9; - CatalogItemId type = 10; - CatalogItemId secret = 11; - CatalogItemId continual_task = 17; - RoleId role = 12; - DatabaseId database = 13; - ResolvedSchema schema = 14; - ClusterId cluster = 15; - ClusterReplicaId cluster_replica = 16; - NetworkPolicyId network_policy = 18; - } - oneof sub_component { - uint64 column_pos = 3; - } -} - -message CommentValue { - string comment = 1; -} - -message SourceReferencesKey { - CatalogItemId source = 1; -} - -message SourceReferencesValue { - repeated SourceReference references = 1; - EpochMillis updated_at = 2; -} - -message SourceReference { - string name = 1; - optional string namespace = 2; - repeated string columns = 3; -} - -message StorageCollectionMetadataKey { - GlobalId id = 1; -} - -// This value is stored transparently, however, it should only ever be -// manipulated by the storage controller. -message StorageCollectionMetadataValue { - string shard = 1; -} - -// This value is stored transparently, however, it should only ever be -// manipulated by the storage controller. -message UnfinalizedShardKey { - string shard = 1; -} - -// This value is stored transparently, however, it should only ever be -// manipulated by the storage controller. -message TxnWalShardValue { - string shard = 1; -} - -// ---- Common Types -// -// Note: Normally types like this would go in some sort of `common.proto` file, but we want to keep -// our proto definitions in a single file to make snapshotting easier, hence them living here. - -message Empty { - /* purposefully empty */ -} - -// In protobuf a "None" string is the same thing as an empty string. To get the same semantics of -// an `Option` from Rust, we need to wrap a string in a message. -message StringWrapper { - string inner = 1; -} - -message Duration { - uint64 secs = 1; - uint32 nanos = 2; -} - -message EpochMillis { - uint64 millis = 1; -} - -// Opaque timestamp type that is specific to Materialize. -message Timestamp { - uint64 internal = 1; -} - -message Version { - uint64 value = 2; -} - -enum CatalogItemType { - CATALOG_ITEM_TYPE_UNKNOWN = 0; - CATALOG_ITEM_TYPE_TABLE = 1; - CATALOG_ITEM_TYPE_SOURCE = 2; - CATALOG_ITEM_TYPE_SINK = 3; - CATALOG_ITEM_TYPE_VIEW = 4; - CATALOG_ITEM_TYPE_MATERIALIZED_VIEW = 5; - CATALOG_ITEM_TYPE_INDEX = 6; - CATALOG_ITEM_TYPE_TYPE = 7; - CATALOG_ITEM_TYPE_FUNC = 8; - CATALOG_ITEM_TYPE_SECRET = 9; - CATALOG_ITEM_TYPE_CONNECTION = 10; - CATALOG_ITEM_TYPE_CONTINUAL_TASK = 11; -} - -message CatalogItem { - message V1 { - string create_sql = 1; - } - - oneof value { - V1 v1 = 1; - } -} - -message CatalogItemId { - oneof value { - uint64 system = 1; - uint64 user = 2; - uint64 transient = 3; - } -} - -/// A newtype wrapper for a `CatalogItemId` that is always in the "system" namespace. -message SystemCatalogItemId { - uint64 value = 1; -} - -message GlobalId { - oneof value { - uint64 system = 1; - uint64 user = 2; - uint64 transient = 3; - Empty explain = 4; - } -} - -/// A newtype wrapper for a `GlobalId` that is always in the "system" namespace. -message SystemGlobalId { - uint64 value = 1; -} - -message ClusterId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message DatabaseId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message ResolvedDatabaseSpecifier { - oneof spec { - Empty ambient = 1; - DatabaseId id = 2; - } -} - -message SchemaId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message SchemaSpecifier { - oneof spec { - Empty temporary = 1; - SchemaId id = 2; - } -} - -message ResolvedSchema { - ResolvedDatabaseSpecifier database = 1; - SchemaSpecifier schema = 2; -} - -message ReplicaId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message ClusterReplicaId { - ClusterId cluster_id = 1; - ReplicaId replica_id = 2; -} - -message NetworkPolicyId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message ReplicaLogging { - bool log_logging = 1; - Duration interval = 2; -} - -message OptimizerFeatureOverride { - string name = 1; - string value = 2; -} - -message ClusterScheduleRefreshOptions { - Duration rehydration_time_estimate = 1; -} - -message ClusterSchedule { - oneof value { - Empty manual = 1; - ClusterScheduleRefreshOptions refresh = 2; - } -} - -message ClusterConfig { - message ManagedCluster { - string size = 1; - uint32 replication_factor = 2; - repeated string availability_zones = 3; - ReplicaLogging logging = 4; - bool disk = 6; - repeated OptimizerFeatureOverride optimizer_feature_overrides = 7; - ClusterSchedule schedule = 8; - } - - oneof variant { - Empty unmanaged = 1; - ManagedCluster managed = 2; - } - optional string workload_class = 3; -} - -message ReplicaConfig { - message UnmanagedLocation { - repeated string storagectl_addrs = 1; - repeated string storage_addrs = 2; - repeated string computectl_addrs = 3; - repeated string compute_addrs = 4; - uint64 workers = 5; - } - - message ManagedLocation { - string size = 1; - optional string availability_zone = 2; - bool disk = 4; - bool internal = 5; - optional string billed_as = 6; - bool pending = 7; - } - - oneof location { - UnmanagedLocation unmanaged = 1; - ManagedLocation managed = 2; - } - ReplicaLogging logging = 3; -} - -message RoleId { - oneof value { - uint64 system = 1; - uint64 user = 2; - Empty public = 3; - uint64 predefined = 4; - } -} - -message RoleAttributes { - bool inherit = 1; -} - -message RoleMembership { - message Entry { - RoleId key = 1; - RoleId value = 2; - } - - repeated Entry map = 1; -} - -message RoleVars { - message SqlSet { - repeated string entries = 1; - } - - message Entry { - string key = 1; - oneof val { - string flat = 2; - SqlSet sql_set = 3; - } - } - - repeated Entry entries = 1; -} - -message NetworkPolicyRule { - string name = 1; - oneof action { - Empty allow = 2; - } - oneof direction { - Empty ingress = 3; - } - string address = 4; -} - -message AclMode { - // A bit flag representing all the privileges that can be granted to a role. - uint64 bitflags = 1; -} - -message MzAclItem { - RoleId grantee = 1; - RoleId grantor = 2; - AclMode acl_mode = 3; -} - -enum ObjectType { - OBJECT_TYPE_UNKNOWN = 0; - OBJECT_TYPE_TABLE = 1; - OBJECT_TYPE_VIEW = 2; - OBJECT_TYPE_MATERIALIZED_VIEW = 3; - OBJECT_TYPE_SOURCE = 4; - OBJECT_TYPE_SINK = 5; - OBJECT_TYPE_INDEX = 6; - OBJECT_TYPE_TYPE = 7; - OBJECT_TYPE_ROLE = 8; - OBJECT_TYPE_CLUSTER = 9; - OBJECT_TYPE_CLUSTER_REPLICA = 10; - OBJECT_TYPE_SECRET = 11; - OBJECT_TYPE_CONNECTION = 12; - OBJECT_TYPE_DATABASE = 13; - OBJECT_TYPE_SCHEMA = 14; - OBJECT_TYPE_FUNC = 15; - OBJECT_TYPE_CONTINUAL_TASK = 16; - OBJECT_TYPE_NETWORK_POLICY = 17; -} - -message DefaultPrivilegesKey { - RoleId role_id = 1; - DatabaseId database_id = 2; - SchemaId schema_id = 3; - ObjectType object_type = 4; - RoleId grantee = 5; -} - -message DefaultPrivilegesValue { - AclMode privileges = 1; -} - -message SystemPrivilegesKey { - RoleId grantee = 1; - RoleId grantor = 2; -} - -message SystemPrivilegesValue { - AclMode acl_mode = 1; -} - -message AuditLogEventV1 { - enum EventType { - EVENT_TYPE_UNKNOWN = 0; - EVENT_TYPE_CREATE = 1; - EVENT_TYPE_DROP = 2; - EVENT_TYPE_ALTER = 3; - EVENT_TYPE_GRANT = 4; - EVENT_TYPE_REVOKE = 5; - EVENT_TYPE_COMMENT = 6; - } - - enum ObjectType { - OBJECT_TYPE_UNKNOWN = 0; - OBJECT_TYPE_CLUSTER = 1; - OBJECT_TYPE_CLUSTER_REPLICA = 2; - OBJECT_TYPE_CONNECTION = 3; - OBJECT_TYPE_DATABASE = 4; - OBJECT_TYPE_FUNC = 5; - OBJECT_TYPE_INDEX = 6; - OBJECT_TYPE_MATERIALIZED_VIEW = 7; - OBJECT_TYPE_ROLE = 8; - OBJECT_TYPE_SECRET = 9; - OBJECT_TYPE_SCHEMA = 10; - OBJECT_TYPE_SINK = 11; - OBJECT_TYPE_SOURCE = 12; - OBJECT_TYPE_TABLE = 13; - OBJECT_TYPE_TYPE = 14; - OBJECT_TYPE_VIEW = 15; - OBJECT_TYPE_SYSTEM = 16; - OBJECT_TYPE_CONTINUAL_TASK = 17; - OBJECT_TYPE_NETWORK_POLICY = 18; - } - - message IdFullNameV1 { - string id = 1; - FullNameV1 name = 2; - } - - message FullNameV1 { - string database = 1; - string schema = 2; - string item = 3; - } - - message IdNameV1 { - string id = 1; - string name = 2; - } - - message RenameClusterV1 { - string id = 1; - string old_name = 2; - string new_name = 3; - } - - message RenameClusterReplicaV1 { - string cluster_id = 1; - string replica_id = 2; - string old_name = 3; - string new_name = 4; - } - - message RenameItemV1 { - string id = 1; - FullNameV1 old_name = 2; - FullNameV1 new_name = 3; - } - - message CreateClusterReplicaV1 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - string logical_size = 5; - bool disk = 6; - optional string billed_as = 7; - bool internal = 8; - } - - message CreateClusterReplicaV2 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - string logical_size = 5; - bool disk = 6; - optional string billed_as = 7; - bool internal = 8; - CreateOrDropClusterReplicaReasonV1 reason = 9; - SchedulingDecisionsWithReasonsV1 scheduling_policies = 10; - } - - message DropClusterReplicaV1 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - } - - message DropClusterReplicaV2 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - CreateOrDropClusterReplicaReasonV1 reason = 5; - SchedulingDecisionsWithReasonsV1 scheduling_policies = 6; - } - - message CreateOrDropClusterReplicaReasonV1 { - oneof reason { - Empty Manual = 1; - Empty Schedule = 2; - Empty System = 3; - } - } - - message SchedulingDecisionsWithReasonsV1 { - RefreshDecisionWithReasonV1 on_refresh = 1; - } - - message RefreshDecisionWithReasonV1 { - oneof decision { - Empty On = 1; - Empty Off = 2; - } - repeated string objects_needing_refresh = 3; - string rehydration_time_estimate = 4; - } - - message CreateSourceSinkV1 { - string id = 1; - FullNameV1 name = 2; - StringWrapper size = 3; - } - - message CreateSourceSinkV2 { - string id = 1; - FullNameV1 name = 2; - StringWrapper size = 3; - string external_type = 4; - } - - message CreateSourceSinkV3 { - string id = 1; - FullNameV1 name = 2; - string external_type = 3; - } - - message CreateSourceSinkV4 { - string id = 1; - StringWrapper cluster_id = 2; - FullNameV1 name = 3; - string external_type = 4; - } - - message CreateIndexV1 { - string id = 1; - string cluster_id = 2; - FullNameV1 name = 3; - } - - message CreateMaterializedViewV1 { - string id = 1; - string cluster_id = 2; - FullNameV1 name = 3; - } - - message AlterSourceSinkV1 { - string id = 1; - FullNameV1 name = 2; - StringWrapper old_size = 3; - StringWrapper new_size = 4; - } - - message AlterSetClusterV1 { - string id = 1; - FullNameV1 name = 2; - StringWrapper old_cluster = 3; - StringWrapper new_cluster = 4; - } - - message GrantRoleV1 { - string role_id = 1; - string member_id = 2; - string grantor_id = 3; - } - - message GrantRoleV2 { - string role_id = 1; - string member_id = 2; - string grantor_id = 3; - string executed_by = 4; - } - - message RevokeRoleV1 { - string role_id = 1; - string member_id = 2; - } - - message RevokeRoleV2 { - string role_id = 1; - string member_id = 2; - string grantor_id = 3; - string executed_by = 4; - } - - message UpdatePrivilegeV1 { - string object_id = 1; - string grantee_id = 2; - string grantor_id = 3; - string privileges = 4; - } - - message AlterDefaultPrivilegeV1 { - string role_id = 1; - StringWrapper database_id = 2; - StringWrapper schema_id = 3; - string grantee_id = 4; - string privileges = 5; - } - - message UpdateOwnerV1 { - string object_id = 1; - string old_owner_id = 2; - string new_owner_id = 3; - } - - message SchemaV1 { - string id = 1; - string name = 2; - string database_name = 3; - } - - message SchemaV2 { - string id = 1; - string name = 2; - StringWrapper database_name = 3; - } - - message RenameSchemaV1 { - string id = 1; - optional string database_name = 2; - string old_name = 3; - string new_name = 4; - } - - message UpdateItemV1 { - string id = 1; - FullNameV1 name = 2; - } - - message AlterRetainHistoryV1 { - string id = 1; - optional string old_history = 2; - optional string new_history = 3; - } - - message ToNewIdV1 { - string id = 1; - string new_id = 2; - } - - message FromPreviousIdV1 { - string id = 1; - string previous_id = 2; - } - - message SetV1 { - string name = 1; - optional string value = 2; - } - - message RotateKeysV1 { - string id = 1; - string name = 2; - } - - uint64 id = 1; - EventType event_type = 2; - ObjectType object_type = 3; - StringWrapper user = 4; - EpochMillis occurred_at = 5; - - // next-id: 40 - oneof details { - CreateClusterReplicaV1 create_cluster_replica_v1 = 6; - CreateClusterReplicaV2 create_cluster_replica_v2 = 33; - DropClusterReplicaV1 drop_cluster_replica_v1 = 7; - DropClusterReplicaV2 drop_cluster_replica_v2 = 34; - CreateSourceSinkV1 create_source_sink_v1 = 8; - CreateSourceSinkV2 create_source_sink_v2 = 9; - AlterSourceSinkV1 alter_source_sink_v1 = 10; - AlterSetClusterV1 alter_set_cluster_v1 = 25; - GrantRoleV1 grant_role_v1 = 11; - GrantRoleV2 grant_role_v2 = 12; - RevokeRoleV1 revoke_role_v1 = 13; - RevokeRoleV2 revoke_role_v2 = 14; - UpdatePrivilegeV1 update_privilege_v1 = 22; - AlterDefaultPrivilegeV1 alter_default_privilege_v1 = 23; - UpdateOwnerV1 update_owner_v1 = 24; - IdFullNameV1 id_full_name_v1 = 15; - RenameClusterV1 rename_cluster_v1 = 20; - RenameClusterReplicaV1 rename_cluster_replica_v1 = 21; - RenameItemV1 rename_item_v1 = 16; - IdNameV1 id_name_v1 = 17; - SchemaV1 schema_v1 = 18; - SchemaV2 schema_v2 = 19; - RenameSchemaV1 rename_schema_v1 = 27; - UpdateItemV1 update_item_v1 = 26; - CreateSourceSinkV3 create_source_sink_v3 = 29; - AlterRetainHistoryV1 alter_retain_history_v1 = 30; - ToNewIdV1 to_new_id_v1 = 31; - FromPreviousIdV1 from_previous_id_v1 = 32; - SetV1 set_v1 = 35; - Empty reset_all_v1 = 36; - RotateKeysV1 rotate_keys_v1 = 37; - CreateSourceSinkV4 create_source_sink_v4 = 38; - CreateIndexV1 create_index_v1 = 39; - CreateMaterializedViewV1 create_materialized_view_v1 = 40; - } -} - -// Wrapper of key-values used by the persist implementation to serialize the catalog. -message StateUpdateKind { - reserved "Epoch"; - - message AuditLog { - AuditLogKey key = 1; - } - - message Cluster { - ClusterKey key = 1; - ClusterValue value = 2; - } - - message ClusterReplica { - ClusterReplicaKey key = 1; - ClusterReplicaValue value = 2; - } - - message Comment { - CommentKey key = 1; - CommentValue value = 2; - } - - message Config { - ConfigKey key = 1; - ConfigValue value = 2; - } - - message Database { - DatabaseKey key = 1; - DatabaseValue value = 2; - } - - message DefaultPrivileges { - DefaultPrivilegesKey key = 1; - DefaultPrivilegesValue value = 2; - } - - message FenceToken { - uint64 deploy_generation = 1; - int64 epoch = 2; - } - - message IdAlloc { - IdAllocKey key = 1; - IdAllocValue value = 2; - } - - message ClusterIntrospectionSourceIndex { - ClusterIntrospectionSourceIndexKey key = 1; - ClusterIntrospectionSourceIndexValue value = 2; - } - - message Item { - ItemKey key = 1; - ItemValue value = 2; - } - - message Role { - RoleKey key = 1; - RoleValue value = 2; - } - - message NetworkPolicy { - NetworkPolicyKey key = 1; - NetworkPolicyValue value = 2; - } - - message Schema { - SchemaKey key = 1; - SchemaValue value = 2; - } - - message Setting { - SettingKey key = 1; - SettingValue value = 2; - } - - message ServerConfiguration { - ServerConfigurationKey key = 1; - ServerConfigurationValue value = 2; - } - - message SourceReferences { - SourceReferencesKey key = 1; - SourceReferencesValue value = 2; - } - - message GidMapping { - GidMappingKey key = 1; - GidMappingValue value = 2; - } - - message SystemPrivileges { - SystemPrivilegesKey key = 1; - SystemPrivilegesValue value = 2; - } - - message StorageCollectionMetadata { - StorageCollectionMetadataKey key = 1; - StorageCollectionMetadataValue value = 2; - } - - message UnfinalizedShard { - UnfinalizedShardKey key = 1; - } - - message TxnWalShard { - TxnWalShardValue value = 1; - } - - reserved 15; - reserved "storage_usage"; - reserved 19; - reserved "timestamp"; - reserved 22; - reserved "persist_txn_shard"; - reserved 8; - reserved "epoch"; - - oneof kind { - AuditLog audit_log = 1; - Cluster cluster = 2; - ClusterReplica cluster_replica = 3; - Comment comment = 4; - Config config = 5; - Database database = 6; - DefaultPrivileges default_privileges = 7; - IdAlloc id_alloc = 9; - ClusterIntrospectionSourceIndex cluster_introspection_source_index = 10; - Item item = 11; - Role role = 12; - Schema schema = 13; - Setting setting = 14; - ServerConfiguration server_configuration = 16; - GidMapping gid_mapping = 17; - SystemPrivileges system_privileges = 18; - StorageCollectionMetadata storage_collection_metadata = 20; - UnfinalizedShard unfinalized_shard = 21; - TxnWalShard txn_wal_shard = 23; - SourceReferences source_references = 24; - FenceToken fence_token = 25; - NetworkPolicy network_policy = 26; - } -} diff --git a/src/catalog-protos/protos/objects_v70.proto b/src/catalog-protos/protos/objects_v70.proto deleted file mode 100644 index da5cdba889a6b..0000000000000 --- a/src/catalog-protos/protos/objects_v70.proto +++ /dev/null @@ -1,1061 +0,0 @@ -// Copyright Materialize, Inc. and contributors. All rights reserved. -// -// Use of this software is governed by the Business Source License -// included in the LICENSE file. -// -// As of the Change Date specified in that file, in accordance with -// the Business Source License, use of this software will be governed -// by the Apache License, Version 2.0. - -// This protobuf file defines the types we store in the Stash. -// -// Before and after modifying this file, make sure you have a snapshot of the before version, -// e.g. a copy of this file named 'objects_v{CATALOG_VERSION}.proto', and a snapshot of the file -// after your modifications, e.g. 'objects_v{CATALOG_VERSION + 1}.proto'. Then you can write a -// migration using these two files, and no matter how the types change in the future, we'll always -// have these snapshots to facilitate the migration. - -// buf breaking: ignore (does currently not require backward-compatibility) - -syntax = "proto3"; - -package objects_v70; - -message ConfigKey { - string key = 1; -} - -message ConfigValue { - uint64 value = 1; -} - -message SettingKey { - string name = 1; -} - -message SettingValue { - string value = 1; -} - -message IdAllocKey { - string name = 1; -} - -message IdAllocValue { - uint64 next_id = 1; -} - -message GidMappingKey { - string schema_name = 1; - CatalogItemType object_type = 2; - string object_name = 3; -} - -message GidMappingValue { - // TODO(parkmycar): Ideally this is a SystemCatalogItemId but making this change panics 0dt - // upgrades if there were new builtin objects added since the older version of Materialize - // doesn't know how to read the new SystemCatalogItemId type. - uint64 id = 1; - string fingerprint = 2; - SystemGlobalId global_id = 3; -} - -message ClusterKey { - ClusterId id = 1; -} - -message ClusterValue { - reserved 2; - string name = 1; - RoleId owner_id = 3; - repeated MzAclItem privileges = 4; - ClusterConfig config = 5; -} - -message ClusterIntrospectionSourceIndexKey { - ClusterId cluster_id = 1; - string name = 2; -} - -message ClusterIntrospectionSourceIndexValue { - // TODO(parkmycar): Ideally this is a SystemCatalogItemId but making this change panics 0dt - // upgrades if there were new builtin objects added since the older version of Materialize - // doesn't know how to read the new SystemCatalogItemId type. - uint64 index_id = 1; - uint32 oid = 2; - SystemGlobalId global_id = 3; -} - -message ClusterReplicaKey { - ReplicaId id = 1; -} - -message ClusterReplicaValue { - ClusterId cluster_id = 1; - string name = 2; - ReplicaConfig config = 3; - RoleId owner_id = 4; -} - -message DatabaseKey { - DatabaseId id = 1; -} - -message DatabaseValue { - string name = 1; - RoleId owner_id = 2; - repeated MzAclItem privileges = 3; - uint32 oid = 4; -} - -message SchemaKey { - SchemaId id = 1; -} - -message SchemaValue { - DatabaseId database_id = 1; - string name = 2; - RoleId owner_id = 3; - repeated MzAclItem privileges = 4; - uint32 oid = 5; -} - -message ItemKey { - CatalogItemId gid = 1; -} - -message ItemValue { - SchemaId schema_id = 1; - string name = 2; - CatalogItem definition = 3; - RoleId owner_id = 4; - repeated MzAclItem privileges = 5; - uint32 oid = 6; - GlobalId global_id = 7; - repeated ItemVersion extra_versions = 8; -} - -message ItemVersion { - GlobalId global_id = 1; - Version version = 2; -} - -message RoleKey { - RoleId id = 1; -} - -message RoleValue { - string name = 1; - RoleAttributes attributes = 2; - RoleMembership membership = 3; - RoleVars vars = 4; - uint32 oid = 5; -} - -message NetworkPolicyKey { - NetworkPolicyId id = 1; -} - -message NetworkPolicyValue { - string name = 1; - repeated NetworkPolicyRule rules = 2; - RoleId owner_id = 3; - repeated MzAclItem privileges = 4; - uint32 oid = 5; -} - -message ServerConfigurationKey { - string name = 1; -} - -message ServerConfigurationValue { - string value = 1; -} - -message AuditLogKey { - oneof event { - AuditLogEventV1 v1 = 1; - } -} - -message CommentKey { - oneof object { - CatalogItemId table = 1; - CatalogItemId view = 2; - CatalogItemId materialized_view = 4; - CatalogItemId source = 5; - CatalogItemId sink = 6; - CatalogItemId index = 7; - CatalogItemId func = 8; - CatalogItemId connection = 9; - CatalogItemId type = 10; - CatalogItemId secret = 11; - CatalogItemId continual_task = 17; - RoleId role = 12; - DatabaseId database = 13; - ResolvedSchema schema = 14; - ClusterId cluster = 15; - ClusterReplicaId cluster_replica = 16; - NetworkPolicyId network_policy = 18; - } - oneof sub_component { - uint64 column_pos = 3; - } -} - -message CommentValue { - string comment = 1; -} - -message SourceReferencesKey { - CatalogItemId source = 1; -} - -message SourceReferencesValue { - repeated SourceReference references = 1; - EpochMillis updated_at = 2; -} - -message SourceReference { - string name = 1; - optional string namespace = 2; - repeated string columns = 3; -} - -message StorageCollectionMetadataKey { - GlobalId id = 1; -} - -// This value is stored transparently, however, it should only ever be -// manipulated by the storage controller. -message StorageCollectionMetadataValue { - string shard = 1; -} - -// This value is stored transparently, however, it should only ever be -// manipulated by the storage controller. -message UnfinalizedShardKey { - string shard = 1; -} - -// This value is stored transparently, however, it should only ever be -// manipulated by the storage controller. -message TxnWalShardValue { - string shard = 1; -} - -// ---- Common Types -// -// Note: Normally types like this would go in some sort of `common.proto` file, but we want to keep -// our proto definitions in a single file to make snapshotting easier, hence them living here. - -message Empty { - /* purposefully empty */ -} - -// In protobuf a "None" string is the same thing as an empty string. To get the same semantics of -// an `Option` from Rust, we need to wrap a string in a message. -message StringWrapper { - string inner = 1; -} - -message Duration { - uint64 secs = 1; - uint32 nanos = 2; -} - -message EpochMillis { - uint64 millis = 1; -} - -// Opaque timestamp type that is specific to Materialize. -message Timestamp { - uint64 internal = 1; -} - -message Version { - uint64 value = 2; -} - -enum CatalogItemType { - CATALOG_ITEM_TYPE_UNKNOWN = 0; - CATALOG_ITEM_TYPE_TABLE = 1; - CATALOG_ITEM_TYPE_SOURCE = 2; - CATALOG_ITEM_TYPE_SINK = 3; - CATALOG_ITEM_TYPE_VIEW = 4; - CATALOG_ITEM_TYPE_MATERIALIZED_VIEW = 5; - CATALOG_ITEM_TYPE_INDEX = 6; - CATALOG_ITEM_TYPE_TYPE = 7; - CATALOG_ITEM_TYPE_FUNC = 8; - CATALOG_ITEM_TYPE_SECRET = 9; - CATALOG_ITEM_TYPE_CONNECTION = 10; - CATALOG_ITEM_TYPE_CONTINUAL_TASK = 11; -} - -message CatalogItem { - message V1 { - string create_sql = 1; - } - - oneof value { - V1 v1 = 1; - } -} - -message CatalogItemId { - oneof value { - uint64 system = 1; - uint64 user = 2; - uint64 transient = 3; - } -} - -/// A newtype wrapper for a `CatalogItemId` that is always in the "system" namespace. -message SystemCatalogItemId { - uint64 value = 1; -} - -message GlobalId { - oneof value { - uint64 system = 1; - uint64 user = 2; - uint64 transient = 3; - Empty explain = 4; - } -} - -/// A newtype wrapper for a `GlobalId` that is always in the "system" namespace. -message SystemGlobalId { - uint64 value = 1; -} - -message ClusterId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message DatabaseId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message ResolvedDatabaseSpecifier { - oneof spec { - Empty ambient = 1; - DatabaseId id = 2; - } -} - -message SchemaId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message SchemaSpecifier { - oneof spec { - Empty temporary = 1; - SchemaId id = 2; - } -} - -message ResolvedSchema { - ResolvedDatabaseSpecifier database = 1; - SchemaSpecifier schema = 2; -} - -message ReplicaId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message ClusterReplicaId { - ClusterId cluster_id = 1; - ReplicaId replica_id = 2; -} - -message NetworkPolicyId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message ReplicaLogging { - bool log_logging = 1; - Duration interval = 2; -} - -message OptimizerFeatureOverride { - string name = 1; - string value = 2; -} - -message ClusterScheduleRefreshOptions { - Duration rehydration_time_estimate = 1; -} - -message ClusterSchedule { - oneof value { - Empty manual = 1; - ClusterScheduleRefreshOptions refresh = 2; - } -} - -message ClusterConfig { - message ManagedCluster { - string size = 1; - uint32 replication_factor = 2; - repeated string availability_zones = 3; - ReplicaLogging logging = 4; - bool disk = 6; - repeated OptimizerFeatureOverride optimizer_feature_overrides = 7; - ClusterSchedule schedule = 8; - } - - oneof variant { - Empty unmanaged = 1; - ManagedCluster managed = 2; - } - optional string workload_class = 3; -} - -message ReplicaConfig { - message UnmanagedLocation { - repeated string storagectl_addrs = 1; - repeated string storage_addrs = 2; - repeated string computectl_addrs = 3; - repeated string compute_addrs = 4; - uint64 workers = 5; - } - - message ManagedLocation { - string size = 1; - optional string availability_zone = 2; - bool disk = 4; - bool internal = 5; - optional string billed_as = 6; - bool pending = 7; - } - - oneof location { - UnmanagedLocation unmanaged = 1; - ManagedLocation managed = 2; - } - ReplicaLogging logging = 3; -} - -message RoleId { - oneof value { - uint64 system = 1; - uint64 user = 2; - Empty public = 3; - uint64 predefined = 4; - } -} - -message RoleAttributes { - bool inherit = 1; -} - -message RoleMembership { - message Entry { - RoleId key = 1; - RoleId value = 2; - } - - repeated Entry map = 1; -} - -message RoleVars { - message SqlSet { - repeated string entries = 1; - } - - message Entry { - string key = 1; - oneof val { - string flat = 2; - SqlSet sql_set = 3; - } - } - - repeated Entry entries = 1; -} - -message NetworkPolicyRule { - string name = 1; - oneof action { - Empty allow = 2; - } - oneof direction { - Empty ingress = 3; - } - string address = 4; -} - -message AclMode { - // A bit flag representing all the privileges that can be granted to a role. - uint64 bitflags = 1; -} - -message MzAclItem { - RoleId grantee = 1; - RoleId grantor = 2; - AclMode acl_mode = 3; -} - -enum ObjectType { - OBJECT_TYPE_UNKNOWN = 0; - OBJECT_TYPE_TABLE = 1; - OBJECT_TYPE_VIEW = 2; - OBJECT_TYPE_MATERIALIZED_VIEW = 3; - OBJECT_TYPE_SOURCE = 4; - OBJECT_TYPE_SINK = 5; - OBJECT_TYPE_INDEX = 6; - OBJECT_TYPE_TYPE = 7; - OBJECT_TYPE_ROLE = 8; - OBJECT_TYPE_CLUSTER = 9; - OBJECT_TYPE_CLUSTER_REPLICA = 10; - OBJECT_TYPE_SECRET = 11; - OBJECT_TYPE_CONNECTION = 12; - OBJECT_TYPE_DATABASE = 13; - OBJECT_TYPE_SCHEMA = 14; - OBJECT_TYPE_FUNC = 15; - OBJECT_TYPE_CONTINUAL_TASK = 16; - OBJECT_TYPE_NETWORK_POLICY = 17; -} - -message DefaultPrivilegesKey { - RoleId role_id = 1; - DatabaseId database_id = 2; - SchemaId schema_id = 3; - ObjectType object_type = 4; - RoleId grantee = 5; -} - -message DefaultPrivilegesValue { - AclMode privileges = 1; -} - -message SystemPrivilegesKey { - RoleId grantee = 1; - RoleId grantor = 2; -} - -message SystemPrivilegesValue { - AclMode acl_mode = 1; -} - -message AuditLogEventV1 { - enum EventType { - EVENT_TYPE_UNKNOWN = 0; - EVENT_TYPE_CREATE = 1; - EVENT_TYPE_DROP = 2; - EVENT_TYPE_ALTER = 3; - EVENT_TYPE_GRANT = 4; - EVENT_TYPE_REVOKE = 5; - EVENT_TYPE_COMMENT = 6; - } - - enum ObjectType { - OBJECT_TYPE_UNKNOWN = 0; - OBJECT_TYPE_CLUSTER = 1; - OBJECT_TYPE_CLUSTER_REPLICA = 2; - OBJECT_TYPE_CONNECTION = 3; - OBJECT_TYPE_DATABASE = 4; - OBJECT_TYPE_FUNC = 5; - OBJECT_TYPE_INDEX = 6; - OBJECT_TYPE_MATERIALIZED_VIEW = 7; - OBJECT_TYPE_ROLE = 8; - OBJECT_TYPE_SECRET = 9; - OBJECT_TYPE_SCHEMA = 10; - OBJECT_TYPE_SINK = 11; - OBJECT_TYPE_SOURCE = 12; - OBJECT_TYPE_TABLE = 13; - OBJECT_TYPE_TYPE = 14; - OBJECT_TYPE_VIEW = 15; - OBJECT_TYPE_SYSTEM = 16; - OBJECT_TYPE_CONTINUAL_TASK = 17; - OBJECT_TYPE_NETWORK_POLICY = 18; - } - - message IdFullNameV1 { - string id = 1; - FullNameV1 name = 2; - } - - message FullNameV1 { - string database = 1; - string schema = 2; - string item = 3; - } - - message IdNameV1 { - string id = 1; - string name = 2; - } - - message RenameClusterV1 { - string id = 1; - string old_name = 2; - string new_name = 3; - } - - message RenameClusterReplicaV1 { - string cluster_id = 1; - string replica_id = 2; - string old_name = 3; - string new_name = 4; - } - - message RenameItemV1 { - string id = 1; - FullNameV1 old_name = 2; - FullNameV1 new_name = 3; - } - - message CreateClusterReplicaV1 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - string logical_size = 5; - bool disk = 6; - optional string billed_as = 7; - bool internal = 8; - } - - message CreateClusterReplicaV2 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - string logical_size = 5; - bool disk = 6; - optional string billed_as = 7; - bool internal = 8; - CreateOrDropClusterReplicaReasonV1 reason = 9; - SchedulingDecisionsWithReasonsV1 scheduling_policies = 10; - } - - message CreateClusterReplicaV3 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - string logical_size = 5; - bool disk = 6; - optional string billed_as = 7; - bool internal = 8; - CreateOrDropClusterReplicaReasonV1 reason = 9; - SchedulingDecisionsWithReasonsV2 scheduling_policies = 10; - } - - message DropClusterReplicaV1 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - } - - message DropClusterReplicaV2 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - CreateOrDropClusterReplicaReasonV1 reason = 5; - SchedulingDecisionsWithReasonsV1 scheduling_policies = 6; - } - - message DropClusterReplicaV3 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - CreateOrDropClusterReplicaReasonV1 reason = 5; - SchedulingDecisionsWithReasonsV2 scheduling_policies = 6; - } - - message CreateOrDropClusterReplicaReasonV1 { - oneof reason { - Empty Manual = 1; - Empty Schedule = 2; - Empty System = 3; - } - } - - message SchedulingDecisionsWithReasonsV1 { - RefreshDecisionWithReasonV1 on_refresh = 1; - } - - message SchedulingDecisionsWithReasonsV2 { - RefreshDecisionWithReasonV2 on_refresh = 1; - } - - message RefreshDecisionWithReasonV1 { - oneof decision { - Empty On = 1; - Empty Off = 2; - } - repeated string objects_needing_refresh = 3; - string rehydration_time_estimate = 4; - } - - message RefreshDecisionWithReasonV2 { - oneof decision { - Empty On = 1; - Empty Off = 2; - } - repeated string objects_needing_refresh = 3; - repeated string objects_needing_compaction = 5; - string rehydration_time_estimate = 4; - } - - message CreateSourceSinkV1 { - string id = 1; - FullNameV1 name = 2; - StringWrapper size = 3; - } - - message CreateSourceSinkV2 { - string id = 1; - FullNameV1 name = 2; - StringWrapper size = 3; - string external_type = 4; - } - - message CreateSourceSinkV3 { - string id = 1; - FullNameV1 name = 2; - string external_type = 3; - } - - message CreateSourceSinkV4 { - string id = 1; - StringWrapper cluster_id = 2; - FullNameV1 name = 3; - string external_type = 4; - } - - message CreateIndexV1 { - string id = 1; - string cluster_id = 2; - FullNameV1 name = 3; - } - - message CreateMaterializedViewV1 { - string id = 1; - string cluster_id = 2; - FullNameV1 name = 3; - } - - message AlterSourceSinkV1 { - string id = 1; - FullNameV1 name = 2; - StringWrapper old_size = 3; - StringWrapper new_size = 4; - } - - message AlterSetClusterV1 { - string id = 1; - FullNameV1 name = 2; - StringWrapper old_cluster = 3; - StringWrapper new_cluster = 4; - } - - message GrantRoleV1 { - string role_id = 1; - string member_id = 2; - string grantor_id = 3; - } - - message GrantRoleV2 { - string role_id = 1; - string member_id = 2; - string grantor_id = 3; - string executed_by = 4; - } - - message RevokeRoleV1 { - string role_id = 1; - string member_id = 2; - } - - message RevokeRoleV2 { - string role_id = 1; - string member_id = 2; - string grantor_id = 3; - string executed_by = 4; - } - - message UpdatePrivilegeV1 { - string object_id = 1; - string grantee_id = 2; - string grantor_id = 3; - string privileges = 4; - } - - message AlterDefaultPrivilegeV1 { - string role_id = 1; - StringWrapper database_id = 2; - StringWrapper schema_id = 3; - string grantee_id = 4; - string privileges = 5; - } - - message UpdateOwnerV1 { - string object_id = 1; - string old_owner_id = 2; - string new_owner_id = 3; - } - - message SchemaV1 { - string id = 1; - string name = 2; - string database_name = 3; - } - - message SchemaV2 { - string id = 1; - string name = 2; - StringWrapper database_name = 3; - } - - message RenameSchemaV1 { - string id = 1; - optional string database_name = 2; - string old_name = 3; - string new_name = 4; - } - - message UpdateItemV1 { - string id = 1; - FullNameV1 name = 2; - } - - message AlterRetainHistoryV1 { - string id = 1; - optional string old_history = 2; - optional string new_history = 3; - } - - message ToNewIdV1 { - string id = 1; - string new_id = 2; - } - - message FromPreviousIdV1 { - string id = 1; - string previous_id = 2; - } - - message SetV1 { - string name = 1; - optional string value = 2; - } - - message RotateKeysV1 { - string id = 1; - string name = 2; - } - - uint64 id = 1; - EventType event_type = 2; - ObjectType object_type = 3; - StringWrapper user = 4; - EpochMillis occurred_at = 5; - - // next-id: 40 - oneof details { - CreateClusterReplicaV1 create_cluster_replica_v1 = 6; - CreateClusterReplicaV2 create_cluster_replica_v2 = 33; - CreateClusterReplicaV3 create_cluster_replica_v3 = 41; - DropClusterReplicaV1 drop_cluster_replica_v1 = 7; - DropClusterReplicaV2 drop_cluster_replica_v2 = 34; - DropClusterReplicaV3 drop_cluster_replica_v3 = 42; - CreateSourceSinkV1 create_source_sink_v1 = 8; - CreateSourceSinkV2 create_source_sink_v2 = 9; - AlterSourceSinkV1 alter_source_sink_v1 = 10; - AlterSetClusterV1 alter_set_cluster_v1 = 25; - GrantRoleV1 grant_role_v1 = 11; - GrantRoleV2 grant_role_v2 = 12; - RevokeRoleV1 revoke_role_v1 = 13; - RevokeRoleV2 revoke_role_v2 = 14; - UpdatePrivilegeV1 update_privilege_v1 = 22; - AlterDefaultPrivilegeV1 alter_default_privilege_v1 = 23; - UpdateOwnerV1 update_owner_v1 = 24; - IdFullNameV1 id_full_name_v1 = 15; - RenameClusterV1 rename_cluster_v1 = 20; - RenameClusterReplicaV1 rename_cluster_replica_v1 = 21; - RenameItemV1 rename_item_v1 = 16; - IdNameV1 id_name_v1 = 17; - SchemaV1 schema_v1 = 18; - SchemaV2 schema_v2 = 19; - RenameSchemaV1 rename_schema_v1 = 27; - UpdateItemV1 update_item_v1 = 26; - CreateSourceSinkV3 create_source_sink_v3 = 29; - AlterRetainHistoryV1 alter_retain_history_v1 = 30; - ToNewIdV1 to_new_id_v1 = 31; - FromPreviousIdV1 from_previous_id_v1 = 32; - SetV1 set_v1 = 35; - Empty reset_all_v1 = 36; - RotateKeysV1 rotate_keys_v1 = 37; - CreateSourceSinkV4 create_source_sink_v4 = 38; - CreateIndexV1 create_index_v1 = 39; - CreateMaterializedViewV1 create_materialized_view_v1 = 40; - } -} - -// Wrapper of key-values used by the persist implementation to serialize the catalog. -message StateUpdateKind { - reserved "Epoch"; - - message AuditLog { - AuditLogKey key = 1; - } - - message Cluster { - ClusterKey key = 1; - ClusterValue value = 2; - } - - message ClusterReplica { - ClusterReplicaKey key = 1; - ClusterReplicaValue value = 2; - } - - message Comment { - CommentKey key = 1; - CommentValue value = 2; - } - - message Config { - ConfigKey key = 1; - ConfigValue value = 2; - } - - message Database { - DatabaseKey key = 1; - DatabaseValue value = 2; - } - - message DefaultPrivileges { - DefaultPrivilegesKey key = 1; - DefaultPrivilegesValue value = 2; - } - - message FenceToken { - uint64 deploy_generation = 1; - int64 epoch = 2; - } - - message IdAlloc { - IdAllocKey key = 1; - IdAllocValue value = 2; - } - - message ClusterIntrospectionSourceIndex { - ClusterIntrospectionSourceIndexKey key = 1; - ClusterIntrospectionSourceIndexValue value = 2; - } - - message Item { - ItemKey key = 1; - ItemValue value = 2; - } - - message Role { - RoleKey key = 1; - RoleValue value = 2; - } - - message NetworkPolicy { - NetworkPolicyKey key = 1; - NetworkPolicyValue value = 2; - } - - message Schema { - SchemaKey key = 1; - SchemaValue value = 2; - } - - message Setting { - SettingKey key = 1; - SettingValue value = 2; - } - - message ServerConfiguration { - ServerConfigurationKey key = 1; - ServerConfigurationValue value = 2; - } - - message SourceReferences { - SourceReferencesKey key = 1; - SourceReferencesValue value = 2; - } - - message GidMapping { - GidMappingKey key = 1; - GidMappingValue value = 2; - } - - message SystemPrivileges { - SystemPrivilegesKey key = 1; - SystemPrivilegesValue value = 2; - } - - message StorageCollectionMetadata { - StorageCollectionMetadataKey key = 1; - StorageCollectionMetadataValue value = 2; - } - - message UnfinalizedShard { - UnfinalizedShardKey key = 1; - } - - message TxnWalShard { - TxnWalShardValue value = 1; - } - - reserved 15; - reserved "storage_usage"; - reserved 19; - reserved "timestamp"; - reserved 22; - reserved "persist_txn_shard"; - reserved 8; - reserved "epoch"; - - oneof kind { - AuditLog audit_log = 1; - Cluster cluster = 2; - ClusterReplica cluster_replica = 3; - Comment comment = 4; - Config config = 5; - Database database = 6; - DefaultPrivileges default_privileges = 7; - IdAlloc id_alloc = 9; - ClusterIntrospectionSourceIndex cluster_introspection_source_index = 10; - Item item = 11; - Role role = 12; - Schema schema = 13; - Setting setting = 14; - ServerConfiguration server_configuration = 16; - GidMapping gid_mapping = 17; - SystemPrivileges system_privileges = 18; - StorageCollectionMetadata storage_collection_metadata = 20; - UnfinalizedShard unfinalized_shard = 21; - TxnWalShard txn_wal_shard = 23; - SourceReferences source_references = 24; - FenceToken fence_token = 25; - NetworkPolicy network_policy = 26; - } -} diff --git a/src/catalog-protos/protos/objects_v71.proto b/src/catalog-protos/protos/objects_v71.proto deleted file mode 100644 index 470afe756f948..0000000000000 --- a/src/catalog-protos/protos/objects_v71.proto +++ /dev/null @@ -1,1061 +0,0 @@ -// Copyright Materialize, Inc. and contributors. All rights reserved. -// -// Use of this software is governed by the Business Source License -// included in the LICENSE file. -// -// As of the Change Date specified in that file, in accordance with -// the Business Source License, use of this software will be governed -// by the Apache License, Version 2.0. - -// This protobuf file defines the types we store in the Stash. -// -// Before and after modifying this file, make sure you have a snapshot of the before version, -// e.g. a copy of this file named 'objects_v{CATALOG_VERSION}.proto', and a snapshot of the file -// after your modifications, e.g. 'objects_v{CATALOG_VERSION + 1}.proto'. Then you can write a -// migration using these two files, and no matter how the types change in the future, we'll always -// have these snapshots to facilitate the migration. - -// buf breaking: ignore (does currently not require backward-compatibility) - -syntax = "proto3"; - -package objects_v71; - -message ConfigKey { - string key = 1; -} - -message ConfigValue { - uint64 value = 1; -} - -message SettingKey { - string name = 1; -} - -message SettingValue { - string value = 1; -} - -message IdAllocKey { - string name = 1; -} - -message IdAllocValue { - uint64 next_id = 1; -} - -message GidMappingKey { - string schema_name = 1; - CatalogItemType object_type = 2; - string object_name = 3; -} - -message GidMappingValue { - // TODO(parkmycar): Ideally this is a SystemCatalogItemId but making this change panics 0dt - // upgrades if there were new builtin objects added since the older version of Materialize - // doesn't know how to read the new SystemCatalogItemId type. - uint64 id = 1; - string fingerprint = 2; - SystemGlobalId global_id = 3; -} - -message ClusterKey { - ClusterId id = 1; -} - -message ClusterValue { - reserved 2; - string name = 1; - RoleId owner_id = 3; - repeated MzAclItem privileges = 4; - ClusterConfig config = 5; -} - -message ClusterIntrospectionSourceIndexKey { - ClusterId cluster_id = 1; - string name = 2; -} - -message ClusterIntrospectionSourceIndexValue { - // TODO(parkmycar): Ideally this is a SystemCatalogItemId but making this change panics 0dt - // upgrades if there were new builtin objects added since the older version of Materialize - // doesn't know how to read the new SystemCatalogItemId type. - uint64 index_id = 1; - uint32 oid = 2; - SystemGlobalId global_id = 3; -} - -message ClusterReplicaKey { - ReplicaId id = 1; -} - -message ClusterReplicaValue { - ClusterId cluster_id = 1; - string name = 2; - ReplicaConfig config = 3; - RoleId owner_id = 4; -} - -message DatabaseKey { - DatabaseId id = 1; -} - -message DatabaseValue { - string name = 1; - RoleId owner_id = 2; - repeated MzAclItem privileges = 3; - uint32 oid = 4; -} - -message SchemaKey { - SchemaId id = 1; -} - -message SchemaValue { - DatabaseId database_id = 1; - string name = 2; - RoleId owner_id = 3; - repeated MzAclItem privileges = 4; - uint32 oid = 5; -} - -message ItemKey { - CatalogItemId gid = 1; -} - -message ItemValue { - SchemaId schema_id = 1; - string name = 2; - CatalogItem definition = 3; - RoleId owner_id = 4; - repeated MzAclItem privileges = 5; - uint32 oid = 6; - GlobalId global_id = 7; - repeated ItemVersion extra_versions = 8; -} - -message ItemVersion { - GlobalId global_id = 1; - Version version = 2; -} - -message RoleKey { - RoleId id = 1; -} - -message RoleValue { - string name = 1; - RoleAttributes attributes = 2; - RoleMembership membership = 3; - RoleVars vars = 4; - uint32 oid = 5; -} - -message NetworkPolicyKey { - NetworkPolicyId id = 1; -} - -message NetworkPolicyValue { - string name = 1; - repeated NetworkPolicyRule rules = 2; - RoleId owner_id = 3; - repeated MzAclItem privileges = 4; - uint32 oid = 5; -} - -message ServerConfigurationKey { - string name = 1; -} - -message ServerConfigurationValue { - string value = 1; -} - -message AuditLogKey { - oneof event { - AuditLogEventV1 v1 = 1; - } -} - -message CommentKey { - oneof object { - CatalogItemId table = 1; - CatalogItemId view = 2; - CatalogItemId materialized_view = 4; - CatalogItemId source = 5; - CatalogItemId sink = 6; - CatalogItemId index = 7; - CatalogItemId func = 8; - CatalogItemId connection = 9; - CatalogItemId type = 10; - CatalogItemId secret = 11; - CatalogItemId continual_task = 17; - RoleId role = 12; - DatabaseId database = 13; - ResolvedSchema schema = 14; - ClusterId cluster = 15; - ClusterReplicaId cluster_replica = 16; - NetworkPolicyId network_policy = 18; - } - oneof sub_component { - uint64 column_pos = 3; - } -} - -message CommentValue { - string comment = 1; -} - -message SourceReferencesKey { - CatalogItemId source = 1; -} - -message SourceReferencesValue { - repeated SourceReference references = 1; - EpochMillis updated_at = 2; -} - -message SourceReference { - string name = 1; - optional string namespace = 2; - repeated string columns = 3; -} - -message StorageCollectionMetadataKey { - GlobalId id = 1; -} - -// This value is stored transparently, however, it should only ever be -// manipulated by the storage controller. -message StorageCollectionMetadataValue { - string shard = 1; -} - -// This value is stored transparently, however, it should only ever be -// manipulated by the storage controller. -message UnfinalizedShardKey { - string shard = 1; -} - -// This value is stored transparently, however, it should only ever be -// manipulated by the storage controller. -message TxnWalShardValue { - string shard = 1; -} - -// ---- Common Types -// -// Note: Normally types like this would go in some sort of `common.proto` file, but we want to keep -// our proto definitions in a single file to make snapshotting easier, hence them living here. - -message Empty { - /* purposefully empty */ -} - -// In protobuf a "None" string is the same thing as an empty string. To get the same semantics of -// an `Option` from Rust, we need to wrap a string in a message. -message StringWrapper { - string inner = 1; -} - -message Duration { - uint64 secs = 1; - uint32 nanos = 2; -} - -message EpochMillis { - uint64 millis = 1; -} - -// Opaque timestamp type that is specific to Materialize. -message Timestamp { - uint64 internal = 1; -} - -message Version { - uint64 value = 2; -} - -enum CatalogItemType { - CATALOG_ITEM_TYPE_UNKNOWN = 0; - CATALOG_ITEM_TYPE_TABLE = 1; - CATALOG_ITEM_TYPE_SOURCE = 2; - CATALOG_ITEM_TYPE_SINK = 3; - CATALOG_ITEM_TYPE_VIEW = 4; - CATALOG_ITEM_TYPE_MATERIALIZED_VIEW = 5; - CATALOG_ITEM_TYPE_INDEX = 6; - CATALOG_ITEM_TYPE_TYPE = 7; - CATALOG_ITEM_TYPE_FUNC = 8; - CATALOG_ITEM_TYPE_SECRET = 9; - CATALOG_ITEM_TYPE_CONNECTION = 10; - CATALOG_ITEM_TYPE_CONTINUAL_TASK = 11; -} - -message CatalogItem { - message V1 { - string create_sql = 1; - } - - oneof value { - V1 v1 = 1; - } -} - -message CatalogItemId { - oneof value { - uint64 system = 1; - uint64 user = 2; - uint64 transient = 3; - } -} - -/// A newtype wrapper for a `CatalogItemId` that is always in the "system" namespace. -message SystemCatalogItemId { - uint64 value = 1; -} - -message GlobalId { - oneof value { - uint64 system = 1; - uint64 user = 2; - uint64 transient = 3; - Empty explain = 4; - } -} - -/// A newtype wrapper for a `GlobalId` that is always in the "system" namespace. -message SystemGlobalId { - uint64 value = 1; -} - -message ClusterId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message DatabaseId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message ResolvedDatabaseSpecifier { - oneof spec { - Empty ambient = 1; - DatabaseId id = 2; - } -} - -message SchemaId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message SchemaSpecifier { - oneof spec { - Empty temporary = 1; - SchemaId id = 2; - } -} - -message ResolvedSchema { - ResolvedDatabaseSpecifier database = 1; - SchemaSpecifier schema = 2; -} - -message ReplicaId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message ClusterReplicaId { - ClusterId cluster_id = 1; - ReplicaId replica_id = 2; -} - -message NetworkPolicyId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message ReplicaLogging { - bool log_logging = 1; - Duration interval = 2; -} - -message OptimizerFeatureOverride { - string name = 1; - string value = 2; -} - -message ClusterScheduleRefreshOptions { - Duration rehydration_time_estimate = 1; -} - -message ClusterSchedule { - oneof value { - Empty manual = 1; - ClusterScheduleRefreshOptions refresh = 2; - } -} - -message ClusterConfig { - message ManagedCluster { - string size = 1; - uint32 replication_factor = 2; - repeated string availability_zones = 3; - ReplicaLogging logging = 4; - bool disk = 6; - repeated OptimizerFeatureOverride optimizer_feature_overrides = 7; - ClusterSchedule schedule = 8; - } - - oneof variant { - Empty unmanaged = 1; - ManagedCluster managed = 2; - } - optional string workload_class = 3; -} - -message ReplicaConfig { - message UnmanagedLocation { - repeated string storagectl_addrs = 1; - repeated string storage_addrs = 2; - repeated string computectl_addrs = 3; - repeated string compute_addrs = 4; - uint64 workers = 5; - } - - message ManagedLocation { - string size = 1; - optional string availability_zone = 2; - bool disk = 4; - bool internal = 5; - optional string billed_as = 6; - bool pending = 7; - } - - oneof location { - UnmanagedLocation unmanaged = 1; - ManagedLocation managed = 2; - } - ReplicaLogging logging = 3; -} - -message RoleId { - oneof value { - uint64 system = 1; - uint64 user = 2; - Empty public = 3; - uint64 predefined = 4; - } -} - -message RoleAttributes { - bool inherit = 1; -} - -message RoleMembership { - message Entry { - RoleId key = 1; - RoleId value = 2; - } - - repeated Entry map = 1; -} - -message RoleVars { - message SqlSet { - repeated string entries = 1; - } - - message Entry { - string key = 1; - oneof val { - string flat = 2; - SqlSet sql_set = 3; - } - } - - repeated Entry entries = 1; -} - -message NetworkPolicyRule { - string name = 1; - oneof action { - Empty allow = 2; - } - oneof direction { - Empty ingress = 3; - } - string address = 4; -} - -message AclMode { - // A bit flag representing all the privileges that can be granted to a role. - uint64 bitflags = 1; -} - -message MzAclItem { - RoleId grantee = 1; - RoleId grantor = 2; - AclMode acl_mode = 3; -} - -enum ObjectType { - OBJECT_TYPE_UNKNOWN = 0; - OBJECT_TYPE_TABLE = 1; - OBJECT_TYPE_VIEW = 2; - OBJECT_TYPE_MATERIALIZED_VIEW = 3; - OBJECT_TYPE_SOURCE = 4; - OBJECT_TYPE_SINK = 5; - OBJECT_TYPE_INDEX = 6; - OBJECT_TYPE_TYPE = 7; - OBJECT_TYPE_ROLE = 8; - OBJECT_TYPE_CLUSTER = 9; - OBJECT_TYPE_CLUSTER_REPLICA = 10; - OBJECT_TYPE_SECRET = 11; - OBJECT_TYPE_CONNECTION = 12; - OBJECT_TYPE_DATABASE = 13; - OBJECT_TYPE_SCHEMA = 14; - OBJECT_TYPE_FUNC = 15; - OBJECT_TYPE_CONTINUAL_TASK = 16; - OBJECT_TYPE_NETWORK_POLICY = 17; -} - -message DefaultPrivilegesKey { - RoleId role_id = 1; - DatabaseId database_id = 2; - SchemaId schema_id = 3; - ObjectType object_type = 4; - RoleId grantee = 5; -} - -message DefaultPrivilegesValue { - AclMode privileges = 1; -} - -message SystemPrivilegesKey { - RoleId grantee = 1; - RoleId grantor = 2; -} - -message SystemPrivilegesValue { - AclMode acl_mode = 1; -} - -message AuditLogEventV1 { - enum EventType { - EVENT_TYPE_UNKNOWN = 0; - EVENT_TYPE_CREATE = 1; - EVENT_TYPE_DROP = 2; - EVENT_TYPE_ALTER = 3; - EVENT_TYPE_GRANT = 4; - EVENT_TYPE_REVOKE = 5; - EVENT_TYPE_COMMENT = 6; - } - - enum ObjectType { - OBJECT_TYPE_UNKNOWN = 0; - OBJECT_TYPE_CLUSTER = 1; - OBJECT_TYPE_CLUSTER_REPLICA = 2; - OBJECT_TYPE_CONNECTION = 3; - OBJECT_TYPE_DATABASE = 4; - OBJECT_TYPE_FUNC = 5; - OBJECT_TYPE_INDEX = 6; - OBJECT_TYPE_MATERIALIZED_VIEW = 7; - OBJECT_TYPE_ROLE = 8; - OBJECT_TYPE_SECRET = 9; - OBJECT_TYPE_SCHEMA = 10; - OBJECT_TYPE_SINK = 11; - OBJECT_TYPE_SOURCE = 12; - OBJECT_TYPE_TABLE = 13; - OBJECT_TYPE_TYPE = 14; - OBJECT_TYPE_VIEW = 15; - OBJECT_TYPE_SYSTEM = 16; - OBJECT_TYPE_CONTINUAL_TASK = 17; - OBJECT_TYPE_NETWORK_POLICY = 18; - } - - message IdFullNameV1 { - string id = 1; - FullNameV1 name = 2; - } - - message FullNameV1 { - string database = 1; - string schema = 2; - string item = 3; - } - - message IdNameV1 { - string id = 1; - string name = 2; - } - - message RenameClusterV1 { - string id = 1; - string old_name = 2; - string new_name = 3; - } - - message RenameClusterReplicaV1 { - string cluster_id = 1; - string replica_id = 2; - string old_name = 3; - string new_name = 4; - } - - message RenameItemV1 { - string id = 1; - FullNameV1 old_name = 2; - FullNameV1 new_name = 3; - } - - message CreateClusterReplicaV1 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - string logical_size = 5; - bool disk = 6; - optional string billed_as = 7; - bool internal = 8; - } - - message CreateClusterReplicaV2 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - string logical_size = 5; - bool disk = 6; - optional string billed_as = 7; - bool internal = 8; - CreateOrDropClusterReplicaReasonV1 reason = 9; - SchedulingDecisionsWithReasonsV1 scheduling_policies = 10; - } - - message CreateClusterReplicaV3 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - string logical_size = 5; - bool disk = 6; - optional string billed_as = 7; - bool internal = 8; - CreateOrDropClusterReplicaReasonV1 reason = 9; - SchedulingDecisionsWithReasonsV2 scheduling_policies = 10; - } - - message DropClusterReplicaV1 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - } - - message DropClusterReplicaV2 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - CreateOrDropClusterReplicaReasonV1 reason = 5; - SchedulingDecisionsWithReasonsV1 scheduling_policies = 6; - } - - message DropClusterReplicaV3 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - CreateOrDropClusterReplicaReasonV1 reason = 5; - SchedulingDecisionsWithReasonsV2 scheduling_policies = 6; - } - - message CreateOrDropClusterReplicaReasonV1 { - oneof reason { - Empty Manual = 1; - Empty Schedule = 2; - Empty System = 3; - } - } - - message SchedulingDecisionsWithReasonsV1 { - RefreshDecisionWithReasonV1 on_refresh = 1; - } - - message SchedulingDecisionsWithReasonsV2 { - RefreshDecisionWithReasonV2 on_refresh = 1; - } - - message RefreshDecisionWithReasonV1 { - oneof decision { - Empty On = 1; - Empty Off = 2; - } - repeated string objects_needing_refresh = 3; - string rehydration_time_estimate = 4; - } - - message RefreshDecisionWithReasonV2 { - oneof decision { - Empty On = 1; - Empty Off = 2; - } - repeated string objects_needing_refresh = 3; - repeated string objects_needing_compaction = 5; - string rehydration_time_estimate = 4; - } - - message CreateSourceSinkV1 { - string id = 1; - FullNameV1 name = 2; - StringWrapper size = 3; - } - - message CreateSourceSinkV2 { - string id = 1; - FullNameV1 name = 2; - StringWrapper size = 3; - string external_type = 4; - } - - message CreateSourceSinkV3 { - string id = 1; - FullNameV1 name = 2; - string external_type = 3; - } - - message CreateSourceSinkV4 { - string id = 1; - StringWrapper cluster_id = 2; - FullNameV1 name = 3; - string external_type = 4; - } - - message CreateIndexV1 { - string id = 1; - string cluster_id = 2; - FullNameV1 name = 3; - } - - message CreateMaterializedViewV1 { - string id = 1; - string cluster_id = 2; - FullNameV1 name = 3; - } - - message AlterSourceSinkV1 { - string id = 1; - FullNameV1 name = 2; - StringWrapper old_size = 3; - StringWrapper new_size = 4; - } - - message AlterSetClusterV1 { - string id = 1; - FullNameV1 name = 2; - StringWrapper old_cluster = 3; - StringWrapper new_cluster = 4; - } - - message GrantRoleV1 { - string role_id = 1; - string member_id = 2; - string grantor_id = 3; - } - - message GrantRoleV2 { - string role_id = 1; - string member_id = 2; - string grantor_id = 3; - string executed_by = 4; - } - - message RevokeRoleV1 { - string role_id = 1; - string member_id = 2; - } - - message RevokeRoleV2 { - string role_id = 1; - string member_id = 2; - string grantor_id = 3; - string executed_by = 4; - } - - message UpdatePrivilegeV1 { - string object_id = 1; - string grantee_id = 2; - string grantor_id = 3; - string privileges = 4; - } - - message AlterDefaultPrivilegeV1 { - string role_id = 1; - StringWrapper database_id = 2; - StringWrapper schema_id = 3; - string grantee_id = 4; - string privileges = 5; - } - - message UpdateOwnerV1 { - string object_id = 1; - string old_owner_id = 2; - string new_owner_id = 3; - } - - message SchemaV1 { - string id = 1; - string name = 2; - string database_name = 3; - } - - message SchemaV2 { - string id = 1; - string name = 2; - StringWrapper database_name = 3; - } - - message RenameSchemaV1 { - string id = 1; - optional string database_name = 2; - string old_name = 3; - string new_name = 4; - } - - message UpdateItemV1 { - string id = 1; - FullNameV1 name = 2; - } - - message AlterRetainHistoryV1 { - string id = 1; - optional string old_history = 2; - optional string new_history = 3; - } - - message ToNewIdV1 { - string id = 1; - string new_id = 2; - } - - message FromPreviousIdV1 { - string id = 1; - string previous_id = 2; - } - - message SetV1 { - string name = 1; - optional string value = 2; - } - - message RotateKeysV1 { - string id = 1; - string name = 2; - } - - uint64 id = 1; - EventType event_type = 2; - ObjectType object_type = 3; - StringWrapper user = 4; - EpochMillis occurred_at = 5; - - // next-id: 40 - oneof details { - CreateClusterReplicaV1 create_cluster_replica_v1 = 6; - CreateClusterReplicaV2 create_cluster_replica_v2 = 33; - CreateClusterReplicaV3 create_cluster_replica_v3 = 41; - DropClusterReplicaV1 drop_cluster_replica_v1 = 7; - DropClusterReplicaV2 drop_cluster_replica_v2 = 34; - DropClusterReplicaV3 drop_cluster_replica_v3 = 42; - CreateSourceSinkV1 create_source_sink_v1 = 8; - CreateSourceSinkV2 create_source_sink_v2 = 9; - AlterSourceSinkV1 alter_source_sink_v1 = 10; - AlterSetClusterV1 alter_set_cluster_v1 = 25; - GrantRoleV1 grant_role_v1 = 11; - GrantRoleV2 grant_role_v2 = 12; - RevokeRoleV1 revoke_role_v1 = 13; - RevokeRoleV2 revoke_role_v2 = 14; - UpdatePrivilegeV1 update_privilege_v1 = 22; - AlterDefaultPrivilegeV1 alter_default_privilege_v1 = 23; - UpdateOwnerV1 update_owner_v1 = 24; - IdFullNameV1 id_full_name_v1 = 15; - RenameClusterV1 rename_cluster_v1 = 20; - RenameClusterReplicaV1 rename_cluster_replica_v1 = 21; - RenameItemV1 rename_item_v1 = 16; - IdNameV1 id_name_v1 = 17; - SchemaV1 schema_v1 = 18; - SchemaV2 schema_v2 = 19; - RenameSchemaV1 rename_schema_v1 = 27; - UpdateItemV1 update_item_v1 = 26; - CreateSourceSinkV3 create_source_sink_v3 = 29; - AlterRetainHistoryV1 alter_retain_history_v1 = 30; - ToNewIdV1 to_new_id_v1 = 31; - FromPreviousIdV1 from_previous_id_v1 = 32; - SetV1 set_v1 = 35; - Empty reset_all_v1 = 36; - RotateKeysV1 rotate_keys_v1 = 37; - CreateSourceSinkV4 create_source_sink_v4 = 38; - CreateIndexV1 create_index_v1 = 39; - CreateMaterializedViewV1 create_materialized_view_v1 = 40; - } -} - -// Wrapper of key-values used by the persist implementation to serialize the catalog. -message StateUpdateKind { - reserved "Epoch"; - - message AuditLog { - AuditLogKey key = 1; - } - - message Cluster { - ClusterKey key = 1; - ClusterValue value = 2; - } - - message ClusterReplica { - ClusterReplicaKey key = 1; - ClusterReplicaValue value = 2; - } - - message Comment { - CommentKey key = 1; - CommentValue value = 2; - } - - message Config { - ConfigKey key = 1; - ConfigValue value = 2; - } - - message Database { - DatabaseKey key = 1; - DatabaseValue value = 2; - } - - message DefaultPrivileges { - DefaultPrivilegesKey key = 1; - DefaultPrivilegesValue value = 2; - } - - message FenceToken { - uint64 deploy_generation = 1; - int64 epoch = 2; - } - - message IdAlloc { - IdAllocKey key = 1; - IdAllocValue value = 2; - } - - message ClusterIntrospectionSourceIndex { - ClusterIntrospectionSourceIndexKey key = 1; - ClusterIntrospectionSourceIndexValue value = 2; - } - - message Item { - ItemKey key = 1; - ItemValue value = 2; - } - - message Role { - RoleKey key = 1; - RoleValue value = 2; - } - - message NetworkPolicy { - NetworkPolicyKey key = 1; - NetworkPolicyValue value = 2; - } - - message Schema { - SchemaKey key = 1; - SchemaValue value = 2; - } - - message Setting { - SettingKey key = 1; - SettingValue value = 2; - } - - message ServerConfiguration { - ServerConfigurationKey key = 1; - ServerConfigurationValue value = 2; - } - - message SourceReferences { - SourceReferencesKey key = 1; - SourceReferencesValue value = 2; - } - - message GidMapping { - GidMappingKey key = 1; - GidMappingValue value = 2; - } - - message SystemPrivileges { - SystemPrivilegesKey key = 1; - SystemPrivilegesValue value = 2; - } - - message StorageCollectionMetadata { - StorageCollectionMetadataKey key = 1; - StorageCollectionMetadataValue value = 2; - } - - message UnfinalizedShard { - UnfinalizedShardKey key = 1; - } - - message TxnWalShard { - TxnWalShardValue value = 1; - } - - reserved 15; - reserved "storage_usage"; - reserved 19; - reserved "timestamp"; - reserved 22; - reserved "persist_txn_shard"; - reserved 8; - reserved "epoch"; - - oneof kind { - AuditLog audit_log = 1; - Cluster cluster = 2; - ClusterReplica cluster_replica = 3; - Comment comment = 4; - Config config = 5; - Database database = 6; - DefaultPrivileges default_privileges = 7; - IdAlloc id_alloc = 9; - ClusterIntrospectionSourceIndex cluster_introspection_source_index = 10; - Item item = 11; - Role role = 12; - Schema schema = 13; - Setting setting = 14; - ServerConfiguration server_configuration = 16; - GidMapping gid_mapping = 17; - SystemPrivileges system_privileges = 18; - StorageCollectionMetadata storage_collection_metadata = 20; - UnfinalizedShard unfinalized_shard = 21; - TxnWalShard txn_wal_shard = 23; - SourceReferences source_references = 24; - FenceToken fence_token = 25; - NetworkPolicy network_policy = 26; - } -} diff --git a/src/catalog-protos/protos/objects_v72.proto b/src/catalog-protos/protos/objects_v72.proto deleted file mode 100644 index 028be9a308fe7..0000000000000 --- a/src/catalog-protos/protos/objects_v72.proto +++ /dev/null @@ -1,1061 +0,0 @@ -// Copyright Materialize, Inc. and contributors. All rights reserved. -// -// Use of this software is governed by the Business Source License -// included in the LICENSE file. -// -// As of the Change Date specified in that file, in accordance with -// the Business Source License, use of this software will be governed -// by the Apache License, Version 2.0. - -// This protobuf file defines the types we store in the Stash. -// -// Before and after modifying this file, make sure you have a snapshot of the before version, -// e.g. a copy of this file named 'objects_v{CATALOG_VERSION}.proto', and a snapshot of the file -// after your modifications, e.g. 'objects_v{CATALOG_VERSION + 1}.proto'. Then you can write a -// migration using these two files, and no matter how the types change in the future, we'll always -// have these snapshots to facilitate the migration. - -// buf breaking: ignore (does currently not require backward-compatibility) - -syntax = "proto3"; - -package objects_v72; - -message ConfigKey { - string key = 1; -} - -message ConfigValue { - uint64 value = 1; -} - -message SettingKey { - string name = 1; -} - -message SettingValue { - string value = 1; -} - -message IdAllocKey { - string name = 1; -} - -message IdAllocValue { - uint64 next_id = 1; -} - -message GidMappingKey { - string schema_name = 1; - CatalogItemType object_type = 2; - string object_name = 3; -} - -message GidMappingValue { - // TODO(parkmycar): Ideally this is a SystemCatalogItemId but making this change panics 0dt - // upgrades if there were new builtin objects added since the older version of Materialize - // doesn't know how to read the new SystemCatalogItemId type. - uint64 id = 1; - string fingerprint = 2; - SystemGlobalId global_id = 3; -} - -message ClusterKey { - ClusterId id = 1; -} - -message ClusterValue { - reserved 2; - string name = 1; - RoleId owner_id = 3; - repeated MzAclItem privileges = 4; - ClusterConfig config = 5; -} - -message ClusterIntrospectionSourceIndexKey { - ClusterId cluster_id = 1; - string name = 2; -} - -message ClusterIntrospectionSourceIndexValue { - // TODO(parkmycar): Ideally this is a SystemCatalogItemId but making this change panics 0dt - // upgrades if there were new builtin objects added since the older version of Materialize - // doesn't know how to read the new SystemCatalogItemId type. - uint64 index_id = 1; - uint32 oid = 2; - SystemGlobalId global_id = 3; -} - -message ClusterReplicaKey { - ReplicaId id = 1; -} - -message ClusterReplicaValue { - ClusterId cluster_id = 1; - string name = 2; - ReplicaConfig config = 3; - RoleId owner_id = 4; -} - -message DatabaseKey { - DatabaseId id = 1; -} - -message DatabaseValue { - string name = 1; - RoleId owner_id = 2; - repeated MzAclItem privileges = 3; - uint32 oid = 4; -} - -message SchemaKey { - SchemaId id = 1; -} - -message SchemaValue { - DatabaseId database_id = 1; - string name = 2; - RoleId owner_id = 3; - repeated MzAclItem privileges = 4; - uint32 oid = 5; -} - -message ItemKey { - CatalogItemId gid = 1; -} - -message ItemValue { - SchemaId schema_id = 1; - string name = 2; - CatalogItem definition = 3; - RoleId owner_id = 4; - repeated MzAclItem privileges = 5; - uint32 oid = 6; - GlobalId global_id = 7; - repeated ItemVersion extra_versions = 8; -} - -message ItemVersion { - GlobalId global_id = 1; - Version version = 2; -} - -message RoleKey { - RoleId id = 1; -} - -message RoleValue { - string name = 1; - RoleAttributes attributes = 2; - RoleMembership membership = 3; - RoleVars vars = 4; - uint32 oid = 5; -} - -message NetworkPolicyKey { - NetworkPolicyId id = 1; -} - -message NetworkPolicyValue { - string name = 1; - repeated NetworkPolicyRule rules = 2; - RoleId owner_id = 3; - repeated MzAclItem privileges = 4; - uint32 oid = 5; -} - -message ServerConfigurationKey { - string name = 1; -} - -message ServerConfigurationValue { - string value = 1; -} - -message AuditLogKey { - oneof event { - AuditLogEventV1 v1 = 1; - } -} - -message CommentKey { - oneof object { - CatalogItemId table = 1; - CatalogItemId view = 2; - CatalogItemId materialized_view = 4; - CatalogItemId source = 5; - CatalogItemId sink = 6; - CatalogItemId index = 7; - CatalogItemId func = 8; - CatalogItemId connection = 9; - CatalogItemId type = 10; - CatalogItemId secret = 11; - CatalogItemId continual_task = 17; - RoleId role = 12; - DatabaseId database = 13; - ResolvedSchema schema = 14; - ClusterId cluster = 15; - ClusterReplicaId cluster_replica = 16; - NetworkPolicyId network_policy = 18; - } - oneof sub_component { - uint64 column_pos = 3; - } -} - -message CommentValue { - string comment = 1; -} - -message SourceReferencesKey { - CatalogItemId source = 1; -} - -message SourceReferencesValue { - repeated SourceReference references = 1; - EpochMillis updated_at = 2; -} - -message SourceReference { - string name = 1; - optional string namespace = 2; - repeated string columns = 3; -} - -message StorageCollectionMetadataKey { - GlobalId id = 1; -} - -// This value is stored transparently, however, it should only ever be -// manipulated by the storage controller. -message StorageCollectionMetadataValue { - string shard = 1; -} - -// This value is stored transparently, however, it should only ever be -// manipulated by the storage controller. -message UnfinalizedShardKey { - string shard = 1; -} - -// This value is stored transparently, however, it should only ever be -// manipulated by the storage controller. -message TxnWalShardValue { - string shard = 1; -} - -// ---- Common Types -// -// Note: Normally types like this would go in some sort of `common.proto` file, but we want to keep -// our proto definitions in a single file to make snapshotting easier, hence them living here. - -message Empty { - /* purposefully empty */ -} - -// In protobuf a "None" string is the same thing as an empty string. To get the same semantics of -// an `Option` from Rust, we need to wrap a string in a message. -message StringWrapper { - string inner = 1; -} - -message Duration { - uint64 secs = 1; - uint32 nanos = 2; -} - -message EpochMillis { - uint64 millis = 1; -} - -// Opaque timestamp type that is specific to Materialize. -message Timestamp { - uint64 internal = 1; -} - -message Version { - uint64 value = 2; -} - -enum CatalogItemType { - CATALOG_ITEM_TYPE_UNKNOWN = 0; - CATALOG_ITEM_TYPE_TABLE = 1; - CATALOG_ITEM_TYPE_SOURCE = 2; - CATALOG_ITEM_TYPE_SINK = 3; - CATALOG_ITEM_TYPE_VIEW = 4; - CATALOG_ITEM_TYPE_MATERIALIZED_VIEW = 5; - CATALOG_ITEM_TYPE_INDEX = 6; - CATALOG_ITEM_TYPE_TYPE = 7; - CATALOG_ITEM_TYPE_FUNC = 8; - CATALOG_ITEM_TYPE_SECRET = 9; - CATALOG_ITEM_TYPE_CONNECTION = 10; - CATALOG_ITEM_TYPE_CONTINUAL_TASK = 11; -} - -message CatalogItem { - message V1 { - string create_sql = 1; - } - - oneof value { - V1 v1 = 1; - } -} - -message CatalogItemId { - oneof value { - uint64 system = 1; - uint64 user = 2; - uint64 transient = 3; - } -} - -/// A newtype wrapper for a `CatalogItemId` that is always in the "system" namespace. -message SystemCatalogItemId { - uint64 value = 1; -} - -message GlobalId { - oneof value { - uint64 system = 1; - uint64 user = 2; - uint64 transient = 3; - Empty explain = 4; - } -} - -/// A newtype wrapper for a `GlobalId` that is always in the "system" namespace. -message SystemGlobalId { - uint64 value = 1; -} - -message ClusterId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message DatabaseId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message ResolvedDatabaseSpecifier { - oneof spec { - Empty ambient = 1; - DatabaseId id = 2; - } -} - -message SchemaId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message SchemaSpecifier { - oneof spec { - Empty temporary = 1; - SchemaId id = 2; - } -} - -message ResolvedSchema { - ResolvedDatabaseSpecifier database = 1; - SchemaSpecifier schema = 2; -} - -message ReplicaId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message ClusterReplicaId { - ClusterId cluster_id = 1; - ReplicaId replica_id = 2; -} - -message NetworkPolicyId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message ReplicaLogging { - bool log_logging = 1; - Duration interval = 2; -} - -message OptimizerFeatureOverride { - string name = 1; - string value = 2; -} - -message ClusterScheduleRefreshOptions { - Duration rehydration_time_estimate = 1; -} - -message ClusterSchedule { - oneof value { - Empty manual = 1; - ClusterScheduleRefreshOptions refresh = 2; - } -} - -message ClusterConfig { - message ManagedCluster { - string size = 1; - uint32 replication_factor = 2; - repeated string availability_zones = 3; - ReplicaLogging logging = 4; - bool disk = 6; - repeated OptimizerFeatureOverride optimizer_feature_overrides = 7; - ClusterSchedule schedule = 8; - } - - oneof variant { - Empty unmanaged = 1; - ManagedCluster managed = 2; - } - optional string workload_class = 3; -} - -message ReplicaConfig { - message UnmanagedLocation { - repeated string storagectl_addrs = 1; - repeated string storage_addrs = 2; - repeated string computectl_addrs = 3; - repeated string compute_addrs = 4; - uint64 workers = 5; - } - - message ManagedLocation { - string size = 1; - optional string availability_zone = 2; - bool disk = 4; - bool internal = 5; - optional string billed_as = 6; - bool pending = 7; - } - - oneof location { - UnmanagedLocation unmanaged = 1; - ManagedLocation managed = 2; - } - ReplicaLogging logging = 3; -} - -message RoleId { - oneof value { - uint64 system = 1; - uint64 user = 2; - Empty public = 3; - uint64 predefined = 4; - } -} - -message RoleAttributes { - bool inherit = 1; -} - -message RoleMembership { - message Entry { - RoleId key = 1; - RoleId value = 2; - } - - repeated Entry map = 1; -} - -message RoleVars { - message SqlSet { - repeated string entries = 1; - } - - message Entry { - string key = 1; - oneof val { - string flat = 2; - SqlSet sql_set = 3; - } - } - - repeated Entry entries = 1; -} - -message NetworkPolicyRule { - string name = 1; - oneof action { - Empty allow = 2; - } - oneof direction { - Empty ingress = 3; - } - string address = 4; -} - -message AclMode { - // A bit flag representing all the privileges that can be granted to a role. - uint64 bitflags = 1; -} - -message MzAclItem { - RoleId grantee = 1; - RoleId grantor = 2; - AclMode acl_mode = 3; -} - -enum ObjectType { - OBJECT_TYPE_UNKNOWN = 0; - OBJECT_TYPE_TABLE = 1; - OBJECT_TYPE_VIEW = 2; - OBJECT_TYPE_MATERIALIZED_VIEW = 3; - OBJECT_TYPE_SOURCE = 4; - OBJECT_TYPE_SINK = 5; - OBJECT_TYPE_INDEX = 6; - OBJECT_TYPE_TYPE = 7; - OBJECT_TYPE_ROLE = 8; - OBJECT_TYPE_CLUSTER = 9; - OBJECT_TYPE_CLUSTER_REPLICA = 10; - OBJECT_TYPE_SECRET = 11; - OBJECT_TYPE_CONNECTION = 12; - OBJECT_TYPE_DATABASE = 13; - OBJECT_TYPE_SCHEMA = 14; - OBJECT_TYPE_FUNC = 15; - OBJECT_TYPE_CONTINUAL_TASK = 16; - OBJECT_TYPE_NETWORK_POLICY = 17; -} - -message DefaultPrivilegesKey { - RoleId role_id = 1; - DatabaseId database_id = 2; - SchemaId schema_id = 3; - ObjectType object_type = 4; - RoleId grantee = 5; -} - -message DefaultPrivilegesValue { - AclMode privileges = 1; -} - -message SystemPrivilegesKey { - RoleId grantee = 1; - RoleId grantor = 2; -} - -message SystemPrivilegesValue { - AclMode acl_mode = 1; -} - -message AuditLogEventV1 { - enum EventType { - EVENT_TYPE_UNKNOWN = 0; - EVENT_TYPE_CREATE = 1; - EVENT_TYPE_DROP = 2; - EVENT_TYPE_ALTER = 3; - EVENT_TYPE_GRANT = 4; - EVENT_TYPE_REVOKE = 5; - EVENT_TYPE_COMMENT = 6; - } - - enum ObjectType { - OBJECT_TYPE_UNKNOWN = 0; - OBJECT_TYPE_CLUSTER = 1; - OBJECT_TYPE_CLUSTER_REPLICA = 2; - OBJECT_TYPE_CONNECTION = 3; - OBJECT_TYPE_DATABASE = 4; - OBJECT_TYPE_FUNC = 5; - OBJECT_TYPE_INDEX = 6; - OBJECT_TYPE_MATERIALIZED_VIEW = 7; - OBJECT_TYPE_ROLE = 8; - OBJECT_TYPE_SECRET = 9; - OBJECT_TYPE_SCHEMA = 10; - OBJECT_TYPE_SINK = 11; - OBJECT_TYPE_SOURCE = 12; - OBJECT_TYPE_TABLE = 13; - OBJECT_TYPE_TYPE = 14; - OBJECT_TYPE_VIEW = 15; - OBJECT_TYPE_SYSTEM = 16; - OBJECT_TYPE_CONTINUAL_TASK = 17; - OBJECT_TYPE_NETWORK_POLICY = 18; - } - - message IdFullNameV1 { - string id = 1; - FullNameV1 name = 2; - } - - message FullNameV1 { - string database = 1; - string schema = 2; - string item = 3; - } - - message IdNameV1 { - string id = 1; - string name = 2; - } - - message RenameClusterV1 { - string id = 1; - string old_name = 2; - string new_name = 3; - } - - message RenameClusterReplicaV1 { - string cluster_id = 1; - string replica_id = 2; - string old_name = 3; - string new_name = 4; - } - - message RenameItemV1 { - string id = 1; - FullNameV1 old_name = 2; - FullNameV1 new_name = 3; - } - - message CreateClusterReplicaV1 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - string logical_size = 5; - bool disk = 6; - optional string billed_as = 7; - bool internal = 8; - } - - message CreateClusterReplicaV2 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - string logical_size = 5; - bool disk = 6; - optional string billed_as = 7; - bool internal = 8; - CreateOrDropClusterReplicaReasonV1 reason = 9; - SchedulingDecisionsWithReasonsV1 scheduling_policies = 10; - } - - message CreateClusterReplicaV3 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - string logical_size = 5; - bool disk = 6; - optional string billed_as = 7; - bool internal = 8; - CreateOrDropClusterReplicaReasonV1 reason = 9; - SchedulingDecisionsWithReasonsV2 scheduling_policies = 10; - } - - message DropClusterReplicaV1 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - } - - message DropClusterReplicaV2 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - CreateOrDropClusterReplicaReasonV1 reason = 5; - SchedulingDecisionsWithReasonsV1 scheduling_policies = 6; - } - - message DropClusterReplicaV3 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - CreateOrDropClusterReplicaReasonV1 reason = 5; - SchedulingDecisionsWithReasonsV2 scheduling_policies = 6; - } - - message CreateOrDropClusterReplicaReasonV1 { - oneof reason { - Empty Manual = 1; - Empty Schedule = 2; - Empty System = 3; - } - } - - message SchedulingDecisionsWithReasonsV1 { - RefreshDecisionWithReasonV1 on_refresh = 1; - } - - message SchedulingDecisionsWithReasonsV2 { - RefreshDecisionWithReasonV2 on_refresh = 1; - } - - message RefreshDecisionWithReasonV1 { - oneof decision { - Empty On = 1; - Empty Off = 2; - } - repeated string objects_needing_refresh = 3; - string rehydration_time_estimate = 4; - } - - message RefreshDecisionWithReasonV2 { - oneof decision { - Empty On = 1; - Empty Off = 2; - } - repeated string objects_needing_refresh = 3; - repeated string objects_needing_compaction = 5; - string rehydration_time_estimate = 4; - } - - message CreateSourceSinkV1 { - string id = 1; - FullNameV1 name = 2; - StringWrapper size = 3; - } - - message CreateSourceSinkV2 { - string id = 1; - FullNameV1 name = 2; - StringWrapper size = 3; - string external_type = 4; - } - - message CreateSourceSinkV3 { - string id = 1; - FullNameV1 name = 2; - string external_type = 3; - } - - message CreateSourceSinkV4 { - string id = 1; - StringWrapper cluster_id = 2; - FullNameV1 name = 3; - string external_type = 4; - } - - message CreateIndexV1 { - string id = 1; - string cluster_id = 2; - FullNameV1 name = 3; - } - - message CreateMaterializedViewV1 { - string id = 1; - string cluster_id = 2; - FullNameV1 name = 3; - } - - message AlterSourceSinkV1 { - string id = 1; - FullNameV1 name = 2; - StringWrapper old_size = 3; - StringWrapper new_size = 4; - } - - message AlterSetClusterV1 { - string id = 1; - FullNameV1 name = 2; - StringWrapper old_cluster = 3; - StringWrapper new_cluster = 4; - } - - message GrantRoleV1 { - string role_id = 1; - string member_id = 2; - string grantor_id = 3; - } - - message GrantRoleV2 { - string role_id = 1; - string member_id = 2; - string grantor_id = 3; - string executed_by = 4; - } - - message RevokeRoleV1 { - string role_id = 1; - string member_id = 2; - } - - message RevokeRoleV2 { - string role_id = 1; - string member_id = 2; - string grantor_id = 3; - string executed_by = 4; - } - - message UpdatePrivilegeV1 { - string object_id = 1; - string grantee_id = 2; - string grantor_id = 3; - string privileges = 4; - } - - message AlterDefaultPrivilegeV1 { - string role_id = 1; - StringWrapper database_id = 2; - StringWrapper schema_id = 3; - string grantee_id = 4; - string privileges = 5; - } - - message UpdateOwnerV1 { - string object_id = 1; - string old_owner_id = 2; - string new_owner_id = 3; - } - - message SchemaV1 { - string id = 1; - string name = 2; - string database_name = 3; - } - - message SchemaV2 { - string id = 1; - string name = 2; - StringWrapper database_name = 3; - } - - message RenameSchemaV1 { - string id = 1; - optional string database_name = 2; - string old_name = 3; - string new_name = 4; - } - - message UpdateItemV1 { - string id = 1; - FullNameV1 name = 2; - } - - message AlterRetainHistoryV1 { - string id = 1; - optional string old_history = 2; - optional string new_history = 3; - } - - message ToNewIdV1 { - string id = 1; - string new_id = 2; - } - - message FromPreviousIdV1 { - string id = 1; - string previous_id = 2; - } - - message SetV1 { - string name = 1; - optional string value = 2; - } - - message RotateKeysV1 { - string id = 1; - string name = 2; - } - - uint64 id = 1; - EventType event_type = 2; - ObjectType object_type = 3; - StringWrapper user = 4; - EpochMillis occurred_at = 5; - - // next-id: 40 - oneof details { - CreateClusterReplicaV1 create_cluster_replica_v1 = 6; - CreateClusterReplicaV2 create_cluster_replica_v2 = 33; - CreateClusterReplicaV3 create_cluster_replica_v3 = 41; - DropClusterReplicaV1 drop_cluster_replica_v1 = 7; - DropClusterReplicaV2 drop_cluster_replica_v2 = 34; - DropClusterReplicaV3 drop_cluster_replica_v3 = 42; - CreateSourceSinkV1 create_source_sink_v1 = 8; - CreateSourceSinkV2 create_source_sink_v2 = 9; - AlterSourceSinkV1 alter_source_sink_v1 = 10; - AlterSetClusterV1 alter_set_cluster_v1 = 25; - GrantRoleV1 grant_role_v1 = 11; - GrantRoleV2 grant_role_v2 = 12; - RevokeRoleV1 revoke_role_v1 = 13; - RevokeRoleV2 revoke_role_v2 = 14; - UpdatePrivilegeV1 update_privilege_v1 = 22; - AlterDefaultPrivilegeV1 alter_default_privilege_v1 = 23; - UpdateOwnerV1 update_owner_v1 = 24; - IdFullNameV1 id_full_name_v1 = 15; - RenameClusterV1 rename_cluster_v1 = 20; - RenameClusterReplicaV1 rename_cluster_replica_v1 = 21; - RenameItemV1 rename_item_v1 = 16; - IdNameV1 id_name_v1 = 17; - SchemaV1 schema_v1 = 18; - SchemaV2 schema_v2 = 19; - RenameSchemaV1 rename_schema_v1 = 27; - UpdateItemV1 update_item_v1 = 26; - CreateSourceSinkV3 create_source_sink_v3 = 29; - AlterRetainHistoryV1 alter_retain_history_v1 = 30; - ToNewIdV1 to_new_id_v1 = 31; - FromPreviousIdV1 from_previous_id_v1 = 32; - SetV1 set_v1 = 35; - Empty reset_all_v1 = 36; - RotateKeysV1 rotate_keys_v1 = 37; - CreateSourceSinkV4 create_source_sink_v4 = 38; - CreateIndexV1 create_index_v1 = 39; - CreateMaterializedViewV1 create_materialized_view_v1 = 40; - } -} - -// Wrapper of key-values used by the persist implementation to serialize the catalog. -message StateUpdateKind { - reserved "Epoch"; - - message AuditLog { - AuditLogKey key = 1; - } - - message Cluster { - ClusterKey key = 1; - ClusterValue value = 2; - } - - message ClusterReplica { - ClusterReplicaKey key = 1; - ClusterReplicaValue value = 2; - } - - message Comment { - CommentKey key = 1; - CommentValue value = 2; - } - - message Config { - ConfigKey key = 1; - ConfigValue value = 2; - } - - message Database { - DatabaseKey key = 1; - DatabaseValue value = 2; - } - - message DefaultPrivileges { - DefaultPrivilegesKey key = 1; - DefaultPrivilegesValue value = 2; - } - - message FenceToken { - uint64 deploy_generation = 1; - int64 epoch = 2; - } - - message IdAlloc { - IdAllocKey key = 1; - IdAllocValue value = 2; - } - - message ClusterIntrospectionSourceIndex { - ClusterIntrospectionSourceIndexKey key = 1; - ClusterIntrospectionSourceIndexValue value = 2; - } - - message Item { - ItemKey key = 1; - ItemValue value = 2; - } - - message Role { - RoleKey key = 1; - RoleValue value = 2; - } - - message NetworkPolicy { - NetworkPolicyKey key = 1; - NetworkPolicyValue value = 2; - } - - message Schema { - SchemaKey key = 1; - SchemaValue value = 2; - } - - message Setting { - SettingKey key = 1; - SettingValue value = 2; - } - - message ServerConfiguration { - ServerConfigurationKey key = 1; - ServerConfigurationValue value = 2; - } - - message SourceReferences { - SourceReferencesKey key = 1; - SourceReferencesValue value = 2; - } - - message GidMapping { - GidMappingKey key = 1; - GidMappingValue value = 2; - } - - message SystemPrivileges { - SystemPrivilegesKey key = 1; - SystemPrivilegesValue value = 2; - } - - message StorageCollectionMetadata { - StorageCollectionMetadataKey key = 1; - StorageCollectionMetadataValue value = 2; - } - - message UnfinalizedShard { - UnfinalizedShardKey key = 1; - } - - message TxnWalShard { - TxnWalShardValue value = 1; - } - - reserved 15; - reserved "storage_usage"; - reserved 19; - reserved "timestamp"; - reserved 22; - reserved "persist_txn_shard"; - reserved 8; - reserved "epoch"; - - oneof kind { - AuditLog audit_log = 1; - Cluster cluster = 2; - ClusterReplica cluster_replica = 3; - Comment comment = 4; - Config config = 5; - Database database = 6; - DefaultPrivileges default_privileges = 7; - IdAlloc id_alloc = 9; - ClusterIntrospectionSourceIndex cluster_introspection_source_index = 10; - Item item = 11; - Role role = 12; - Schema schema = 13; - Setting setting = 14; - ServerConfiguration server_configuration = 16; - GidMapping gid_mapping = 17; - SystemPrivileges system_privileges = 18; - StorageCollectionMetadata storage_collection_metadata = 20; - UnfinalizedShard unfinalized_shard = 21; - TxnWalShard txn_wal_shard = 23; - SourceReferences source_references = 24; - FenceToken fence_token = 25; - NetworkPolicy network_policy = 26; - } -} diff --git a/src/catalog-protos/protos/objects_v73.proto b/src/catalog-protos/protos/objects_v73.proto deleted file mode 100644 index 41f14a5b7ed24..0000000000000 --- a/src/catalog-protos/protos/objects_v73.proto +++ /dev/null @@ -1,1073 +0,0 @@ -// Copyright Materialize, Inc. and contributors. All rights reserved. -// -// Use of this software is governed by the Business Source License -// included in the LICENSE file. -// -// As of the Change Date specified in that file, in accordance with -// the Business Source License, use of this software will be governed -// by the Apache License, Version 2.0. - -// This protobuf file defines the types we store in the Stash. -// -// Before and after modifying this file, make sure you have a snapshot of the before version, -// e.g. a copy of this file named 'objects_v{CATALOG_VERSION}.proto', and a snapshot of the file -// after your modifications, e.g. 'objects_v{CATALOG_VERSION + 1}.proto'. Then you can write a -// migration using these two files, and no matter how the types change in the future, we'll always -// have these snapshots to facilitate the migration. - -// buf breaking: ignore (does currently not require backward-compatibility) - -syntax = "proto3"; - -package objects_v73; - -message ConfigKey { - string key = 1; -} - -message ConfigValue { - uint64 value = 1; -} - -message SettingKey { - string name = 1; -} - -message SettingValue { - string value = 1; -} - -message IdAllocKey { - string name = 1; -} - -message IdAllocValue { - uint64 next_id = 1; -} - -message GidMappingKey { - string schema_name = 1; - CatalogItemType object_type = 2; - string object_name = 3; -} - -message GidMappingValue { - // TODO(parkmycar): Ideally this is a SystemCatalogItemId but making this change panics 0dt - // upgrades if there were new builtin objects added since the older version of Materialize - // doesn't know how to read the new SystemCatalogItemId type. - uint64 id = 1; - string fingerprint = 2; - SystemGlobalId global_id = 3; -} - -message ClusterKey { - ClusterId id = 1; -} - -message ClusterValue { - reserved 2; - string name = 1; - RoleId owner_id = 3; - repeated MzAclItem privileges = 4; - ClusterConfig config = 5; -} - -message ClusterIntrospectionSourceIndexKey { - ClusterId cluster_id = 1; - string name = 2; -} - -message ClusterIntrospectionSourceIndexValue { - // TODO(parkmycar): Ideally this is a IntrospectionSourceCatalogItemId but making this change panics 0dt - // upgrades if there were new builtin objects added since the older version of Materialize - // doesn't know how to read the new IntrospectionSourceCatalogItemId type. - uint64 index_id = 1; - uint32 oid = 2; - IntrospectionSourceIndexGlobalId global_id = 3; -} - -message ClusterReplicaKey { - ReplicaId id = 1; -} - -message ClusterReplicaValue { - ClusterId cluster_id = 1; - string name = 2; - ReplicaConfig config = 3; - RoleId owner_id = 4; -} - -message DatabaseKey { - DatabaseId id = 1; -} - -message DatabaseValue { - string name = 1; - RoleId owner_id = 2; - repeated MzAclItem privileges = 3; - uint32 oid = 4; -} - -message SchemaKey { - SchemaId id = 1; -} - -message SchemaValue { - DatabaseId database_id = 1; - string name = 2; - RoleId owner_id = 3; - repeated MzAclItem privileges = 4; - uint32 oid = 5; -} - -message ItemKey { - CatalogItemId gid = 1; -} - -message ItemValue { - SchemaId schema_id = 1; - string name = 2; - CatalogItem definition = 3; - RoleId owner_id = 4; - repeated MzAclItem privileges = 5; - uint32 oid = 6; - GlobalId global_id = 7; - repeated ItemVersion extra_versions = 8; -} - -message ItemVersion { - GlobalId global_id = 1; - Version version = 2; -} - -message RoleKey { - RoleId id = 1; -} - -message RoleValue { - string name = 1; - RoleAttributes attributes = 2; - RoleMembership membership = 3; - RoleVars vars = 4; - uint32 oid = 5; -} - -message NetworkPolicyKey { - NetworkPolicyId id = 1; -} - -message NetworkPolicyValue { - string name = 1; - repeated NetworkPolicyRule rules = 2; - RoleId owner_id = 3; - repeated MzAclItem privileges = 4; - uint32 oid = 5; -} - -message ServerConfigurationKey { - string name = 1; -} - -message ServerConfigurationValue { - string value = 1; -} - -message AuditLogKey { - oneof event { - AuditLogEventV1 v1 = 1; - } -} - -message CommentKey { - oneof object { - CatalogItemId table = 1; - CatalogItemId view = 2; - CatalogItemId materialized_view = 4; - CatalogItemId source = 5; - CatalogItemId sink = 6; - CatalogItemId index = 7; - CatalogItemId func = 8; - CatalogItemId connection = 9; - CatalogItemId type = 10; - CatalogItemId secret = 11; - CatalogItemId continual_task = 17; - RoleId role = 12; - DatabaseId database = 13; - ResolvedSchema schema = 14; - ClusterId cluster = 15; - ClusterReplicaId cluster_replica = 16; - NetworkPolicyId network_policy = 18; - } - oneof sub_component { - uint64 column_pos = 3; - } -} - -message CommentValue { - string comment = 1; -} - -message SourceReferencesKey { - CatalogItemId source = 1; -} - -message SourceReferencesValue { - repeated SourceReference references = 1; - EpochMillis updated_at = 2; -} - -message SourceReference { - string name = 1; - optional string namespace = 2; - repeated string columns = 3; -} - -message StorageCollectionMetadataKey { - GlobalId id = 1; -} - -// This value is stored transparently, however, it should only ever be -// manipulated by the storage controller. -message StorageCollectionMetadataValue { - string shard = 1; -} - -// This value is stored transparently, however, it should only ever be -// manipulated by the storage controller. -message UnfinalizedShardKey { - string shard = 1; -} - -// This value is stored transparently, however, it should only ever be -// manipulated by the storage controller. -message TxnWalShardValue { - string shard = 1; -} - -// ---- Common Types -// -// Note: Normally types like this would go in some sort of `common.proto` file, but we want to keep -// our proto definitions in a single file to make snapshotting easier, hence them living here. - -message Empty { - /* purposefully empty */ -} - -// In protobuf a "None" string is the same thing as an empty string. To get the same semantics of -// an `Option` from Rust, we need to wrap a string in a message. -message StringWrapper { - string inner = 1; -} - -message Duration { - uint64 secs = 1; - uint32 nanos = 2; -} - -message EpochMillis { - uint64 millis = 1; -} - -// Opaque timestamp type that is specific to Materialize. -message Timestamp { - uint64 internal = 1; -} - -message Version { - uint64 value = 2; -} - -enum CatalogItemType { - CATALOG_ITEM_TYPE_UNKNOWN = 0; - CATALOG_ITEM_TYPE_TABLE = 1; - CATALOG_ITEM_TYPE_SOURCE = 2; - CATALOG_ITEM_TYPE_SINK = 3; - CATALOG_ITEM_TYPE_VIEW = 4; - CATALOG_ITEM_TYPE_MATERIALIZED_VIEW = 5; - CATALOG_ITEM_TYPE_INDEX = 6; - CATALOG_ITEM_TYPE_TYPE = 7; - CATALOG_ITEM_TYPE_FUNC = 8; - CATALOG_ITEM_TYPE_SECRET = 9; - CATALOG_ITEM_TYPE_CONNECTION = 10; - CATALOG_ITEM_TYPE_CONTINUAL_TASK = 11; -} - -message CatalogItem { - message V1 { - string create_sql = 1; - } - - oneof value { - V1 v1 = 1; - } -} - -message CatalogItemId { - oneof value { - uint64 system = 1; - uint64 user = 2; - uint64 transient = 3; - uint64 introspection_source_index = 4; - } -} - -/// A newtype wrapper for a `CatalogItemId` that is always in the "system" namespace. -message SystemCatalogItemId { - uint64 value = 1; -} - -/// A newtype wrapper for a `CatalogItemId` that is always in the "introspection source index" namespace. -message IntrospectionSourceIndexCatalogItemId { - uint64 value = 1; -} - -message GlobalId { - oneof value { - uint64 system = 1; - uint64 user = 2; - uint64 transient = 3; - Empty explain = 4; - uint64 introspection_source_index = 5; - } -} - -/// A newtype wrapper for a `GlobalId` that is always in the "system" namespace. -message SystemGlobalId { - uint64 value = 1; -} - -/// A newtype wrapper for a `GlobalId` that is always in the "introspection source index" namespace. -message IntrospectionSourceIndexGlobalId { - uint64 value = 1; -} - -message ClusterId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message DatabaseId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message ResolvedDatabaseSpecifier { - oneof spec { - Empty ambient = 1; - DatabaseId id = 2; - } -} - -message SchemaId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message SchemaSpecifier { - oneof spec { - Empty temporary = 1; - SchemaId id = 2; - } -} - -message ResolvedSchema { - ResolvedDatabaseSpecifier database = 1; - SchemaSpecifier schema = 2; -} - -message ReplicaId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message ClusterReplicaId { - ClusterId cluster_id = 1; - ReplicaId replica_id = 2; -} - -message NetworkPolicyId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message ReplicaLogging { - bool log_logging = 1; - Duration interval = 2; -} - -message OptimizerFeatureOverride { - string name = 1; - string value = 2; -} - -message ClusterScheduleRefreshOptions { - Duration rehydration_time_estimate = 1; -} - -message ClusterSchedule { - oneof value { - Empty manual = 1; - ClusterScheduleRefreshOptions refresh = 2; - } -} - -message ClusterConfig { - message ManagedCluster { - string size = 1; - uint32 replication_factor = 2; - repeated string availability_zones = 3; - ReplicaLogging logging = 4; - bool disk = 6; - repeated OptimizerFeatureOverride optimizer_feature_overrides = 7; - ClusterSchedule schedule = 8; - } - - oneof variant { - Empty unmanaged = 1; - ManagedCluster managed = 2; - } - optional string workload_class = 3; -} - -message ReplicaConfig { - message UnmanagedLocation { - repeated string storagectl_addrs = 1; - repeated string storage_addrs = 2; - repeated string computectl_addrs = 3; - repeated string compute_addrs = 4; - uint64 workers = 5; - } - - message ManagedLocation { - string size = 1; - optional string availability_zone = 2; - bool disk = 4; - bool internal = 5; - optional string billed_as = 6; - bool pending = 7; - } - - oneof location { - UnmanagedLocation unmanaged = 1; - ManagedLocation managed = 2; - } - ReplicaLogging logging = 3; -} - -message RoleId { - oneof value { - uint64 system = 1; - uint64 user = 2; - Empty public = 3; - uint64 predefined = 4; - } -} - -message RoleAttributes { - bool inherit = 1; -} - -message RoleMembership { - message Entry { - RoleId key = 1; - RoleId value = 2; - } - - repeated Entry map = 1; -} - -message RoleVars { - message SqlSet { - repeated string entries = 1; - } - - message Entry { - string key = 1; - oneof val { - string flat = 2; - SqlSet sql_set = 3; - } - } - - repeated Entry entries = 1; -} - -message NetworkPolicyRule { - string name = 1; - oneof action { - Empty allow = 2; - } - oneof direction { - Empty ingress = 3; - } - string address = 4; -} - -message AclMode { - // A bit flag representing all the privileges that can be granted to a role. - uint64 bitflags = 1; -} - -message MzAclItem { - RoleId grantee = 1; - RoleId grantor = 2; - AclMode acl_mode = 3; -} - -enum ObjectType { - OBJECT_TYPE_UNKNOWN = 0; - OBJECT_TYPE_TABLE = 1; - OBJECT_TYPE_VIEW = 2; - OBJECT_TYPE_MATERIALIZED_VIEW = 3; - OBJECT_TYPE_SOURCE = 4; - OBJECT_TYPE_SINK = 5; - OBJECT_TYPE_INDEX = 6; - OBJECT_TYPE_TYPE = 7; - OBJECT_TYPE_ROLE = 8; - OBJECT_TYPE_CLUSTER = 9; - OBJECT_TYPE_CLUSTER_REPLICA = 10; - OBJECT_TYPE_SECRET = 11; - OBJECT_TYPE_CONNECTION = 12; - OBJECT_TYPE_DATABASE = 13; - OBJECT_TYPE_SCHEMA = 14; - OBJECT_TYPE_FUNC = 15; - OBJECT_TYPE_CONTINUAL_TASK = 16; - OBJECT_TYPE_NETWORK_POLICY = 17; -} - -message DefaultPrivilegesKey { - RoleId role_id = 1; - DatabaseId database_id = 2; - SchemaId schema_id = 3; - ObjectType object_type = 4; - RoleId grantee = 5; -} - -message DefaultPrivilegesValue { - AclMode privileges = 1; -} - -message SystemPrivilegesKey { - RoleId grantee = 1; - RoleId grantor = 2; -} - -message SystemPrivilegesValue { - AclMode acl_mode = 1; -} - -message AuditLogEventV1 { - enum EventType { - EVENT_TYPE_UNKNOWN = 0; - EVENT_TYPE_CREATE = 1; - EVENT_TYPE_DROP = 2; - EVENT_TYPE_ALTER = 3; - EVENT_TYPE_GRANT = 4; - EVENT_TYPE_REVOKE = 5; - EVENT_TYPE_COMMENT = 6; - } - - enum ObjectType { - OBJECT_TYPE_UNKNOWN = 0; - OBJECT_TYPE_CLUSTER = 1; - OBJECT_TYPE_CLUSTER_REPLICA = 2; - OBJECT_TYPE_CONNECTION = 3; - OBJECT_TYPE_DATABASE = 4; - OBJECT_TYPE_FUNC = 5; - OBJECT_TYPE_INDEX = 6; - OBJECT_TYPE_MATERIALIZED_VIEW = 7; - OBJECT_TYPE_ROLE = 8; - OBJECT_TYPE_SECRET = 9; - OBJECT_TYPE_SCHEMA = 10; - OBJECT_TYPE_SINK = 11; - OBJECT_TYPE_SOURCE = 12; - OBJECT_TYPE_TABLE = 13; - OBJECT_TYPE_TYPE = 14; - OBJECT_TYPE_VIEW = 15; - OBJECT_TYPE_SYSTEM = 16; - OBJECT_TYPE_CONTINUAL_TASK = 17; - OBJECT_TYPE_NETWORK_POLICY = 18; - } - - message IdFullNameV1 { - string id = 1; - FullNameV1 name = 2; - } - - message FullNameV1 { - string database = 1; - string schema = 2; - string item = 3; - } - - message IdNameV1 { - string id = 1; - string name = 2; - } - - message RenameClusterV1 { - string id = 1; - string old_name = 2; - string new_name = 3; - } - - message RenameClusterReplicaV1 { - string cluster_id = 1; - string replica_id = 2; - string old_name = 3; - string new_name = 4; - } - - message RenameItemV1 { - string id = 1; - FullNameV1 old_name = 2; - FullNameV1 new_name = 3; - } - - message CreateClusterReplicaV1 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - string logical_size = 5; - bool disk = 6; - optional string billed_as = 7; - bool internal = 8; - } - - message CreateClusterReplicaV2 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - string logical_size = 5; - bool disk = 6; - optional string billed_as = 7; - bool internal = 8; - CreateOrDropClusterReplicaReasonV1 reason = 9; - SchedulingDecisionsWithReasonsV1 scheduling_policies = 10; - } - - message CreateClusterReplicaV3 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - string logical_size = 5; - bool disk = 6; - optional string billed_as = 7; - bool internal = 8; - CreateOrDropClusterReplicaReasonV1 reason = 9; - SchedulingDecisionsWithReasonsV2 scheduling_policies = 10; - } - - message DropClusterReplicaV1 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - } - - message DropClusterReplicaV2 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - CreateOrDropClusterReplicaReasonV1 reason = 5; - SchedulingDecisionsWithReasonsV1 scheduling_policies = 6; - } - - message DropClusterReplicaV3 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - CreateOrDropClusterReplicaReasonV1 reason = 5; - SchedulingDecisionsWithReasonsV2 scheduling_policies = 6; - } - - message CreateOrDropClusterReplicaReasonV1 { - oneof reason { - Empty Manual = 1; - Empty Schedule = 2; - Empty System = 3; - } - } - - message SchedulingDecisionsWithReasonsV1 { - RefreshDecisionWithReasonV1 on_refresh = 1; - } - - message SchedulingDecisionsWithReasonsV2 { - RefreshDecisionWithReasonV2 on_refresh = 1; - } - - message RefreshDecisionWithReasonV1 { - oneof decision { - Empty On = 1; - Empty Off = 2; - } - repeated string objects_needing_refresh = 3; - string rehydration_time_estimate = 4; - } - - message RefreshDecisionWithReasonV2 { - oneof decision { - Empty On = 1; - Empty Off = 2; - } - repeated string objects_needing_refresh = 3; - repeated string objects_needing_compaction = 5; - string rehydration_time_estimate = 4; - } - - message CreateSourceSinkV1 { - string id = 1; - FullNameV1 name = 2; - StringWrapper size = 3; - } - - message CreateSourceSinkV2 { - string id = 1; - FullNameV1 name = 2; - StringWrapper size = 3; - string external_type = 4; - } - - message CreateSourceSinkV3 { - string id = 1; - FullNameV1 name = 2; - string external_type = 3; - } - - message CreateSourceSinkV4 { - string id = 1; - StringWrapper cluster_id = 2; - FullNameV1 name = 3; - string external_type = 4; - } - - message CreateIndexV1 { - string id = 1; - string cluster_id = 2; - FullNameV1 name = 3; - } - - message CreateMaterializedViewV1 { - string id = 1; - string cluster_id = 2; - FullNameV1 name = 3; - } - - message AlterSourceSinkV1 { - string id = 1; - FullNameV1 name = 2; - StringWrapper old_size = 3; - StringWrapper new_size = 4; - } - - message AlterSetClusterV1 { - string id = 1; - FullNameV1 name = 2; - StringWrapper old_cluster = 3; - StringWrapper new_cluster = 4; - } - - message GrantRoleV1 { - string role_id = 1; - string member_id = 2; - string grantor_id = 3; - } - - message GrantRoleV2 { - string role_id = 1; - string member_id = 2; - string grantor_id = 3; - string executed_by = 4; - } - - message RevokeRoleV1 { - string role_id = 1; - string member_id = 2; - } - - message RevokeRoleV2 { - string role_id = 1; - string member_id = 2; - string grantor_id = 3; - string executed_by = 4; - } - - message UpdatePrivilegeV1 { - string object_id = 1; - string grantee_id = 2; - string grantor_id = 3; - string privileges = 4; - } - - message AlterDefaultPrivilegeV1 { - string role_id = 1; - StringWrapper database_id = 2; - StringWrapper schema_id = 3; - string grantee_id = 4; - string privileges = 5; - } - - message UpdateOwnerV1 { - string object_id = 1; - string old_owner_id = 2; - string new_owner_id = 3; - } - - message SchemaV1 { - string id = 1; - string name = 2; - string database_name = 3; - } - - message SchemaV2 { - string id = 1; - string name = 2; - StringWrapper database_name = 3; - } - - message RenameSchemaV1 { - string id = 1; - optional string database_name = 2; - string old_name = 3; - string new_name = 4; - } - - message UpdateItemV1 { - string id = 1; - FullNameV1 name = 2; - } - - message AlterRetainHistoryV1 { - string id = 1; - optional string old_history = 2; - optional string new_history = 3; - } - - message ToNewIdV1 { - string id = 1; - string new_id = 2; - } - - message FromPreviousIdV1 { - string id = 1; - string previous_id = 2; - } - - message SetV1 { - string name = 1; - optional string value = 2; - } - - message RotateKeysV1 { - string id = 1; - string name = 2; - } - - uint64 id = 1; - EventType event_type = 2; - ObjectType object_type = 3; - StringWrapper user = 4; - EpochMillis occurred_at = 5; - - // next-id: 40 - oneof details { - CreateClusterReplicaV1 create_cluster_replica_v1 = 6; - CreateClusterReplicaV2 create_cluster_replica_v2 = 33; - CreateClusterReplicaV3 create_cluster_replica_v3 = 41; - DropClusterReplicaV1 drop_cluster_replica_v1 = 7; - DropClusterReplicaV2 drop_cluster_replica_v2 = 34; - DropClusterReplicaV3 drop_cluster_replica_v3 = 42; - CreateSourceSinkV1 create_source_sink_v1 = 8; - CreateSourceSinkV2 create_source_sink_v2 = 9; - AlterSourceSinkV1 alter_source_sink_v1 = 10; - AlterSetClusterV1 alter_set_cluster_v1 = 25; - GrantRoleV1 grant_role_v1 = 11; - GrantRoleV2 grant_role_v2 = 12; - RevokeRoleV1 revoke_role_v1 = 13; - RevokeRoleV2 revoke_role_v2 = 14; - UpdatePrivilegeV1 update_privilege_v1 = 22; - AlterDefaultPrivilegeV1 alter_default_privilege_v1 = 23; - UpdateOwnerV1 update_owner_v1 = 24; - IdFullNameV1 id_full_name_v1 = 15; - RenameClusterV1 rename_cluster_v1 = 20; - RenameClusterReplicaV1 rename_cluster_replica_v1 = 21; - RenameItemV1 rename_item_v1 = 16; - IdNameV1 id_name_v1 = 17; - SchemaV1 schema_v1 = 18; - SchemaV2 schema_v2 = 19; - RenameSchemaV1 rename_schema_v1 = 27; - UpdateItemV1 update_item_v1 = 26; - CreateSourceSinkV3 create_source_sink_v3 = 29; - AlterRetainHistoryV1 alter_retain_history_v1 = 30; - ToNewIdV1 to_new_id_v1 = 31; - FromPreviousIdV1 from_previous_id_v1 = 32; - SetV1 set_v1 = 35; - Empty reset_all_v1 = 36; - RotateKeysV1 rotate_keys_v1 = 37; - CreateSourceSinkV4 create_source_sink_v4 = 38; - CreateIndexV1 create_index_v1 = 39; - CreateMaterializedViewV1 create_materialized_view_v1 = 40; - } -} - -// Wrapper of key-values used by the persist implementation to serialize the catalog. -message StateUpdateKind { - reserved "Epoch"; - - message AuditLog { - AuditLogKey key = 1; - } - - message Cluster { - ClusterKey key = 1; - ClusterValue value = 2; - } - - message ClusterReplica { - ClusterReplicaKey key = 1; - ClusterReplicaValue value = 2; - } - - message Comment { - CommentKey key = 1; - CommentValue value = 2; - } - - message Config { - ConfigKey key = 1; - ConfigValue value = 2; - } - - message Database { - DatabaseKey key = 1; - DatabaseValue value = 2; - } - - message DefaultPrivileges { - DefaultPrivilegesKey key = 1; - DefaultPrivilegesValue value = 2; - } - - message FenceToken { - uint64 deploy_generation = 1; - int64 epoch = 2; - } - - message IdAlloc { - IdAllocKey key = 1; - IdAllocValue value = 2; - } - - message ClusterIntrospectionSourceIndex { - ClusterIntrospectionSourceIndexKey key = 1; - ClusterIntrospectionSourceIndexValue value = 2; - } - - message Item { - ItemKey key = 1; - ItemValue value = 2; - } - - message Role { - RoleKey key = 1; - RoleValue value = 2; - } - - message NetworkPolicy { - NetworkPolicyKey key = 1; - NetworkPolicyValue value = 2; - } - - message Schema { - SchemaKey key = 1; - SchemaValue value = 2; - } - - message Setting { - SettingKey key = 1; - SettingValue value = 2; - } - - message ServerConfiguration { - ServerConfigurationKey key = 1; - ServerConfigurationValue value = 2; - } - - message SourceReferences { - SourceReferencesKey key = 1; - SourceReferencesValue value = 2; - } - - message GidMapping { - GidMappingKey key = 1; - GidMappingValue value = 2; - } - - message SystemPrivileges { - SystemPrivilegesKey key = 1; - SystemPrivilegesValue value = 2; - } - - message StorageCollectionMetadata { - StorageCollectionMetadataKey key = 1; - StorageCollectionMetadataValue value = 2; - } - - message UnfinalizedShard { - UnfinalizedShardKey key = 1; - } - - message TxnWalShard { - TxnWalShardValue value = 1; - } - - reserved 15; - reserved "storage_usage"; - reserved 19; - reserved "timestamp"; - reserved 22; - reserved "persist_txn_shard"; - reserved 8; - reserved "epoch"; - - oneof kind { - AuditLog audit_log = 1; - Cluster cluster = 2; - ClusterReplica cluster_replica = 3; - Comment comment = 4; - Config config = 5; - Database database = 6; - DefaultPrivileges default_privileges = 7; - IdAlloc id_alloc = 9; - ClusterIntrospectionSourceIndex cluster_introspection_source_index = 10; - Item item = 11; - Role role = 12; - Schema schema = 13; - Setting setting = 14; - ServerConfiguration server_configuration = 16; - GidMapping gid_mapping = 17; - SystemPrivileges system_privileges = 18; - StorageCollectionMetadata storage_collection_metadata = 20; - UnfinalizedShard unfinalized_shard = 21; - TxnWalShard txn_wal_shard = 23; - SourceReferences source_references = 24; - FenceToken fence_token = 25; - NetworkPolicy network_policy = 26; - } -} diff --git a/src/catalog-protos/protos/objects_v74.proto b/src/catalog-protos/protos/objects_v74.proto deleted file mode 100644 index fc7a8b423f5ac..0000000000000 --- a/src/catalog-protos/protos/objects_v74.proto +++ /dev/null @@ -1,1090 +0,0 @@ -// Copyright Materialize, Inc. and contributors. All rights reserved. -// -// Use of this software is governed by the Business Source License -// included in the LICENSE file. -// -// As of the Change Date specified in that file, in accordance with -// the Business Source License, use of this software will be governed -// by the Apache License, Version 2.0. - -// This protobuf file defines the types we store in the Stash. -// -// Before and after modifying this file, make sure you have a snapshot of the before version, -// e.g. a copy of this file named 'objects_v{CATALOG_VERSION}.proto', and a snapshot of the file -// after your modifications, e.g. 'objects_v{CATALOG_VERSION + 1}.proto'. Then you can write a -// migration using these two files, and no matter how the types change in the future, we'll always -// have these snapshots to facilitate the migration. - -// buf breaking: ignore (does currently not require backward-compatibility) - -syntax = "proto3"; - -package objects_v74; - -message ConfigKey { - string key = 1; -} - -message ConfigValue { - uint64 value = 1; -} - -message SettingKey { - string name = 1; -} - -message SettingValue { - string value = 1; -} - -message IdAllocKey { - string name = 1; -} - -message IdAllocValue { - uint64 next_id = 1; -} - -message GidMappingKey { - string schema_name = 1; - CatalogItemType object_type = 2; - string object_name = 3; -} - -message GidMappingValue { - // TODO(parkmycar): Ideally this is a SystemCatalogItemId but making this change panics 0dt - // upgrades if there were new builtin objects added since the older version of Materialize - // doesn't know how to read the new SystemCatalogItemId type. - uint64 id = 1; - string fingerprint = 2; - SystemGlobalId global_id = 3; -} - -message ClusterKey { - ClusterId id = 1; -} - -message ClusterValue { - reserved 2; - string name = 1; - RoleId owner_id = 3; - repeated MzAclItem privileges = 4; - ClusterConfig config = 5; -} - -message ClusterIntrospectionSourceIndexKey { - ClusterId cluster_id = 1; - string name = 2; -} - -message ClusterIntrospectionSourceIndexValue { - // TODO(parkmycar): Ideally this is a IntrospectionSourceCatalogItemId but making this change panics 0dt - // upgrades if there were new builtin objects added since the older version of Materialize - // doesn't know how to read the new IntrospectionSourceCatalogItemId type. - uint64 index_id = 1; - uint32 oid = 2; - IntrospectionSourceIndexGlobalId global_id = 3; -} - -message ClusterReplicaKey { - ReplicaId id = 1; -} - -message ClusterReplicaValue { - ClusterId cluster_id = 1; - string name = 2; - ReplicaConfig config = 3; - RoleId owner_id = 4; -} - -message DatabaseKey { - DatabaseId id = 1; -} - -message DatabaseValue { - string name = 1; - RoleId owner_id = 2; - repeated MzAclItem privileges = 3; - uint32 oid = 4; -} - -message SchemaKey { - SchemaId id = 1; -} - -message SchemaValue { - DatabaseId database_id = 1; - string name = 2; - RoleId owner_id = 3; - repeated MzAclItem privileges = 4; - uint32 oid = 5; -} - -message ItemKey { - CatalogItemId gid = 1; -} - -message ItemValue { - SchemaId schema_id = 1; - string name = 2; - CatalogItem definition = 3; - RoleId owner_id = 4; - repeated MzAclItem privileges = 5; - uint32 oid = 6; - GlobalId global_id = 7; - repeated ItemVersion extra_versions = 8; -} - -message ItemVersion { - GlobalId global_id = 1; - Version version = 2; -} - -message RoleKey { - RoleId id = 1; -} - -message RoleValue { - string name = 1; - RoleAttributes attributes = 2; - RoleMembership membership = 3; - RoleVars vars = 4; - uint32 oid = 5; -} - -message RoleAuthKey { - RoleId id = 1; -} - -message RoleAuthValue { - optional string password_hash = 1; - EpochMillis updated_at = 2; -} - -message NetworkPolicyKey { - NetworkPolicyId id = 1; -} - -message NetworkPolicyValue { - string name = 1; - repeated NetworkPolicyRule rules = 2; - RoleId owner_id = 3; - repeated MzAclItem privileges = 4; - uint32 oid = 5; -} - -message ServerConfigurationKey { - string name = 1; -} - -message ServerConfigurationValue { - string value = 1; -} - -message AuditLogKey { - oneof event { - AuditLogEventV1 v1 = 1; - } -} - -message CommentKey { - oneof object { - CatalogItemId table = 1; - CatalogItemId view = 2; - CatalogItemId materialized_view = 4; - CatalogItemId source = 5; - CatalogItemId sink = 6; - CatalogItemId index = 7; - CatalogItemId func = 8; - CatalogItemId connection = 9; - CatalogItemId type = 10; - CatalogItemId secret = 11; - CatalogItemId continual_task = 17; - RoleId role = 12; - DatabaseId database = 13; - ResolvedSchema schema = 14; - ClusterId cluster = 15; - ClusterReplicaId cluster_replica = 16; - NetworkPolicyId network_policy = 18; - } - oneof sub_component { - uint64 column_pos = 3; - } -} - -message CommentValue { - string comment = 1; -} - -message SourceReferencesKey { - CatalogItemId source = 1; -} - -message SourceReferencesValue { - repeated SourceReference references = 1; - EpochMillis updated_at = 2; -} - -message SourceReference { - string name = 1; - optional string namespace = 2; - repeated string columns = 3; -} - -message StorageCollectionMetadataKey { - GlobalId id = 1; -} - -// This value is stored transparently, however, it should only ever be -// manipulated by the storage controller. -message StorageCollectionMetadataValue { - string shard = 1; -} - -// This value is stored transparently, however, it should only ever be -// manipulated by the storage controller. -message UnfinalizedShardKey { - string shard = 1; -} - -// This value is stored transparently, however, it should only ever be -// manipulated by the storage controller. -message TxnWalShardValue { - string shard = 1; -} - -// ---- Common Types -// -// Note: Normally types like this would go in some sort of `common.proto` file, but we want to keep -// our proto definitions in a single file to make snapshotting easier, hence them living here. - -message Empty { - /* purposefully empty */ -} - -// In protobuf a "None" string is the same thing as an empty string. To get the same semantics of -// an `Option` from Rust, we need to wrap a string in a message. -message StringWrapper { - string inner = 1; -} - -message Duration { - uint64 secs = 1; - uint32 nanos = 2; -} - -message EpochMillis { - uint64 millis = 1; -} - -// Opaque timestamp type that is specific to Materialize. -message Timestamp { - uint64 internal = 1; -} - -message Version { - uint64 value = 2; -} - -enum CatalogItemType { - CATALOG_ITEM_TYPE_UNKNOWN = 0; - CATALOG_ITEM_TYPE_TABLE = 1; - CATALOG_ITEM_TYPE_SOURCE = 2; - CATALOG_ITEM_TYPE_SINK = 3; - CATALOG_ITEM_TYPE_VIEW = 4; - CATALOG_ITEM_TYPE_MATERIALIZED_VIEW = 5; - CATALOG_ITEM_TYPE_INDEX = 6; - CATALOG_ITEM_TYPE_TYPE = 7; - CATALOG_ITEM_TYPE_FUNC = 8; - CATALOG_ITEM_TYPE_SECRET = 9; - CATALOG_ITEM_TYPE_CONNECTION = 10; - CATALOG_ITEM_TYPE_CONTINUAL_TASK = 11; -} - -message CatalogItem { - message V1 { - string create_sql = 1; - } - - oneof value { - V1 v1 = 1; - } -} - -message CatalogItemId { - oneof value { - uint64 system = 1; - uint64 user = 2; - uint64 transient = 3; - uint64 introspection_source_index = 4; - } -} - -/// A newtype wrapper for a `CatalogItemId` that is always in the "system" namespace. -message SystemCatalogItemId { - uint64 value = 1; -} - -/// A newtype wrapper for a `CatalogItemId` that is always in the "introspection source index" namespace. -message IntrospectionSourceIndexCatalogItemId { - uint64 value = 1; -} - -message GlobalId { - oneof value { - uint64 system = 1; - uint64 user = 2; - uint64 transient = 3; - Empty explain = 4; - uint64 introspection_source_index = 5; - } -} - -/// A newtype wrapper for a `GlobalId` that is always in the "system" namespace. -message SystemGlobalId { - uint64 value = 1; -} - -/// A newtype wrapper for a `GlobalId` that is always in the "introspection source index" namespace. -message IntrospectionSourceIndexGlobalId { - uint64 value = 1; -} - -message ClusterId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message DatabaseId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message ResolvedDatabaseSpecifier { - oneof spec { - Empty ambient = 1; - DatabaseId id = 2; - } -} - -message SchemaId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message SchemaSpecifier { - oneof spec { - Empty temporary = 1; - SchemaId id = 2; - } -} - -message ResolvedSchema { - ResolvedDatabaseSpecifier database = 1; - SchemaSpecifier schema = 2; -} - -message ReplicaId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message ClusterReplicaId { - ClusterId cluster_id = 1; - ReplicaId replica_id = 2; -} - -message NetworkPolicyId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message ReplicaLogging { - bool log_logging = 1; - Duration interval = 2; -} - -message OptimizerFeatureOverride { - string name = 1; - string value = 2; -} - -message ClusterScheduleRefreshOptions { - Duration rehydration_time_estimate = 1; -} - -message ClusterSchedule { - oneof value { - Empty manual = 1; - ClusterScheduleRefreshOptions refresh = 2; - } -} - -message ClusterConfig { - message ManagedCluster { - string size = 1; - uint32 replication_factor = 2; - repeated string availability_zones = 3; - ReplicaLogging logging = 4; - bool disk = 6; - repeated OptimizerFeatureOverride optimizer_feature_overrides = 7; - ClusterSchedule schedule = 8; - } - - oneof variant { - Empty unmanaged = 1; - ManagedCluster managed = 2; - } - optional string workload_class = 3; -} - -message ReplicaConfig { - message UnmanagedLocation { - repeated string storagectl_addrs = 1; - repeated string storage_addrs = 2; - repeated string computectl_addrs = 3; - repeated string compute_addrs = 4; - uint64 workers = 5; - } - - message ManagedLocation { - string size = 1; - optional string availability_zone = 2; - bool disk = 4; - bool internal = 5; - optional string billed_as = 6; - bool pending = 7; - } - - oneof location { - UnmanagedLocation unmanaged = 1; - ManagedLocation managed = 2; - } - ReplicaLogging logging = 3; -} - -message RoleId { - oneof value { - uint64 system = 1; - uint64 user = 2; - Empty public = 3; - uint64 predefined = 4; - } -} - -message RoleAttributes { - bool inherit = 1; - optional bool superuser = 2; - optional bool login = 3; -} - -message RoleMembership { - message Entry { - RoleId key = 1; - RoleId value = 2; - } - - repeated Entry map = 1; -} - -message RoleVars { - message SqlSet { - repeated string entries = 1; - } - - message Entry { - string key = 1; - oneof val { - string flat = 2; - SqlSet sql_set = 3; - } - } - - repeated Entry entries = 1; -} - -message NetworkPolicyRule { - string name = 1; - oneof action { - Empty allow = 2; - } - oneof direction { - Empty ingress = 3; - } - string address = 4; -} - -message AclMode { - // A bit flag representing all the privileges that can be granted to a role. - uint64 bitflags = 1; -} - -message MzAclItem { - RoleId grantee = 1; - RoleId grantor = 2; - AclMode acl_mode = 3; -} - -enum ObjectType { - OBJECT_TYPE_UNKNOWN = 0; - OBJECT_TYPE_TABLE = 1; - OBJECT_TYPE_VIEW = 2; - OBJECT_TYPE_MATERIALIZED_VIEW = 3; - OBJECT_TYPE_SOURCE = 4; - OBJECT_TYPE_SINK = 5; - OBJECT_TYPE_INDEX = 6; - OBJECT_TYPE_TYPE = 7; - OBJECT_TYPE_ROLE = 8; - OBJECT_TYPE_CLUSTER = 9; - OBJECT_TYPE_CLUSTER_REPLICA = 10; - OBJECT_TYPE_SECRET = 11; - OBJECT_TYPE_CONNECTION = 12; - OBJECT_TYPE_DATABASE = 13; - OBJECT_TYPE_SCHEMA = 14; - OBJECT_TYPE_FUNC = 15; - OBJECT_TYPE_CONTINUAL_TASK = 16; - OBJECT_TYPE_NETWORK_POLICY = 17; -} - -message DefaultPrivilegesKey { - RoleId role_id = 1; - DatabaseId database_id = 2; - SchemaId schema_id = 3; - ObjectType object_type = 4; - RoleId grantee = 5; -} - -message DefaultPrivilegesValue { - AclMode privileges = 1; -} - -message SystemPrivilegesKey { - RoleId grantee = 1; - RoleId grantor = 2; -} - -message SystemPrivilegesValue { - AclMode acl_mode = 1; -} - -message AuditLogEventV1 { - enum EventType { - EVENT_TYPE_UNKNOWN = 0; - EVENT_TYPE_CREATE = 1; - EVENT_TYPE_DROP = 2; - EVENT_TYPE_ALTER = 3; - EVENT_TYPE_GRANT = 4; - EVENT_TYPE_REVOKE = 5; - EVENT_TYPE_COMMENT = 6; - } - - enum ObjectType { - OBJECT_TYPE_UNKNOWN = 0; - OBJECT_TYPE_CLUSTER = 1; - OBJECT_TYPE_CLUSTER_REPLICA = 2; - OBJECT_TYPE_CONNECTION = 3; - OBJECT_TYPE_DATABASE = 4; - OBJECT_TYPE_FUNC = 5; - OBJECT_TYPE_INDEX = 6; - OBJECT_TYPE_MATERIALIZED_VIEW = 7; - OBJECT_TYPE_ROLE = 8; - OBJECT_TYPE_SECRET = 9; - OBJECT_TYPE_SCHEMA = 10; - OBJECT_TYPE_SINK = 11; - OBJECT_TYPE_SOURCE = 12; - OBJECT_TYPE_TABLE = 13; - OBJECT_TYPE_TYPE = 14; - OBJECT_TYPE_VIEW = 15; - OBJECT_TYPE_SYSTEM = 16; - OBJECT_TYPE_CONTINUAL_TASK = 17; - OBJECT_TYPE_NETWORK_POLICY = 18; - } - - message IdFullNameV1 { - string id = 1; - FullNameV1 name = 2; - } - - message FullNameV1 { - string database = 1; - string schema = 2; - string item = 3; - } - - message IdNameV1 { - string id = 1; - string name = 2; - } - - message RenameClusterV1 { - string id = 1; - string old_name = 2; - string new_name = 3; - } - - message RenameClusterReplicaV1 { - string cluster_id = 1; - string replica_id = 2; - string old_name = 3; - string new_name = 4; - } - - message RenameItemV1 { - string id = 1; - FullNameV1 old_name = 2; - FullNameV1 new_name = 3; - } - - message CreateClusterReplicaV1 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - string logical_size = 5; - bool disk = 6; - optional string billed_as = 7; - bool internal = 8; - } - - message CreateClusterReplicaV2 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - string logical_size = 5; - bool disk = 6; - optional string billed_as = 7; - bool internal = 8; - CreateOrDropClusterReplicaReasonV1 reason = 9; - SchedulingDecisionsWithReasonsV1 scheduling_policies = 10; - } - - message CreateClusterReplicaV3 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - string logical_size = 5; - bool disk = 6; - optional string billed_as = 7; - bool internal = 8; - CreateOrDropClusterReplicaReasonV1 reason = 9; - SchedulingDecisionsWithReasonsV2 scheduling_policies = 10; - } - - message DropClusterReplicaV1 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - } - - message DropClusterReplicaV2 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - CreateOrDropClusterReplicaReasonV1 reason = 5; - SchedulingDecisionsWithReasonsV1 scheduling_policies = 6; - } - - message DropClusterReplicaV3 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - CreateOrDropClusterReplicaReasonV1 reason = 5; - SchedulingDecisionsWithReasonsV2 scheduling_policies = 6; - } - - message CreateOrDropClusterReplicaReasonV1 { - oneof reason { - Empty Manual = 1; - Empty Schedule = 2; - Empty System = 3; - } - } - - message SchedulingDecisionsWithReasonsV1 { - RefreshDecisionWithReasonV1 on_refresh = 1; - } - - message SchedulingDecisionsWithReasonsV2 { - RefreshDecisionWithReasonV2 on_refresh = 1; - } - - message RefreshDecisionWithReasonV1 { - oneof decision { - Empty On = 1; - Empty Off = 2; - } - repeated string objects_needing_refresh = 3; - string rehydration_time_estimate = 4; - } - - message RefreshDecisionWithReasonV2 { - oneof decision { - Empty On = 1; - Empty Off = 2; - } - repeated string objects_needing_refresh = 3; - repeated string objects_needing_compaction = 5; - string rehydration_time_estimate = 4; - } - - message CreateSourceSinkV1 { - string id = 1; - FullNameV1 name = 2; - StringWrapper size = 3; - } - - message CreateSourceSinkV2 { - string id = 1; - FullNameV1 name = 2; - StringWrapper size = 3; - string external_type = 4; - } - - message CreateSourceSinkV3 { - string id = 1; - FullNameV1 name = 2; - string external_type = 3; - } - - message CreateSourceSinkV4 { - string id = 1; - StringWrapper cluster_id = 2; - FullNameV1 name = 3; - string external_type = 4; - } - - message CreateIndexV1 { - string id = 1; - string cluster_id = 2; - FullNameV1 name = 3; - } - - message CreateMaterializedViewV1 { - string id = 1; - string cluster_id = 2; - FullNameV1 name = 3; - } - - message AlterSourceSinkV1 { - string id = 1; - FullNameV1 name = 2; - StringWrapper old_size = 3; - StringWrapper new_size = 4; - } - - message AlterSetClusterV1 { - string id = 1; - FullNameV1 name = 2; - StringWrapper old_cluster = 3; - StringWrapper new_cluster = 4; - } - - message GrantRoleV1 { - string role_id = 1; - string member_id = 2; - string grantor_id = 3; - } - - message GrantRoleV2 { - string role_id = 1; - string member_id = 2; - string grantor_id = 3; - string executed_by = 4; - } - - message RevokeRoleV1 { - string role_id = 1; - string member_id = 2; - } - - message RevokeRoleV2 { - string role_id = 1; - string member_id = 2; - string grantor_id = 3; - string executed_by = 4; - } - - message UpdatePrivilegeV1 { - string object_id = 1; - string grantee_id = 2; - string grantor_id = 3; - string privileges = 4; - } - - message AlterDefaultPrivilegeV1 { - string role_id = 1; - StringWrapper database_id = 2; - StringWrapper schema_id = 3; - string grantee_id = 4; - string privileges = 5; - } - - message UpdateOwnerV1 { - string object_id = 1; - string old_owner_id = 2; - string new_owner_id = 3; - } - - message SchemaV1 { - string id = 1; - string name = 2; - string database_name = 3; - } - - message SchemaV2 { - string id = 1; - string name = 2; - StringWrapper database_name = 3; - } - - message RenameSchemaV1 { - string id = 1; - optional string database_name = 2; - string old_name = 3; - string new_name = 4; - } - - message UpdateItemV1 { - string id = 1; - FullNameV1 name = 2; - } - - message AlterRetainHistoryV1 { - string id = 1; - optional string old_history = 2; - optional string new_history = 3; - } - - message ToNewIdV1 { - string id = 1; - string new_id = 2; - } - - message FromPreviousIdV1 { - string id = 1; - string previous_id = 2; - } - - message SetV1 { - string name = 1; - optional string value = 2; - } - - message RotateKeysV1 { - string id = 1; - string name = 2; - } - - uint64 id = 1; - EventType event_type = 2; - ObjectType object_type = 3; - StringWrapper user = 4; - EpochMillis occurred_at = 5; - - // next-id: 40 - oneof details { - CreateClusterReplicaV1 create_cluster_replica_v1 = 6; - CreateClusterReplicaV2 create_cluster_replica_v2 = 33; - CreateClusterReplicaV3 create_cluster_replica_v3 = 41; - DropClusterReplicaV1 drop_cluster_replica_v1 = 7; - DropClusterReplicaV2 drop_cluster_replica_v2 = 34; - DropClusterReplicaV3 drop_cluster_replica_v3 = 42; - CreateSourceSinkV1 create_source_sink_v1 = 8; - CreateSourceSinkV2 create_source_sink_v2 = 9; - AlterSourceSinkV1 alter_source_sink_v1 = 10; - AlterSetClusterV1 alter_set_cluster_v1 = 25; - GrantRoleV1 grant_role_v1 = 11; - GrantRoleV2 grant_role_v2 = 12; - RevokeRoleV1 revoke_role_v1 = 13; - RevokeRoleV2 revoke_role_v2 = 14; - UpdatePrivilegeV1 update_privilege_v1 = 22; - AlterDefaultPrivilegeV1 alter_default_privilege_v1 = 23; - UpdateOwnerV1 update_owner_v1 = 24; - IdFullNameV1 id_full_name_v1 = 15; - RenameClusterV1 rename_cluster_v1 = 20; - RenameClusterReplicaV1 rename_cluster_replica_v1 = 21; - RenameItemV1 rename_item_v1 = 16; - IdNameV1 id_name_v1 = 17; - SchemaV1 schema_v1 = 18; - SchemaV2 schema_v2 = 19; - RenameSchemaV1 rename_schema_v1 = 27; - UpdateItemV1 update_item_v1 = 26; - CreateSourceSinkV3 create_source_sink_v3 = 29; - AlterRetainHistoryV1 alter_retain_history_v1 = 30; - ToNewIdV1 to_new_id_v1 = 31; - FromPreviousIdV1 from_previous_id_v1 = 32; - SetV1 set_v1 = 35; - Empty reset_all_v1 = 36; - RotateKeysV1 rotate_keys_v1 = 37; - CreateSourceSinkV4 create_source_sink_v4 = 38; - CreateIndexV1 create_index_v1 = 39; - CreateMaterializedViewV1 create_materialized_view_v1 = 40; - } -} - -// Wrapper of key-values used by the persist implementation to serialize the catalog. -message StateUpdateKind { - reserved "Epoch"; - - message AuditLog { - AuditLogKey key = 1; - } - - message Cluster { - ClusterKey key = 1; - ClusterValue value = 2; - } - - message ClusterReplica { - ClusterReplicaKey key = 1; - ClusterReplicaValue value = 2; - } - - message Comment { - CommentKey key = 1; - CommentValue value = 2; - } - - message Config { - ConfigKey key = 1; - ConfigValue value = 2; - } - - message Database { - DatabaseKey key = 1; - DatabaseValue value = 2; - } - - message DefaultPrivileges { - DefaultPrivilegesKey key = 1; - DefaultPrivilegesValue value = 2; - } - - message FenceToken { - uint64 deploy_generation = 1; - int64 epoch = 2; - } - - message IdAlloc { - IdAllocKey key = 1; - IdAllocValue value = 2; - } - - message ClusterIntrospectionSourceIndex { - ClusterIntrospectionSourceIndexKey key = 1; - ClusterIntrospectionSourceIndexValue value = 2; - } - - message Item { - ItemKey key = 1; - ItemValue value = 2; - } - - message Role { - RoleKey key = 1; - RoleValue value = 2; - } - - message RoleAuth { - RoleAuthKey key = 1; - RoleAuthValue value = 2; - } - - message NetworkPolicy { - NetworkPolicyKey key = 1; - NetworkPolicyValue value = 2; - } - - message Schema { - SchemaKey key = 1; - SchemaValue value = 2; - } - - message Setting { - SettingKey key = 1; - SettingValue value = 2; - } - - message ServerConfiguration { - ServerConfigurationKey key = 1; - ServerConfigurationValue value = 2; - } - - message SourceReferences { - SourceReferencesKey key = 1; - SourceReferencesValue value = 2; - } - - message GidMapping { - GidMappingKey key = 1; - GidMappingValue value = 2; - } - - message SystemPrivileges { - SystemPrivilegesKey key = 1; - SystemPrivilegesValue value = 2; - } - - message StorageCollectionMetadata { - StorageCollectionMetadataKey key = 1; - StorageCollectionMetadataValue value = 2; - } - - message UnfinalizedShard { - UnfinalizedShardKey key = 1; - } - - message TxnWalShard { - TxnWalShardValue value = 1; - } - - reserved 15; - reserved "storage_usage"; - reserved 19; - reserved "timestamp"; - reserved 22; - reserved "persist_txn_shard"; - reserved 8; - reserved "epoch"; - - oneof kind { - AuditLog audit_log = 1; - Cluster cluster = 2; - ClusterReplica cluster_replica = 3; - Comment comment = 4; - Config config = 5; - Database database = 6; - DefaultPrivileges default_privileges = 7; - IdAlloc id_alloc = 9; - ClusterIntrospectionSourceIndex cluster_introspection_source_index = 10; - Item item = 11; - Role role = 12; - Schema schema = 13; - Setting setting = 14; - ServerConfiguration server_configuration = 16; - GidMapping gid_mapping = 17; - SystemPrivileges system_privileges = 18; - StorageCollectionMetadata storage_collection_metadata = 20; - UnfinalizedShard unfinalized_shard = 21; - TxnWalShard txn_wal_shard = 23; - SourceReferences source_references = 24; - FenceToken fence_token = 25; - NetworkPolicy network_policy = 26; - RoleAuth role_auth = 27; - } -} diff --git a/src/catalog-protos/protos/objects_v75.proto b/src/catalog-protos/protos/objects_v75.proto deleted file mode 100644 index 0ba503c01168e..0000000000000 --- a/src/catalog-protos/protos/objects_v75.proto +++ /dev/null @@ -1,1087 +0,0 @@ -// Copyright Materialize, Inc. and contributors. All rights reserved. -// -// Use of this software is governed by the Business Source License -// included in the LICENSE file. -// -// As of the Change Date specified in that file, in accordance with -// the Business Source License, use of this software will be governed -// by the Apache License, Version 2.0. - -// This protobuf file defines the types we store in the Stash. -// -// Before and after modifying this file, make sure you have a snapshot of the before version, -// e.g. a copy of this file named 'objects_v{CATALOG_VERSION}.proto', and a snapshot of the file -// after your modifications, e.g. 'objects_v{CATALOG_VERSION + 1}.proto'. Then you can write a -// migration using these two files, and no matter how the types change in the future, we'll always -// have these snapshots to facilitate the migration. - -// buf breaking: ignore (does currently not require backward-compatibility) - -syntax = "proto3"; - -package objects_v75; - -message ConfigKey { - string key = 1; -} - -message ConfigValue { - uint64 value = 1; -} - -message SettingKey { - string name = 1; -} - -message SettingValue { - string value = 1; -} - -message IdAllocKey { - string name = 1; -} - -message IdAllocValue { - uint64 next_id = 1; -} - -message GidMappingKey { - string schema_name = 1; - CatalogItemType object_type = 2; - string object_name = 3; -} - -message GidMappingValue { - // TODO(parkmycar): Ideally this is a SystemCatalogItemId but making this change panics 0dt - // upgrades if there were new builtin objects added since the older version of Materialize - // doesn't know how to read the new SystemCatalogItemId type. - uint64 id = 1; - string fingerprint = 2; - SystemGlobalId global_id = 3; -} - -message ClusterKey { - ClusterId id = 1; -} - -message ClusterValue { - reserved 2; - string name = 1; - RoleId owner_id = 3; - repeated MzAclItem privileges = 4; - ClusterConfig config = 5; -} - -message ClusterIntrospectionSourceIndexKey { - ClusterId cluster_id = 1; - string name = 2; -} - -message ClusterIntrospectionSourceIndexValue { - // TODO(parkmycar): Ideally this is a IntrospectionSourceCatalogItemId but making this change panics 0dt - // upgrades if there were new builtin objects added since the older version of Materialize - // doesn't know how to read the new IntrospectionSourceCatalogItemId type. - uint64 index_id = 1; - uint32 oid = 2; - IntrospectionSourceIndexGlobalId global_id = 3; -} - -message ClusterReplicaKey { - ReplicaId id = 1; -} - -message ClusterReplicaValue { - ClusterId cluster_id = 1; - string name = 2; - ReplicaConfig config = 3; - RoleId owner_id = 4; -} - -message DatabaseKey { - DatabaseId id = 1; -} - -message DatabaseValue { - string name = 1; - RoleId owner_id = 2; - repeated MzAclItem privileges = 3; - uint32 oid = 4; -} - -message SchemaKey { - SchemaId id = 1; -} - -message SchemaValue { - DatabaseId database_id = 1; - string name = 2; - RoleId owner_id = 3; - repeated MzAclItem privileges = 4; - uint32 oid = 5; -} - -message ItemKey { - CatalogItemId gid = 1; -} - -message ItemValue { - SchemaId schema_id = 1; - string name = 2; - CatalogItem definition = 3; - RoleId owner_id = 4; - repeated MzAclItem privileges = 5; - uint32 oid = 6; - GlobalId global_id = 7; - repeated ItemVersion extra_versions = 8; -} - -message ItemVersion { - GlobalId global_id = 1; - Version version = 2; -} - -message RoleKey { - RoleId id = 1; -} - -message RoleValue { - string name = 1; - RoleAttributes attributes = 2; - RoleMembership membership = 3; - RoleVars vars = 4; - uint32 oid = 5; -} - -message RoleAuthKey { - RoleId id = 1; -} - -message RoleAuthValue { - optional string password_hash = 1; - EpochMillis updated_at = 2; -} - -message NetworkPolicyKey { - NetworkPolicyId id = 1; -} - -message NetworkPolicyValue { - string name = 1; - repeated NetworkPolicyRule rules = 2; - RoleId owner_id = 3; - repeated MzAclItem privileges = 4; - uint32 oid = 5; -} - -message ServerConfigurationKey { - string name = 1; -} - -message ServerConfigurationValue { - string value = 1; -} - -message AuditLogKey { - oneof event { - AuditLogEventV1 v1 = 1; - } -} - -message CommentKey { - oneof object { - CatalogItemId table = 1; - CatalogItemId view = 2; - CatalogItemId materialized_view = 4; - CatalogItemId source = 5; - CatalogItemId sink = 6; - CatalogItemId index = 7; - CatalogItemId func = 8; - CatalogItemId connection = 9; - CatalogItemId type = 10; - CatalogItemId secret = 11; - CatalogItemId continual_task = 17; - RoleId role = 12; - DatabaseId database = 13; - ResolvedSchema schema = 14; - ClusterId cluster = 15; - ClusterReplicaId cluster_replica = 16; - NetworkPolicyId network_policy = 18; - } - oneof sub_component { - uint64 column_pos = 3; - } -} - -message CommentValue { - string comment = 1; -} - -message SourceReferencesKey { - CatalogItemId source = 1; -} - -message SourceReferencesValue { - repeated SourceReference references = 1; - EpochMillis updated_at = 2; -} - -message SourceReference { - string name = 1; - optional string namespace = 2; - repeated string columns = 3; -} - -message StorageCollectionMetadataKey { - GlobalId id = 1; -} - -// This value is stored transparently, however, it should only ever be -// manipulated by the storage controller. -message StorageCollectionMetadataValue { - string shard = 1; -} - -// This value is stored transparently, however, it should only ever be -// manipulated by the storage controller. -message UnfinalizedShardKey { - string shard = 1; -} - -// This value is stored transparently, however, it should only ever be -// manipulated by the storage controller. -message TxnWalShardValue { - string shard = 1; -} - -// ---- Common Types -// -// Note: Normally types like this would go in some sort of `common.proto` file, but we want to keep -// our proto definitions in a single file to make snapshotting easier, hence them living here. - -message Empty { - /* purposefully empty */ -} - -// In protobuf a "None" string is the same thing as an empty string. To get the same semantics of -// an `Option` from Rust, we need to wrap a string in a message. -message StringWrapper { - string inner = 1; -} - -message Duration { - uint64 secs = 1; - uint32 nanos = 2; -} - -message EpochMillis { - uint64 millis = 1; -} - -// Opaque timestamp type that is specific to Materialize. -message Timestamp { - uint64 internal = 1; -} - -message Version { - uint64 value = 2; -} - -enum CatalogItemType { - CATALOG_ITEM_TYPE_UNKNOWN = 0; - CATALOG_ITEM_TYPE_TABLE = 1; - CATALOG_ITEM_TYPE_SOURCE = 2; - CATALOG_ITEM_TYPE_SINK = 3; - CATALOG_ITEM_TYPE_VIEW = 4; - CATALOG_ITEM_TYPE_MATERIALIZED_VIEW = 5; - CATALOG_ITEM_TYPE_INDEX = 6; - CATALOG_ITEM_TYPE_TYPE = 7; - CATALOG_ITEM_TYPE_FUNC = 8; - CATALOG_ITEM_TYPE_SECRET = 9; - CATALOG_ITEM_TYPE_CONNECTION = 10; - CATALOG_ITEM_TYPE_CONTINUAL_TASK = 11; -} - -message CatalogItem { - message V1 { - string create_sql = 1; - } - - oneof value { - V1 v1 = 1; - } -} - -message CatalogItemId { - oneof value { - uint64 system = 1; - uint64 user = 2; - uint64 transient = 3; - uint64 introspection_source_index = 4; - } -} - -/// A newtype wrapper for a `CatalogItemId` that is always in the "system" namespace. -message SystemCatalogItemId { - uint64 value = 1; -} - -/// A newtype wrapper for a `CatalogItemId` that is always in the "introspection source index" namespace. -message IntrospectionSourceIndexCatalogItemId { - uint64 value = 1; -} - -message GlobalId { - oneof value { - uint64 system = 1; - uint64 user = 2; - uint64 transient = 3; - Empty explain = 4; - uint64 introspection_source_index = 5; - } -} - -/// A newtype wrapper for a `GlobalId` that is always in the "system" namespace. -message SystemGlobalId { - uint64 value = 1; -} - -/// A newtype wrapper for a `GlobalId` that is always in the "introspection source index" namespace. -message IntrospectionSourceIndexGlobalId { - uint64 value = 1; -} - -message ClusterId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message DatabaseId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message ResolvedDatabaseSpecifier { - oneof spec { - Empty ambient = 1; - DatabaseId id = 2; - } -} - -message SchemaId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message SchemaSpecifier { - oneof spec { - Empty temporary = 1; - SchemaId id = 2; - } -} - -message ResolvedSchema { - ResolvedDatabaseSpecifier database = 1; - SchemaSpecifier schema = 2; -} - -message ReplicaId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message ClusterReplicaId { - ClusterId cluster_id = 1; - ReplicaId replica_id = 2; -} - -message NetworkPolicyId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message ReplicaLogging { - bool log_logging = 1; - Duration interval = 2; -} - -message OptimizerFeatureOverride { - string name = 1; - string value = 2; -} - -message ClusterScheduleRefreshOptions { - Duration rehydration_time_estimate = 1; -} - -message ClusterSchedule { - oneof value { - Empty manual = 1; - ClusterScheduleRefreshOptions refresh = 2; - } -} - -message ClusterConfig { - message ManagedCluster { - string size = 1; - uint32 replication_factor = 2; - repeated string availability_zones = 3; - ReplicaLogging logging = 4; - bool disk = 6; - repeated OptimizerFeatureOverride optimizer_feature_overrides = 7; - ClusterSchedule schedule = 8; - } - - oneof variant { - Empty unmanaged = 1; - ManagedCluster managed = 2; - } - optional string workload_class = 3; -} - -message ReplicaConfig { - message UnmanagedLocation { - repeated string storagectl_addrs = 1; - repeated string computectl_addrs = 3; - } - - message ManagedLocation { - string size = 1; - optional string availability_zone = 2; - bool disk = 4; - bool internal = 5; - optional string billed_as = 6; - bool pending = 7; - } - - oneof location { - UnmanagedLocation unmanaged = 1; - ManagedLocation managed = 2; - } - ReplicaLogging logging = 3; -} - -message RoleId { - oneof value { - uint64 system = 1; - uint64 user = 2; - Empty public = 3; - uint64 predefined = 4; - } -} - -message RoleAttributes { - bool inherit = 1; - optional bool superuser = 2; - optional bool login = 3; -} - -message RoleMembership { - message Entry { - RoleId key = 1; - RoleId value = 2; - } - - repeated Entry map = 1; -} - -message RoleVars { - message SqlSet { - repeated string entries = 1; - } - - message Entry { - string key = 1; - oneof val { - string flat = 2; - SqlSet sql_set = 3; - } - } - - repeated Entry entries = 1; -} - -message NetworkPolicyRule { - string name = 1; - oneof action { - Empty allow = 2; - } - oneof direction { - Empty ingress = 3; - } - string address = 4; -} - -message AclMode { - // A bit flag representing all the privileges that can be granted to a role. - uint64 bitflags = 1; -} - -message MzAclItem { - RoleId grantee = 1; - RoleId grantor = 2; - AclMode acl_mode = 3; -} - -enum ObjectType { - OBJECT_TYPE_UNKNOWN = 0; - OBJECT_TYPE_TABLE = 1; - OBJECT_TYPE_VIEW = 2; - OBJECT_TYPE_MATERIALIZED_VIEW = 3; - OBJECT_TYPE_SOURCE = 4; - OBJECT_TYPE_SINK = 5; - OBJECT_TYPE_INDEX = 6; - OBJECT_TYPE_TYPE = 7; - OBJECT_TYPE_ROLE = 8; - OBJECT_TYPE_CLUSTER = 9; - OBJECT_TYPE_CLUSTER_REPLICA = 10; - OBJECT_TYPE_SECRET = 11; - OBJECT_TYPE_CONNECTION = 12; - OBJECT_TYPE_DATABASE = 13; - OBJECT_TYPE_SCHEMA = 14; - OBJECT_TYPE_FUNC = 15; - OBJECT_TYPE_CONTINUAL_TASK = 16; - OBJECT_TYPE_NETWORK_POLICY = 17; -} - -message DefaultPrivilegesKey { - RoleId role_id = 1; - DatabaseId database_id = 2; - SchemaId schema_id = 3; - ObjectType object_type = 4; - RoleId grantee = 5; -} - -message DefaultPrivilegesValue { - AclMode privileges = 1; -} - -message SystemPrivilegesKey { - RoleId grantee = 1; - RoleId grantor = 2; -} - -message SystemPrivilegesValue { - AclMode acl_mode = 1; -} - -message AuditLogEventV1 { - enum EventType { - EVENT_TYPE_UNKNOWN = 0; - EVENT_TYPE_CREATE = 1; - EVENT_TYPE_DROP = 2; - EVENT_TYPE_ALTER = 3; - EVENT_TYPE_GRANT = 4; - EVENT_TYPE_REVOKE = 5; - EVENT_TYPE_COMMENT = 6; - } - - enum ObjectType { - OBJECT_TYPE_UNKNOWN = 0; - OBJECT_TYPE_CLUSTER = 1; - OBJECT_TYPE_CLUSTER_REPLICA = 2; - OBJECT_TYPE_CONNECTION = 3; - OBJECT_TYPE_DATABASE = 4; - OBJECT_TYPE_FUNC = 5; - OBJECT_TYPE_INDEX = 6; - OBJECT_TYPE_MATERIALIZED_VIEW = 7; - OBJECT_TYPE_ROLE = 8; - OBJECT_TYPE_SECRET = 9; - OBJECT_TYPE_SCHEMA = 10; - OBJECT_TYPE_SINK = 11; - OBJECT_TYPE_SOURCE = 12; - OBJECT_TYPE_TABLE = 13; - OBJECT_TYPE_TYPE = 14; - OBJECT_TYPE_VIEW = 15; - OBJECT_TYPE_SYSTEM = 16; - OBJECT_TYPE_CONTINUAL_TASK = 17; - OBJECT_TYPE_NETWORK_POLICY = 18; - } - - message IdFullNameV1 { - string id = 1; - FullNameV1 name = 2; - } - - message FullNameV1 { - string database = 1; - string schema = 2; - string item = 3; - } - - message IdNameV1 { - string id = 1; - string name = 2; - } - - message RenameClusterV1 { - string id = 1; - string old_name = 2; - string new_name = 3; - } - - message RenameClusterReplicaV1 { - string cluster_id = 1; - string replica_id = 2; - string old_name = 3; - string new_name = 4; - } - - message RenameItemV1 { - string id = 1; - FullNameV1 old_name = 2; - FullNameV1 new_name = 3; - } - - message CreateClusterReplicaV1 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - string logical_size = 5; - bool disk = 6; - optional string billed_as = 7; - bool internal = 8; - } - - message CreateClusterReplicaV2 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - string logical_size = 5; - bool disk = 6; - optional string billed_as = 7; - bool internal = 8; - CreateOrDropClusterReplicaReasonV1 reason = 9; - SchedulingDecisionsWithReasonsV1 scheduling_policies = 10; - } - - message CreateClusterReplicaV3 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - string logical_size = 5; - bool disk = 6; - optional string billed_as = 7; - bool internal = 8; - CreateOrDropClusterReplicaReasonV1 reason = 9; - SchedulingDecisionsWithReasonsV2 scheduling_policies = 10; - } - - message DropClusterReplicaV1 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - } - - message DropClusterReplicaV2 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - CreateOrDropClusterReplicaReasonV1 reason = 5; - SchedulingDecisionsWithReasonsV1 scheduling_policies = 6; - } - - message DropClusterReplicaV3 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - CreateOrDropClusterReplicaReasonV1 reason = 5; - SchedulingDecisionsWithReasonsV2 scheduling_policies = 6; - } - - message CreateOrDropClusterReplicaReasonV1 { - oneof reason { - Empty Manual = 1; - Empty Schedule = 2; - Empty System = 3; - } - } - - message SchedulingDecisionsWithReasonsV1 { - RefreshDecisionWithReasonV1 on_refresh = 1; - } - - message SchedulingDecisionsWithReasonsV2 { - RefreshDecisionWithReasonV2 on_refresh = 1; - } - - message RefreshDecisionWithReasonV1 { - oneof decision { - Empty On = 1; - Empty Off = 2; - } - repeated string objects_needing_refresh = 3; - string rehydration_time_estimate = 4; - } - - message RefreshDecisionWithReasonV2 { - oneof decision { - Empty On = 1; - Empty Off = 2; - } - repeated string objects_needing_refresh = 3; - repeated string objects_needing_compaction = 5; - string rehydration_time_estimate = 4; - } - - message CreateSourceSinkV1 { - string id = 1; - FullNameV1 name = 2; - StringWrapper size = 3; - } - - message CreateSourceSinkV2 { - string id = 1; - FullNameV1 name = 2; - StringWrapper size = 3; - string external_type = 4; - } - - message CreateSourceSinkV3 { - string id = 1; - FullNameV1 name = 2; - string external_type = 3; - } - - message CreateSourceSinkV4 { - string id = 1; - StringWrapper cluster_id = 2; - FullNameV1 name = 3; - string external_type = 4; - } - - message CreateIndexV1 { - string id = 1; - string cluster_id = 2; - FullNameV1 name = 3; - } - - message CreateMaterializedViewV1 { - string id = 1; - string cluster_id = 2; - FullNameV1 name = 3; - } - - message AlterSourceSinkV1 { - string id = 1; - FullNameV1 name = 2; - StringWrapper old_size = 3; - StringWrapper new_size = 4; - } - - message AlterSetClusterV1 { - string id = 1; - FullNameV1 name = 2; - StringWrapper old_cluster = 3; - StringWrapper new_cluster = 4; - } - - message GrantRoleV1 { - string role_id = 1; - string member_id = 2; - string grantor_id = 3; - } - - message GrantRoleV2 { - string role_id = 1; - string member_id = 2; - string grantor_id = 3; - string executed_by = 4; - } - - message RevokeRoleV1 { - string role_id = 1; - string member_id = 2; - } - - message RevokeRoleV2 { - string role_id = 1; - string member_id = 2; - string grantor_id = 3; - string executed_by = 4; - } - - message UpdatePrivilegeV1 { - string object_id = 1; - string grantee_id = 2; - string grantor_id = 3; - string privileges = 4; - } - - message AlterDefaultPrivilegeV1 { - string role_id = 1; - StringWrapper database_id = 2; - StringWrapper schema_id = 3; - string grantee_id = 4; - string privileges = 5; - } - - message UpdateOwnerV1 { - string object_id = 1; - string old_owner_id = 2; - string new_owner_id = 3; - } - - message SchemaV1 { - string id = 1; - string name = 2; - string database_name = 3; - } - - message SchemaV2 { - string id = 1; - string name = 2; - StringWrapper database_name = 3; - } - - message RenameSchemaV1 { - string id = 1; - optional string database_name = 2; - string old_name = 3; - string new_name = 4; - } - - message UpdateItemV1 { - string id = 1; - FullNameV1 name = 2; - } - - message AlterRetainHistoryV1 { - string id = 1; - optional string old_history = 2; - optional string new_history = 3; - } - - message ToNewIdV1 { - string id = 1; - string new_id = 2; - } - - message FromPreviousIdV1 { - string id = 1; - string previous_id = 2; - } - - message SetV1 { - string name = 1; - optional string value = 2; - } - - message RotateKeysV1 { - string id = 1; - string name = 2; - } - - uint64 id = 1; - EventType event_type = 2; - ObjectType object_type = 3; - StringWrapper user = 4; - EpochMillis occurred_at = 5; - - // next-id: 40 - oneof details { - CreateClusterReplicaV1 create_cluster_replica_v1 = 6; - CreateClusterReplicaV2 create_cluster_replica_v2 = 33; - CreateClusterReplicaV3 create_cluster_replica_v3 = 41; - DropClusterReplicaV1 drop_cluster_replica_v1 = 7; - DropClusterReplicaV2 drop_cluster_replica_v2 = 34; - DropClusterReplicaV3 drop_cluster_replica_v3 = 42; - CreateSourceSinkV1 create_source_sink_v1 = 8; - CreateSourceSinkV2 create_source_sink_v2 = 9; - AlterSourceSinkV1 alter_source_sink_v1 = 10; - AlterSetClusterV1 alter_set_cluster_v1 = 25; - GrantRoleV1 grant_role_v1 = 11; - GrantRoleV2 grant_role_v2 = 12; - RevokeRoleV1 revoke_role_v1 = 13; - RevokeRoleV2 revoke_role_v2 = 14; - UpdatePrivilegeV1 update_privilege_v1 = 22; - AlterDefaultPrivilegeV1 alter_default_privilege_v1 = 23; - UpdateOwnerV1 update_owner_v1 = 24; - IdFullNameV1 id_full_name_v1 = 15; - RenameClusterV1 rename_cluster_v1 = 20; - RenameClusterReplicaV1 rename_cluster_replica_v1 = 21; - RenameItemV1 rename_item_v1 = 16; - IdNameV1 id_name_v1 = 17; - SchemaV1 schema_v1 = 18; - SchemaV2 schema_v2 = 19; - RenameSchemaV1 rename_schema_v1 = 27; - UpdateItemV1 update_item_v1 = 26; - CreateSourceSinkV3 create_source_sink_v3 = 29; - AlterRetainHistoryV1 alter_retain_history_v1 = 30; - ToNewIdV1 to_new_id_v1 = 31; - FromPreviousIdV1 from_previous_id_v1 = 32; - SetV1 set_v1 = 35; - Empty reset_all_v1 = 36; - RotateKeysV1 rotate_keys_v1 = 37; - CreateSourceSinkV4 create_source_sink_v4 = 38; - CreateIndexV1 create_index_v1 = 39; - CreateMaterializedViewV1 create_materialized_view_v1 = 40; - } -} - -// Wrapper of key-values used by the persist implementation to serialize the catalog. -message StateUpdateKind { - reserved "Epoch"; - - message AuditLog { - AuditLogKey key = 1; - } - - message Cluster { - ClusterKey key = 1; - ClusterValue value = 2; - } - - message ClusterReplica { - ClusterReplicaKey key = 1; - ClusterReplicaValue value = 2; - } - - message Comment { - CommentKey key = 1; - CommentValue value = 2; - } - - message Config { - ConfigKey key = 1; - ConfigValue value = 2; - } - - message Database { - DatabaseKey key = 1; - DatabaseValue value = 2; - } - - message DefaultPrivileges { - DefaultPrivilegesKey key = 1; - DefaultPrivilegesValue value = 2; - } - - message FenceToken { - uint64 deploy_generation = 1; - int64 epoch = 2; - } - - message IdAlloc { - IdAllocKey key = 1; - IdAllocValue value = 2; - } - - message ClusterIntrospectionSourceIndex { - ClusterIntrospectionSourceIndexKey key = 1; - ClusterIntrospectionSourceIndexValue value = 2; - } - - message Item { - ItemKey key = 1; - ItemValue value = 2; - } - - message Role { - RoleKey key = 1; - RoleValue value = 2; - } - - message RoleAuth { - RoleAuthKey key = 1; - RoleAuthValue value = 2; - } - - message NetworkPolicy { - NetworkPolicyKey key = 1; - NetworkPolicyValue value = 2; - } - - message Schema { - SchemaKey key = 1; - SchemaValue value = 2; - } - - message Setting { - SettingKey key = 1; - SettingValue value = 2; - } - - message ServerConfiguration { - ServerConfigurationKey key = 1; - ServerConfigurationValue value = 2; - } - - message SourceReferences { - SourceReferencesKey key = 1; - SourceReferencesValue value = 2; - } - - message GidMapping { - GidMappingKey key = 1; - GidMappingValue value = 2; - } - - message SystemPrivileges { - SystemPrivilegesKey key = 1; - SystemPrivilegesValue value = 2; - } - - message StorageCollectionMetadata { - StorageCollectionMetadataKey key = 1; - StorageCollectionMetadataValue value = 2; - } - - message UnfinalizedShard { - UnfinalizedShardKey key = 1; - } - - message TxnWalShard { - TxnWalShardValue value = 1; - } - - reserved 15; - reserved "storage_usage"; - reserved 19; - reserved "timestamp"; - reserved 22; - reserved "persist_txn_shard"; - reserved 8; - reserved "epoch"; - - oneof kind { - AuditLog audit_log = 1; - Cluster cluster = 2; - ClusterReplica cluster_replica = 3; - Comment comment = 4; - Config config = 5; - Database database = 6; - DefaultPrivileges default_privileges = 7; - IdAlloc id_alloc = 9; - ClusterIntrospectionSourceIndex cluster_introspection_source_index = 10; - Item item = 11; - Role role = 12; - Schema schema = 13; - Setting setting = 14; - ServerConfiguration server_configuration = 16; - GidMapping gid_mapping = 17; - SystemPrivileges system_privileges = 18; - StorageCollectionMetadata storage_collection_metadata = 20; - UnfinalizedShard unfinalized_shard = 21; - TxnWalShard txn_wal_shard = 23; - SourceReferences source_references = 24; - FenceToken fence_token = 25; - NetworkPolicy network_policy = 26; - RoleAuth role_auth = 27; - } -} diff --git a/src/catalog-protos/protos/objects_v76.proto b/src/catalog-protos/protos/objects_v76.proto deleted file mode 100644 index d5506fbe9b9ac..0000000000000 --- a/src/catalog-protos/protos/objects_v76.proto +++ /dev/null @@ -1,1097 +0,0 @@ -// Copyright Materialize, Inc. and contributors. All rights reserved. -// -// Use of this software is governed by the Business Source License -// included in the LICENSE file. -// -// As of the Change Date specified in that file, in accordance with -// the Business Source License, use of this software will be governed -// by the Apache License, Version 2.0. - -// This protobuf file defines the types we store in the Stash. -// -// Before and after modifying this file, make sure you have a snapshot of the before version, -// e.g. a copy of this file named 'objects_v{CATALOG_VERSION}.proto', and a snapshot of the file -// after your modifications, e.g. 'objects_v{CATALOG_VERSION + 1}.proto'. Then you can write a -// migration using these two files, and no matter how the types change in the future, we'll always -// have these snapshots to facilitate the migration. - -// buf breaking: ignore (does currently not require backward-compatibility) - -syntax = "proto3"; - -package objects_v76; - -message ConfigKey { - string key = 1; -} - -message ConfigValue { - uint64 value = 1; -} - -message SettingKey { - string name = 1; -} - -message SettingValue { - string value = 1; -} - -message IdAllocKey { - string name = 1; -} - -message IdAllocValue { - uint64 next_id = 1; -} - -message GidMappingKey { - string schema_name = 1; - CatalogItemType object_type = 2; - string object_name = 3; -} - -message GidMappingValue { - // TODO(parkmycar): Ideally this is a SystemCatalogItemId but making this change panics 0dt - // upgrades if there were new builtin objects added since the older version of Materialize - // doesn't know how to read the new SystemCatalogItemId type. - uint64 id = 1; - string fingerprint = 2; - SystemGlobalId global_id = 3; -} - -message ClusterKey { - ClusterId id = 1; -} - -message ClusterValue { - reserved 2; - string name = 1; - RoleId owner_id = 3; - repeated MzAclItem privileges = 4; - ClusterConfig config = 5; -} - -message ClusterIntrospectionSourceIndexKey { - ClusterId cluster_id = 1; - string name = 2; -} - -message ClusterIntrospectionSourceIndexValue { - // TODO(parkmycar): Ideally this is a IntrospectionSourceCatalogItemId but making this change panics 0dt - // upgrades if there were new builtin objects added since the older version of Materialize - // doesn't know how to read the new IntrospectionSourceCatalogItemId type. - uint64 index_id = 1; - uint32 oid = 2; - IntrospectionSourceIndexGlobalId global_id = 3; -} - -message ClusterReplicaKey { - ReplicaId id = 1; -} - -message ClusterReplicaValue { - ClusterId cluster_id = 1; - string name = 2; - ReplicaConfig config = 3; - RoleId owner_id = 4; -} - -message DatabaseKey { - DatabaseId id = 1; -} - -message DatabaseValue { - string name = 1; - RoleId owner_id = 2; - repeated MzAclItem privileges = 3; - uint32 oid = 4; -} - -message SchemaKey { - SchemaId id = 1; -} - -message SchemaValue { - DatabaseId database_id = 1; - string name = 2; - RoleId owner_id = 3; - repeated MzAclItem privileges = 4; - uint32 oid = 5; -} - -message ItemKey { - CatalogItemId gid = 1; -} - -message ItemValue { - SchemaId schema_id = 1; - string name = 2; - CatalogItem definition = 3; - RoleId owner_id = 4; - repeated MzAclItem privileges = 5; - uint32 oid = 6; - GlobalId global_id = 7; - repeated ItemVersion extra_versions = 8; -} - -message ItemVersion { - GlobalId global_id = 1; - Version version = 2; -} - -message RoleKey { - RoleId id = 1; -} - -message RoleValue { - string name = 1; - RoleAttributes attributes = 2; - RoleMembership membership = 3; - RoleVars vars = 4; - uint32 oid = 5; -} - -message RoleAuthKey { - RoleId id = 1; -} - -message RoleAuthValue { - optional string password_hash = 1; - EpochMillis updated_at = 2; -} - -message NetworkPolicyKey { - NetworkPolicyId id = 1; -} - -message NetworkPolicyValue { - string name = 1; - repeated NetworkPolicyRule rules = 2; - RoleId owner_id = 3; - repeated MzAclItem privileges = 4; - uint32 oid = 5; -} - -message ServerConfigurationKey { - string name = 1; -} - -message ServerConfigurationValue { - string value = 1; -} - -message AuditLogKey { - oneof event { - AuditLogEventV1 v1 = 1; - } -} - -message CommentKey { - oneof object { - CatalogItemId table = 1; - CatalogItemId view = 2; - CatalogItemId materialized_view = 4; - CatalogItemId source = 5; - CatalogItemId sink = 6; - CatalogItemId index = 7; - CatalogItemId func = 8; - CatalogItemId connection = 9; - CatalogItemId type = 10; - CatalogItemId secret = 11; - CatalogItemId continual_task = 17; - RoleId role = 12; - DatabaseId database = 13; - ResolvedSchema schema = 14; - ClusterId cluster = 15; - ClusterReplicaId cluster_replica = 16; - NetworkPolicyId network_policy = 18; - } - oneof sub_component { - uint64 column_pos = 3; - } -} - -message CommentValue { - string comment = 1; -} - -message SourceReferencesKey { - CatalogItemId source = 1; -} - -message SourceReferencesValue { - repeated SourceReference references = 1; - EpochMillis updated_at = 2; -} - -message SourceReference { - string name = 1; - optional string namespace = 2; - repeated string columns = 3; -} - -message StorageCollectionMetadataKey { - GlobalId id = 1; -} - -// This value is stored transparently, however, it should only ever be -// manipulated by the storage controller. -message StorageCollectionMetadataValue { - string shard = 1; -} - -// This value is stored transparently, however, it should only ever be -// manipulated by the storage controller. -message UnfinalizedShardKey { - string shard = 1; -} - -// This value is stored transparently, however, it should only ever be -// manipulated by the storage controller. -message TxnWalShardValue { - string shard = 1; -} - -// ---- Common Types -// -// Note: Normally types like this would go in some sort of `common.proto` file, but we want to keep -// our proto definitions in a single file to make snapshotting easier, hence them living here. - -message Empty { - /* purposefully empty */ -} - -// In protobuf a "None" string is the same thing as an empty string. To get the same semantics of -// an `Option` from Rust, we need to wrap a string in a message. -message StringWrapper { - string inner = 1; -} - -message Duration { - uint64 secs = 1; - uint32 nanos = 2; -} - -message EpochMillis { - uint64 millis = 1; -} - -// Opaque timestamp type that is specific to Materialize. -message Timestamp { - uint64 internal = 1; -} - -message Version { - uint64 value = 2; -} - -enum CatalogItemType { - CATALOG_ITEM_TYPE_UNKNOWN = 0; - CATALOG_ITEM_TYPE_TABLE = 1; - CATALOG_ITEM_TYPE_SOURCE = 2; - CATALOG_ITEM_TYPE_SINK = 3; - CATALOG_ITEM_TYPE_VIEW = 4; - CATALOG_ITEM_TYPE_MATERIALIZED_VIEW = 5; - CATALOG_ITEM_TYPE_INDEX = 6; - CATALOG_ITEM_TYPE_TYPE = 7; - CATALOG_ITEM_TYPE_FUNC = 8; - CATALOG_ITEM_TYPE_SECRET = 9; - CATALOG_ITEM_TYPE_CONNECTION = 10; - CATALOG_ITEM_TYPE_CONTINUAL_TASK = 11; -} - -message CatalogItem { - message V1 { - string create_sql = 1; - } - - oneof value { - V1 v1 = 1; - } -} - -message CatalogItemId { - oneof value { - uint64 system = 1; - uint64 user = 2; - uint64 transient = 3; - uint64 introspection_source_index = 4; - } -} - -/// A newtype wrapper for a `CatalogItemId` that is always in the "system" namespace. -message SystemCatalogItemId { - uint64 value = 1; -} - -/// A newtype wrapper for a `CatalogItemId` that is always in the "introspection source index" namespace. -message IntrospectionSourceIndexCatalogItemId { - uint64 value = 1; -} - -message GlobalId { - oneof value { - uint64 system = 1; - uint64 user = 2; - uint64 transient = 3; - Empty explain = 4; - uint64 introspection_source_index = 5; - } -} - -/// A newtype wrapper for a `GlobalId` that is always in the "system" namespace. -message SystemGlobalId { - uint64 value = 1; -} - -/// A newtype wrapper for a `GlobalId` that is always in the "introspection source index" namespace. -message IntrospectionSourceIndexGlobalId { - uint64 value = 1; -} - -message ClusterId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message DatabaseId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message ResolvedDatabaseSpecifier { - oneof spec { - Empty ambient = 1; - DatabaseId id = 2; - } -} - -message SchemaId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message SchemaSpecifier { - oneof spec { - Empty temporary = 1; - SchemaId id = 2; - } -} - -message ResolvedSchema { - ResolvedDatabaseSpecifier database = 1; - SchemaSpecifier schema = 2; -} - -message ReplicaId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message ClusterReplicaId { - ClusterId cluster_id = 1; - ReplicaId replica_id = 2; -} - -message NetworkPolicyId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message ReplicaLogging { - bool log_logging = 1; - Duration interval = 2; -} - -message OptimizerFeatureOverride { - string name = 1; - string value = 2; -} - -message ClusterScheduleRefreshOptions { - Duration rehydration_time_estimate = 1; -} - -message ClusterSchedule { - oneof value { - Empty manual = 1; - ClusterScheduleRefreshOptions refresh = 2; - } -} - -message ClusterConfig { - message ManagedCluster { - string size = 1; - uint32 replication_factor = 2; - repeated string availability_zones = 3; - ReplicaLogging logging = 4; - repeated OptimizerFeatureOverride optimizer_feature_overrides = 7; - ClusterSchedule schedule = 8; - } - - oneof variant { - Empty unmanaged = 1; - ManagedCluster managed = 2; - } - optional string workload_class = 3; -} - -message ReplicaConfig { - message UnmanagedLocation { - repeated string storagectl_addrs = 1; - repeated string computectl_addrs = 3; - } - - message ManagedLocation { - string size = 1; - optional string availability_zone = 2; - bool internal = 5; - optional string billed_as = 6; - bool pending = 7; - } - - oneof location { - UnmanagedLocation unmanaged = 1; - ManagedLocation managed = 2; - } - ReplicaLogging logging = 3; -} - -message RoleId { - oneof value { - uint64 system = 1; - uint64 user = 2; - Empty public = 3; - uint64 predefined = 4; - } -} - -message RoleAttributes { - bool inherit = 1; - optional bool superuser = 2; - optional bool login = 3; -} - -message RoleMembership { - message Entry { - RoleId key = 1; - RoleId value = 2; - } - - repeated Entry map = 1; -} - -message RoleVars { - message SqlSet { - repeated string entries = 1; - } - - message Entry { - string key = 1; - oneof val { - string flat = 2; - SqlSet sql_set = 3; - } - } - - repeated Entry entries = 1; -} - -message NetworkPolicyRule { - string name = 1; - oneof action { - Empty allow = 2; - } - oneof direction { - Empty ingress = 3; - } - string address = 4; -} - -message AclMode { - // A bit flag representing all the privileges that can be granted to a role. - uint64 bitflags = 1; -} - -message MzAclItem { - RoleId grantee = 1; - RoleId grantor = 2; - AclMode acl_mode = 3; -} - -enum ObjectType { - OBJECT_TYPE_UNKNOWN = 0; - OBJECT_TYPE_TABLE = 1; - OBJECT_TYPE_VIEW = 2; - OBJECT_TYPE_MATERIALIZED_VIEW = 3; - OBJECT_TYPE_SOURCE = 4; - OBJECT_TYPE_SINK = 5; - OBJECT_TYPE_INDEX = 6; - OBJECT_TYPE_TYPE = 7; - OBJECT_TYPE_ROLE = 8; - OBJECT_TYPE_CLUSTER = 9; - OBJECT_TYPE_CLUSTER_REPLICA = 10; - OBJECT_TYPE_SECRET = 11; - OBJECT_TYPE_CONNECTION = 12; - OBJECT_TYPE_DATABASE = 13; - OBJECT_TYPE_SCHEMA = 14; - OBJECT_TYPE_FUNC = 15; - OBJECT_TYPE_CONTINUAL_TASK = 16; - OBJECT_TYPE_NETWORK_POLICY = 17; -} - -message DefaultPrivilegesKey { - RoleId role_id = 1; - DatabaseId database_id = 2; - SchemaId schema_id = 3; - ObjectType object_type = 4; - RoleId grantee = 5; -} - -message DefaultPrivilegesValue { - AclMode privileges = 1; -} - -message SystemPrivilegesKey { - RoleId grantee = 1; - RoleId grantor = 2; -} - -message SystemPrivilegesValue { - AclMode acl_mode = 1; -} - -message AuditLogEventV1 { - enum EventType { - EVENT_TYPE_UNKNOWN = 0; - EVENT_TYPE_CREATE = 1; - EVENT_TYPE_DROP = 2; - EVENT_TYPE_ALTER = 3; - EVENT_TYPE_GRANT = 4; - EVENT_TYPE_REVOKE = 5; - EVENT_TYPE_COMMENT = 6; - } - - enum ObjectType { - OBJECT_TYPE_UNKNOWN = 0; - OBJECT_TYPE_CLUSTER = 1; - OBJECT_TYPE_CLUSTER_REPLICA = 2; - OBJECT_TYPE_CONNECTION = 3; - OBJECT_TYPE_DATABASE = 4; - OBJECT_TYPE_FUNC = 5; - OBJECT_TYPE_INDEX = 6; - OBJECT_TYPE_MATERIALIZED_VIEW = 7; - OBJECT_TYPE_ROLE = 8; - OBJECT_TYPE_SECRET = 9; - OBJECT_TYPE_SCHEMA = 10; - OBJECT_TYPE_SINK = 11; - OBJECT_TYPE_SOURCE = 12; - OBJECT_TYPE_TABLE = 13; - OBJECT_TYPE_TYPE = 14; - OBJECT_TYPE_VIEW = 15; - OBJECT_TYPE_SYSTEM = 16; - OBJECT_TYPE_CONTINUAL_TASK = 17; - OBJECT_TYPE_NETWORK_POLICY = 18; - } - - message IdFullNameV1 { - string id = 1; - FullNameV1 name = 2; - } - - message FullNameV1 { - string database = 1; - string schema = 2; - string item = 3; - } - - message IdNameV1 { - string id = 1; - string name = 2; - } - - message RenameClusterV1 { - string id = 1; - string old_name = 2; - string new_name = 3; - } - - message RenameClusterReplicaV1 { - string cluster_id = 1; - string replica_id = 2; - string old_name = 3; - string new_name = 4; - } - - message RenameItemV1 { - string id = 1; - FullNameV1 old_name = 2; - FullNameV1 new_name = 3; - } - - message CreateClusterReplicaV1 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - string logical_size = 5; - bool disk = 6; - optional string billed_as = 7; - bool internal = 8; - } - - message CreateClusterReplicaV2 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - string logical_size = 5; - bool disk = 6; - optional string billed_as = 7; - bool internal = 8; - CreateOrDropClusterReplicaReasonV1 reason = 9; - SchedulingDecisionsWithReasonsV1 scheduling_policies = 10; - } - - message CreateClusterReplicaV3 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - string logical_size = 5; - bool disk = 6; - optional string billed_as = 7; - bool internal = 8; - CreateOrDropClusterReplicaReasonV1 reason = 9; - SchedulingDecisionsWithReasonsV2 scheduling_policies = 10; - } - - message CreateClusterReplicaV4 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - string logical_size = 5; - optional string billed_as = 6; - bool internal = 7; - CreateOrDropClusterReplicaReasonV1 reason = 8; - SchedulingDecisionsWithReasonsV2 scheduling_policies = 9; - } - - message DropClusterReplicaV1 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - } - - message DropClusterReplicaV2 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - CreateOrDropClusterReplicaReasonV1 reason = 5; - SchedulingDecisionsWithReasonsV1 scheduling_policies = 6; - } - - message DropClusterReplicaV3 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - CreateOrDropClusterReplicaReasonV1 reason = 5; - SchedulingDecisionsWithReasonsV2 scheduling_policies = 6; - } - - message CreateOrDropClusterReplicaReasonV1 { - oneof reason { - Empty Manual = 1; - Empty Schedule = 2; - Empty System = 3; - } - } - - message SchedulingDecisionsWithReasonsV1 { - RefreshDecisionWithReasonV1 on_refresh = 1; - } - - message SchedulingDecisionsWithReasonsV2 { - RefreshDecisionWithReasonV2 on_refresh = 1; - } - - message RefreshDecisionWithReasonV1 { - oneof decision { - Empty On = 1; - Empty Off = 2; - } - repeated string objects_needing_refresh = 3; - string rehydration_time_estimate = 4; - } - - message RefreshDecisionWithReasonV2 { - oneof decision { - Empty On = 1; - Empty Off = 2; - } - repeated string objects_needing_refresh = 3; - repeated string objects_needing_compaction = 5; - string rehydration_time_estimate = 4; - } - - message CreateSourceSinkV1 { - string id = 1; - FullNameV1 name = 2; - StringWrapper size = 3; - } - - message CreateSourceSinkV2 { - string id = 1; - FullNameV1 name = 2; - StringWrapper size = 3; - string external_type = 4; - } - - message CreateSourceSinkV3 { - string id = 1; - FullNameV1 name = 2; - string external_type = 3; - } - - message CreateSourceSinkV4 { - string id = 1; - StringWrapper cluster_id = 2; - FullNameV1 name = 3; - string external_type = 4; - } - - message CreateIndexV1 { - string id = 1; - string cluster_id = 2; - FullNameV1 name = 3; - } - - message CreateMaterializedViewV1 { - string id = 1; - string cluster_id = 2; - FullNameV1 name = 3; - } - - message AlterSourceSinkV1 { - string id = 1; - FullNameV1 name = 2; - StringWrapper old_size = 3; - StringWrapper new_size = 4; - } - - message AlterSetClusterV1 { - string id = 1; - FullNameV1 name = 2; - StringWrapper old_cluster = 3; - StringWrapper new_cluster = 4; - } - - message GrantRoleV1 { - string role_id = 1; - string member_id = 2; - string grantor_id = 3; - } - - message GrantRoleV2 { - string role_id = 1; - string member_id = 2; - string grantor_id = 3; - string executed_by = 4; - } - - message RevokeRoleV1 { - string role_id = 1; - string member_id = 2; - } - - message RevokeRoleV2 { - string role_id = 1; - string member_id = 2; - string grantor_id = 3; - string executed_by = 4; - } - - message UpdatePrivilegeV1 { - string object_id = 1; - string grantee_id = 2; - string grantor_id = 3; - string privileges = 4; - } - - message AlterDefaultPrivilegeV1 { - string role_id = 1; - StringWrapper database_id = 2; - StringWrapper schema_id = 3; - string grantee_id = 4; - string privileges = 5; - } - - message UpdateOwnerV1 { - string object_id = 1; - string old_owner_id = 2; - string new_owner_id = 3; - } - - message SchemaV1 { - string id = 1; - string name = 2; - string database_name = 3; - } - - message SchemaV2 { - string id = 1; - string name = 2; - StringWrapper database_name = 3; - } - - message RenameSchemaV1 { - string id = 1; - optional string database_name = 2; - string old_name = 3; - string new_name = 4; - } - - message UpdateItemV1 { - string id = 1; - FullNameV1 name = 2; - } - - message AlterRetainHistoryV1 { - string id = 1; - optional string old_history = 2; - optional string new_history = 3; - } - - message ToNewIdV1 { - string id = 1; - string new_id = 2; - } - - message FromPreviousIdV1 { - string id = 1; - string previous_id = 2; - } - - message SetV1 { - string name = 1; - optional string value = 2; - } - - message RotateKeysV1 { - string id = 1; - string name = 2; - } - - uint64 id = 1; - EventType event_type = 2; - ObjectType object_type = 3; - StringWrapper user = 4; - EpochMillis occurred_at = 5; - - oneof details { - CreateClusterReplicaV1 create_cluster_replica_v1 = 6; - CreateClusterReplicaV2 create_cluster_replica_v2 = 33; - CreateClusterReplicaV3 create_cluster_replica_v3 = 41; - CreateClusterReplicaV4 create_cluster_replica_v4 = 43; - DropClusterReplicaV1 drop_cluster_replica_v1 = 7; - DropClusterReplicaV2 drop_cluster_replica_v2 = 34; - DropClusterReplicaV3 drop_cluster_replica_v3 = 42; - CreateSourceSinkV1 create_source_sink_v1 = 8; - CreateSourceSinkV2 create_source_sink_v2 = 9; - AlterSourceSinkV1 alter_source_sink_v1 = 10; - AlterSetClusterV1 alter_set_cluster_v1 = 25; - GrantRoleV1 grant_role_v1 = 11; - GrantRoleV2 grant_role_v2 = 12; - RevokeRoleV1 revoke_role_v1 = 13; - RevokeRoleV2 revoke_role_v2 = 14; - UpdatePrivilegeV1 update_privilege_v1 = 22; - AlterDefaultPrivilegeV1 alter_default_privilege_v1 = 23; - UpdateOwnerV1 update_owner_v1 = 24; - IdFullNameV1 id_full_name_v1 = 15; - RenameClusterV1 rename_cluster_v1 = 20; - RenameClusterReplicaV1 rename_cluster_replica_v1 = 21; - RenameItemV1 rename_item_v1 = 16; - IdNameV1 id_name_v1 = 17; - SchemaV1 schema_v1 = 18; - SchemaV2 schema_v2 = 19; - RenameSchemaV1 rename_schema_v1 = 27; - UpdateItemV1 update_item_v1 = 26; - CreateSourceSinkV3 create_source_sink_v3 = 29; - AlterRetainHistoryV1 alter_retain_history_v1 = 30; - ToNewIdV1 to_new_id_v1 = 31; - FromPreviousIdV1 from_previous_id_v1 = 32; - SetV1 set_v1 = 35; - Empty reset_all_v1 = 36; - RotateKeysV1 rotate_keys_v1 = 37; - CreateSourceSinkV4 create_source_sink_v4 = 38; - CreateIndexV1 create_index_v1 = 39; - CreateMaterializedViewV1 create_materialized_view_v1 = 40; - } -} - -// Wrapper of key-values used by the persist implementation to serialize the catalog. -message StateUpdateKind { - reserved "Epoch"; - - message AuditLog { - AuditLogKey key = 1; - } - - message Cluster { - ClusterKey key = 1; - ClusterValue value = 2; - } - - message ClusterReplica { - ClusterReplicaKey key = 1; - ClusterReplicaValue value = 2; - } - - message Comment { - CommentKey key = 1; - CommentValue value = 2; - } - - message Config { - ConfigKey key = 1; - ConfigValue value = 2; - } - - message Database { - DatabaseKey key = 1; - DatabaseValue value = 2; - } - - message DefaultPrivileges { - DefaultPrivilegesKey key = 1; - DefaultPrivilegesValue value = 2; - } - - message FenceToken { - uint64 deploy_generation = 1; - int64 epoch = 2; - } - - message IdAlloc { - IdAllocKey key = 1; - IdAllocValue value = 2; - } - - message ClusterIntrospectionSourceIndex { - ClusterIntrospectionSourceIndexKey key = 1; - ClusterIntrospectionSourceIndexValue value = 2; - } - - message Item { - ItemKey key = 1; - ItemValue value = 2; - } - - message Role { - RoleKey key = 1; - RoleValue value = 2; - } - - message RoleAuth { - RoleAuthKey key = 1; - RoleAuthValue value = 2; - } - - message NetworkPolicy { - NetworkPolicyKey key = 1; - NetworkPolicyValue value = 2; - } - - message Schema { - SchemaKey key = 1; - SchemaValue value = 2; - } - - message Setting { - SettingKey key = 1; - SettingValue value = 2; - } - - message ServerConfiguration { - ServerConfigurationKey key = 1; - ServerConfigurationValue value = 2; - } - - message SourceReferences { - SourceReferencesKey key = 1; - SourceReferencesValue value = 2; - } - - message GidMapping { - GidMappingKey key = 1; - GidMappingValue value = 2; - } - - message SystemPrivileges { - SystemPrivilegesKey key = 1; - SystemPrivilegesValue value = 2; - } - - message StorageCollectionMetadata { - StorageCollectionMetadataKey key = 1; - StorageCollectionMetadataValue value = 2; - } - - message UnfinalizedShard { - UnfinalizedShardKey key = 1; - } - - message TxnWalShard { - TxnWalShardValue value = 1; - } - - reserved 15; - reserved "storage_usage"; - reserved 19; - reserved "timestamp"; - reserved 22; - reserved "persist_txn_shard"; - reserved 8; - reserved "epoch"; - - oneof kind { - AuditLog audit_log = 1; - Cluster cluster = 2; - ClusterReplica cluster_replica = 3; - Comment comment = 4; - Config config = 5; - Database database = 6; - DefaultPrivileges default_privileges = 7; - IdAlloc id_alloc = 9; - ClusterIntrospectionSourceIndex cluster_introspection_source_index = 10; - Item item = 11; - Role role = 12; - Schema schema = 13; - Setting setting = 14; - ServerConfiguration server_configuration = 16; - GidMapping gid_mapping = 17; - SystemPrivileges system_privileges = 18; - StorageCollectionMetadata storage_collection_metadata = 20; - UnfinalizedShard unfinalized_shard = 21; - TxnWalShard txn_wal_shard = 23; - SourceReferences source_references = 24; - FenceToken fence_token = 25; - NetworkPolicy network_policy = 26; - RoleAuth role_auth = 27; - } -} diff --git a/src/catalog-protos/protos/objects_v77.proto b/src/catalog-protos/protos/objects_v77.proto deleted file mode 100644 index 422c00b749338..0000000000000 --- a/src/catalog-protos/protos/objects_v77.proto +++ /dev/null @@ -1,1097 +0,0 @@ -// Copyright Materialize, Inc. and contributors. All rights reserved. -// -// Use of this software is governed by the Business Source License -// included in the LICENSE file. -// -// As of the Change Date specified in that file, in accordance with -// the Business Source License, use of this software will be governed -// by the Apache License, Version 2.0. - -// This protobuf file defines the types we store in the Stash. -// -// Before and after modifying this file, make sure you have a snapshot of the before version, -// e.g. a copy of this file named 'objects_v{CATALOG_VERSION}.proto', and a snapshot of the file -// after your modifications, e.g. 'objects_v{CATALOG_VERSION + 1}.proto'. Then you can write a -// migration using these two files, and no matter how the types change in the future, we'll always -// have these snapshots to facilitate the migration. - -// buf breaking: ignore (does currently not require backward-compatibility) - -syntax = "proto3"; - -package objects_v77; - -message ConfigKey { - string key = 1; -} - -message ConfigValue { - uint64 value = 1; -} - -message SettingKey { - string name = 1; -} - -message SettingValue { - string value = 1; -} - -message IdAllocKey { - string name = 1; -} - -message IdAllocValue { - uint64 next_id = 1; -} - -message GidMappingKey { - string schema_name = 1; - CatalogItemType object_type = 2; - string object_name = 3; -} - -message GidMappingValue { - // TODO(parkmycar): Ideally this is a SystemCatalogItemId but making this change panics 0dt - // upgrades if there were new builtin objects added since the older version of Materialize - // doesn't know how to read the new SystemCatalogItemId type. - uint64 id = 1; - string fingerprint = 2; - SystemGlobalId global_id = 3; -} - -message ClusterKey { - ClusterId id = 1; -} - -message ClusterValue { - reserved 2; - string name = 1; - RoleId owner_id = 3; - repeated MzAclItem privileges = 4; - ClusterConfig config = 5; -} - -message ClusterIntrospectionSourceIndexKey { - ClusterId cluster_id = 1; - string name = 2; -} - -message ClusterIntrospectionSourceIndexValue { - // TODO(parkmycar): Ideally this is a IntrospectionSourceCatalogItemId but making this change panics 0dt - // upgrades if there were new builtin objects added since the older version of Materialize - // doesn't know how to read the new IntrospectionSourceCatalogItemId type. - uint64 index_id = 1; - uint32 oid = 2; - IntrospectionSourceIndexGlobalId global_id = 3; -} - -message ClusterReplicaKey { - ReplicaId id = 1; -} - -message ClusterReplicaValue { - ClusterId cluster_id = 1; - string name = 2; - ReplicaConfig config = 3; - RoleId owner_id = 4; -} - -message DatabaseKey { - DatabaseId id = 1; -} - -message DatabaseValue { - string name = 1; - RoleId owner_id = 2; - repeated MzAclItem privileges = 3; - uint32 oid = 4; -} - -message SchemaKey { - SchemaId id = 1; -} - -message SchemaValue { - DatabaseId database_id = 1; - string name = 2; - RoleId owner_id = 3; - repeated MzAclItem privileges = 4; - uint32 oid = 5; -} - -message ItemKey { - CatalogItemId gid = 1; -} - -message ItemValue { - SchemaId schema_id = 1; - string name = 2; - CatalogItem definition = 3; - RoleId owner_id = 4; - repeated MzAclItem privileges = 5; - uint32 oid = 6; - GlobalId global_id = 7; - repeated ItemVersion extra_versions = 8; -} - -message ItemVersion { - GlobalId global_id = 1; - Version version = 2; -} - -message RoleKey { - RoleId id = 1; -} - -message RoleValue { - string name = 1; - RoleAttributes attributes = 2; - RoleMembership membership = 3; - RoleVars vars = 4; - uint32 oid = 5; -} - -message RoleAuthKey { - RoleId id = 1; -} - -message RoleAuthValue { - optional string password_hash = 1; - EpochMillis updated_at = 2; -} - -message NetworkPolicyKey { - NetworkPolicyId id = 1; -} - -message NetworkPolicyValue { - string name = 1; - repeated NetworkPolicyRule rules = 2; - RoleId owner_id = 3; - repeated MzAclItem privileges = 4; - uint32 oid = 5; -} - -message ServerConfigurationKey { - string name = 1; -} - -message ServerConfigurationValue { - string value = 1; -} - -message AuditLogKey { - oneof event { - AuditLogEventV1 v1 = 1; - } -} - -message CommentKey { - oneof object { - CatalogItemId table = 1; - CatalogItemId view = 2; - CatalogItemId materialized_view = 4; - CatalogItemId source = 5; - CatalogItemId sink = 6; - CatalogItemId index = 7; - CatalogItemId func = 8; - CatalogItemId connection = 9; - CatalogItemId type = 10; - CatalogItemId secret = 11; - CatalogItemId continual_task = 17; - RoleId role = 12; - DatabaseId database = 13; - ResolvedSchema schema = 14; - ClusterId cluster = 15; - ClusterReplicaId cluster_replica = 16; - NetworkPolicyId network_policy = 18; - } - oneof sub_component { - uint64 column_pos = 3; - } -} - -message CommentValue { - string comment = 1; -} - -message SourceReferencesKey { - CatalogItemId source = 1; -} - -message SourceReferencesValue { - repeated SourceReference references = 1; - EpochMillis updated_at = 2; -} - -message SourceReference { - string name = 1; - optional string namespace = 2; - repeated string columns = 3; -} - -message StorageCollectionMetadataKey { - GlobalId id = 1; -} - -// This value is stored transparently, however, it should only ever be -// manipulated by the storage controller. -message StorageCollectionMetadataValue { - string shard = 1; -} - -// This value is stored transparently, however, it should only ever be -// manipulated by the storage controller. -message UnfinalizedShardKey { - string shard = 1; -} - -// This value is stored transparently, however, it should only ever be -// manipulated by the storage controller. -message TxnWalShardValue { - string shard = 1; -} - -// ---- Common Types -// -// Note: Normally types like this would go in some sort of `common.proto` file, but we want to keep -// our proto definitions in a single file to make snapshotting easier, hence them living here. - -message Empty { - /* purposefully empty */ -} - -// In protobuf a "None" string is the same thing as an empty string. To get the same semantics of -// an `Option` from Rust, we need to wrap a string in a message. -message StringWrapper { - string inner = 1; -} - -message Duration { - uint64 secs = 1; - uint32 nanos = 2; -} - -message EpochMillis { - uint64 millis = 1; -} - -// Opaque timestamp type that is specific to Materialize. -message Timestamp { - uint64 internal = 1; -} - -message Version { - uint64 value = 2; -} - -enum CatalogItemType { - CATALOG_ITEM_TYPE_UNKNOWN = 0; - CATALOG_ITEM_TYPE_TABLE = 1; - CATALOG_ITEM_TYPE_SOURCE = 2; - CATALOG_ITEM_TYPE_SINK = 3; - CATALOG_ITEM_TYPE_VIEW = 4; - CATALOG_ITEM_TYPE_MATERIALIZED_VIEW = 5; - CATALOG_ITEM_TYPE_INDEX = 6; - CATALOG_ITEM_TYPE_TYPE = 7; - CATALOG_ITEM_TYPE_FUNC = 8; - CATALOG_ITEM_TYPE_SECRET = 9; - CATALOG_ITEM_TYPE_CONNECTION = 10; - CATALOG_ITEM_TYPE_CONTINUAL_TASK = 11; -} - -message CatalogItem { - message V1 { - string create_sql = 1; - } - - oneof value { - V1 v1 = 1; - } -} - -message CatalogItemId { - oneof value { - uint64 system = 1; - uint64 user = 2; - uint64 transient = 3; - uint64 introspection_source_index = 4; - } -} - -/// A newtype wrapper for a `CatalogItemId` that is always in the "system" namespace. -message SystemCatalogItemId { - uint64 value = 1; -} - -/// A newtype wrapper for a `CatalogItemId` that is always in the "introspection source index" namespace. -message IntrospectionSourceIndexCatalogItemId { - uint64 value = 1; -} - -message GlobalId { - oneof value { - uint64 system = 1; - uint64 user = 2; - uint64 transient = 3; - Empty explain = 4; - uint64 introspection_source_index = 5; - } -} - -/// A newtype wrapper for a `GlobalId` that is always in the "system" namespace. -message SystemGlobalId { - uint64 value = 1; -} - -/// A newtype wrapper for a `GlobalId` that is always in the "introspection source index" namespace. -message IntrospectionSourceIndexGlobalId { - uint64 value = 1; -} - -message ClusterId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message DatabaseId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message ResolvedDatabaseSpecifier { - oneof spec { - Empty ambient = 1; - DatabaseId id = 2; - } -} - -message SchemaId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message SchemaSpecifier { - oneof spec { - Empty temporary = 1; - SchemaId id = 2; - } -} - -message ResolvedSchema { - ResolvedDatabaseSpecifier database = 1; - SchemaSpecifier schema = 2; -} - -message ReplicaId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message ClusterReplicaId { - ClusterId cluster_id = 1; - ReplicaId replica_id = 2; -} - -message NetworkPolicyId { - oneof value { - uint64 system = 1; - uint64 user = 2; - } -} - -message ReplicaLogging { - bool log_logging = 1; - Duration interval = 2; -} - -message OptimizerFeatureOverride { - string name = 1; - string value = 2; -} - -message ClusterScheduleRefreshOptions { - Duration rehydration_time_estimate = 1; -} - -message ClusterSchedule { - oneof value { - Empty manual = 1; - ClusterScheduleRefreshOptions refresh = 2; - } -} - -message ClusterConfig { - message ManagedCluster { - string size = 1; - uint32 replication_factor = 2; - repeated string availability_zones = 3; - ReplicaLogging logging = 4; - repeated OptimizerFeatureOverride optimizer_feature_overrides = 7; - ClusterSchedule schedule = 8; - } - - oneof variant { - Empty unmanaged = 1; - ManagedCluster managed = 2; - } - optional string workload_class = 3; -} - -message ReplicaConfig { - message UnmanagedLocation { - repeated string storagectl_addrs = 1; - repeated string computectl_addrs = 3; - } - - message ManagedLocation { - string size = 1; - optional string availability_zone = 2; - bool internal = 5; - optional string billed_as = 6; - bool pending = 7; - } - - oneof location { - UnmanagedLocation unmanaged = 1; - ManagedLocation managed = 2; - } - ReplicaLogging logging = 3; -} - -message RoleId { - oneof value { - uint64 system = 1; - uint64 user = 2; - Empty public = 3; - uint64 predefined = 4; - } -} - -message RoleAttributes { - bool inherit = 1; - optional bool superuser = 2; - optional bool login = 3; -} - -message RoleMembership { - message Entry { - RoleId key = 1; - RoleId value = 2; - } - - repeated Entry map = 1; -} - -message RoleVars { - message SqlSet { - repeated string entries = 1; - } - - message Entry { - string key = 1; - oneof val { - string flat = 2; - SqlSet sql_set = 3; - } - } - - repeated Entry entries = 1; -} - -message NetworkPolicyRule { - string name = 1; - oneof action { - Empty allow = 2; - } - oneof direction { - Empty ingress = 3; - } - string address = 4; -} - -message AclMode { - // A bit flag representing all the privileges that can be granted to a role. - uint64 bitflags = 1; -} - -message MzAclItem { - RoleId grantee = 1; - RoleId grantor = 2; - AclMode acl_mode = 3; -} - -enum ObjectType { - OBJECT_TYPE_UNKNOWN = 0; - OBJECT_TYPE_TABLE = 1; - OBJECT_TYPE_VIEW = 2; - OBJECT_TYPE_MATERIALIZED_VIEW = 3; - OBJECT_TYPE_SOURCE = 4; - OBJECT_TYPE_SINK = 5; - OBJECT_TYPE_INDEX = 6; - OBJECT_TYPE_TYPE = 7; - OBJECT_TYPE_ROLE = 8; - OBJECT_TYPE_CLUSTER = 9; - OBJECT_TYPE_CLUSTER_REPLICA = 10; - OBJECT_TYPE_SECRET = 11; - OBJECT_TYPE_CONNECTION = 12; - OBJECT_TYPE_DATABASE = 13; - OBJECT_TYPE_SCHEMA = 14; - OBJECT_TYPE_FUNC = 15; - OBJECT_TYPE_CONTINUAL_TASK = 16; - OBJECT_TYPE_NETWORK_POLICY = 17; -} - -message DefaultPrivilegesKey { - RoleId role_id = 1; - DatabaseId database_id = 2; - SchemaId schema_id = 3; - ObjectType object_type = 4; - RoleId grantee = 5; -} - -message DefaultPrivilegesValue { - AclMode privileges = 1; -} - -message SystemPrivilegesKey { - RoleId grantee = 1; - RoleId grantor = 2; -} - -message SystemPrivilegesValue { - AclMode acl_mode = 1; -} - -message AuditLogEventV1 { - enum EventType { - EVENT_TYPE_UNKNOWN = 0; - EVENT_TYPE_CREATE = 1; - EVENT_TYPE_DROP = 2; - EVENT_TYPE_ALTER = 3; - EVENT_TYPE_GRANT = 4; - EVENT_TYPE_REVOKE = 5; - EVENT_TYPE_COMMENT = 6; - } - - enum ObjectType { - OBJECT_TYPE_UNKNOWN = 0; - OBJECT_TYPE_CLUSTER = 1; - OBJECT_TYPE_CLUSTER_REPLICA = 2; - OBJECT_TYPE_CONNECTION = 3; - OBJECT_TYPE_DATABASE = 4; - OBJECT_TYPE_FUNC = 5; - OBJECT_TYPE_INDEX = 6; - OBJECT_TYPE_MATERIALIZED_VIEW = 7; - OBJECT_TYPE_ROLE = 8; - OBJECT_TYPE_SECRET = 9; - OBJECT_TYPE_SCHEMA = 10; - OBJECT_TYPE_SINK = 11; - OBJECT_TYPE_SOURCE = 12; - OBJECT_TYPE_TABLE = 13; - OBJECT_TYPE_TYPE = 14; - OBJECT_TYPE_VIEW = 15; - OBJECT_TYPE_SYSTEM = 16; - OBJECT_TYPE_CONTINUAL_TASK = 17; - OBJECT_TYPE_NETWORK_POLICY = 18; - } - - message IdFullNameV1 { - string id = 1; - FullNameV1 name = 2; - } - - message FullNameV1 { - string database = 1; - string schema = 2; - string item = 3; - } - - message IdNameV1 { - string id = 1; - string name = 2; - } - - message RenameClusterV1 { - string id = 1; - string old_name = 2; - string new_name = 3; - } - - message RenameClusterReplicaV1 { - string cluster_id = 1; - string replica_id = 2; - string old_name = 3; - string new_name = 4; - } - - message RenameItemV1 { - string id = 1; - FullNameV1 old_name = 2; - FullNameV1 new_name = 3; - } - - message CreateClusterReplicaV1 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - string logical_size = 5; - bool disk = 6; - optional string billed_as = 7; - bool internal = 8; - } - - message CreateClusterReplicaV2 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - string logical_size = 5; - bool disk = 6; - optional string billed_as = 7; - bool internal = 8; - CreateOrDropClusterReplicaReasonV1 reason = 9; - SchedulingDecisionsWithReasonsV1 scheduling_policies = 10; - } - - message CreateClusterReplicaV3 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - string logical_size = 5; - bool disk = 6; - optional string billed_as = 7; - bool internal = 8; - CreateOrDropClusterReplicaReasonV1 reason = 9; - SchedulingDecisionsWithReasonsV2 scheduling_policies = 10; - } - - message CreateClusterReplicaV4 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - string logical_size = 5; - optional string billed_as = 6; - bool internal = 7; - CreateOrDropClusterReplicaReasonV1 reason = 8; - SchedulingDecisionsWithReasonsV2 scheduling_policies = 9; - } - - message DropClusterReplicaV1 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - } - - message DropClusterReplicaV2 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - CreateOrDropClusterReplicaReasonV1 reason = 5; - SchedulingDecisionsWithReasonsV1 scheduling_policies = 6; - } - - message DropClusterReplicaV3 { - string cluster_id = 1; - string cluster_name = 2; - StringWrapper replica_id = 3; - string replica_name = 4; - CreateOrDropClusterReplicaReasonV1 reason = 5; - SchedulingDecisionsWithReasonsV2 scheduling_policies = 6; - } - - message CreateOrDropClusterReplicaReasonV1 { - oneof reason { - Empty Manual = 1; - Empty Schedule = 2; - Empty System = 3; - } - } - - message SchedulingDecisionsWithReasonsV1 { - RefreshDecisionWithReasonV1 on_refresh = 1; - } - - message SchedulingDecisionsWithReasonsV2 { - RefreshDecisionWithReasonV2 on_refresh = 1; - } - - message RefreshDecisionWithReasonV1 { - oneof decision { - Empty On = 1; - Empty Off = 2; - } - repeated string objects_needing_refresh = 3; - string rehydration_time_estimate = 4; - } - - message RefreshDecisionWithReasonV2 { - oneof decision { - Empty On = 1; - Empty Off = 2; - } - repeated string objects_needing_refresh = 3; - repeated string objects_needing_compaction = 5; - string rehydration_time_estimate = 4; - } - - message CreateSourceSinkV1 { - string id = 1; - FullNameV1 name = 2; - StringWrapper size = 3; - } - - message CreateSourceSinkV2 { - string id = 1; - FullNameV1 name = 2; - StringWrapper size = 3; - string external_type = 4; - } - - message CreateSourceSinkV3 { - string id = 1; - FullNameV1 name = 2; - string external_type = 3; - } - - message CreateSourceSinkV4 { - string id = 1; - StringWrapper cluster_id = 2; - FullNameV1 name = 3; - string external_type = 4; - } - - message CreateIndexV1 { - string id = 1; - string cluster_id = 2; - FullNameV1 name = 3; - } - - message CreateMaterializedViewV1 { - string id = 1; - string cluster_id = 2; - FullNameV1 name = 3; - } - - message AlterSourceSinkV1 { - string id = 1; - FullNameV1 name = 2; - StringWrapper old_size = 3; - StringWrapper new_size = 4; - } - - message AlterSetClusterV1 { - string id = 1; - FullNameV1 name = 2; - StringWrapper old_cluster = 3; - StringWrapper new_cluster = 4; - } - - message GrantRoleV1 { - string role_id = 1; - string member_id = 2; - string grantor_id = 3; - } - - message GrantRoleV2 { - string role_id = 1; - string member_id = 2; - string grantor_id = 3; - string executed_by = 4; - } - - message RevokeRoleV1 { - string role_id = 1; - string member_id = 2; - } - - message RevokeRoleV2 { - string role_id = 1; - string member_id = 2; - string grantor_id = 3; - string executed_by = 4; - } - - message UpdatePrivilegeV1 { - string object_id = 1; - string grantee_id = 2; - string grantor_id = 3; - string privileges = 4; - } - - message AlterDefaultPrivilegeV1 { - string role_id = 1; - StringWrapper database_id = 2; - StringWrapper schema_id = 3; - string grantee_id = 4; - string privileges = 5; - } - - message UpdateOwnerV1 { - string object_id = 1; - string old_owner_id = 2; - string new_owner_id = 3; - } - - message SchemaV1 { - string id = 1; - string name = 2; - string database_name = 3; - } - - message SchemaV2 { - string id = 1; - string name = 2; - StringWrapper database_name = 3; - } - - message RenameSchemaV1 { - string id = 1; - optional string database_name = 2; - string old_name = 3; - string new_name = 4; - } - - message UpdateItemV1 { - string id = 1; - FullNameV1 name = 2; - } - - message AlterRetainHistoryV1 { - string id = 1; - optional string old_history = 2; - optional string new_history = 3; - } - - message ToNewIdV1 { - string id = 1; - string new_id = 2; - } - - message FromPreviousIdV1 { - string id = 1; - string previous_id = 2; - } - - message SetV1 { - string name = 1; - optional string value = 2; - } - - message RotateKeysV1 { - string id = 1; - string name = 2; - } - - uint64 id = 1; - EventType event_type = 2; - ObjectType object_type = 3; - StringWrapper user = 4; - EpochMillis occurred_at = 5; - - oneof details { - CreateClusterReplicaV1 create_cluster_replica_v1 = 6; - CreateClusterReplicaV2 create_cluster_replica_v2 = 33; - CreateClusterReplicaV3 create_cluster_replica_v3 = 41; - CreateClusterReplicaV4 create_cluster_replica_v4 = 43; - DropClusterReplicaV1 drop_cluster_replica_v1 = 7; - DropClusterReplicaV2 drop_cluster_replica_v2 = 34; - DropClusterReplicaV3 drop_cluster_replica_v3 = 42; - CreateSourceSinkV1 create_source_sink_v1 = 8; - CreateSourceSinkV2 create_source_sink_v2 = 9; - AlterSourceSinkV1 alter_source_sink_v1 = 10; - AlterSetClusterV1 alter_set_cluster_v1 = 25; - GrantRoleV1 grant_role_v1 = 11; - GrantRoleV2 grant_role_v2 = 12; - RevokeRoleV1 revoke_role_v1 = 13; - RevokeRoleV2 revoke_role_v2 = 14; - UpdatePrivilegeV1 update_privilege_v1 = 22; - AlterDefaultPrivilegeV1 alter_default_privilege_v1 = 23; - UpdateOwnerV1 update_owner_v1 = 24; - IdFullNameV1 id_full_name_v1 = 15; - RenameClusterV1 rename_cluster_v1 = 20; - RenameClusterReplicaV1 rename_cluster_replica_v1 = 21; - RenameItemV1 rename_item_v1 = 16; - IdNameV1 id_name_v1 = 17; - SchemaV1 schema_v1 = 18; - SchemaV2 schema_v2 = 19; - RenameSchemaV1 rename_schema_v1 = 27; - UpdateItemV1 update_item_v1 = 26; - CreateSourceSinkV3 create_source_sink_v3 = 29; - AlterRetainHistoryV1 alter_retain_history_v1 = 30; - ToNewIdV1 to_new_id_v1 = 31; - FromPreviousIdV1 from_previous_id_v1 = 32; - SetV1 set_v1 = 35; - Empty reset_all_v1 = 36; - RotateKeysV1 rotate_keys_v1 = 37; - CreateSourceSinkV4 create_source_sink_v4 = 38; - CreateIndexV1 create_index_v1 = 39; - CreateMaterializedViewV1 create_materialized_view_v1 = 40; - } -} - -// Wrapper of key-values used by the persist implementation to serialize the catalog. -message StateUpdateKind { - reserved "Epoch"; - - message AuditLog { - AuditLogKey key = 1; - } - - message Cluster { - ClusterKey key = 1; - ClusterValue value = 2; - } - - message ClusterReplica { - ClusterReplicaKey key = 1; - ClusterReplicaValue value = 2; - } - - message Comment { - CommentKey key = 1; - CommentValue value = 2; - } - - message Config { - ConfigKey key = 1; - ConfigValue value = 2; - } - - message Database { - DatabaseKey key = 1; - DatabaseValue value = 2; - } - - message DefaultPrivileges { - DefaultPrivilegesKey key = 1; - DefaultPrivilegesValue value = 2; - } - - message FenceToken { - uint64 deploy_generation = 1; - int64 epoch = 2; - } - - message IdAlloc { - IdAllocKey key = 1; - IdAllocValue value = 2; - } - - message ClusterIntrospectionSourceIndex { - ClusterIntrospectionSourceIndexKey key = 1; - ClusterIntrospectionSourceIndexValue value = 2; - } - - message Item { - ItemKey key = 1; - ItemValue value = 2; - } - - message Role { - RoleKey key = 1; - RoleValue value = 2; - } - - message RoleAuth { - RoleAuthKey key = 1; - RoleAuthValue value = 2; - } - - message NetworkPolicy { - NetworkPolicyKey key = 1; - NetworkPolicyValue value = 2; - } - - message Schema { - SchemaKey key = 1; - SchemaValue value = 2; - } - - message Setting { - SettingKey key = 1; - SettingValue value = 2; - } - - message ServerConfiguration { - ServerConfigurationKey key = 1; - ServerConfigurationValue value = 2; - } - - message SourceReferences { - SourceReferencesKey key = 1; - SourceReferencesValue value = 2; - } - - message GidMapping { - GidMappingKey key = 1; - GidMappingValue value = 2; - } - - message SystemPrivileges { - SystemPrivilegesKey key = 1; - SystemPrivilegesValue value = 2; - } - - message StorageCollectionMetadata { - StorageCollectionMetadataKey key = 1; - StorageCollectionMetadataValue value = 2; - } - - message UnfinalizedShard { - UnfinalizedShardKey key = 1; - } - - message TxnWalShard { - TxnWalShardValue value = 1; - } - - reserved 15; - reserved "storage_usage"; - reserved 19; - reserved "timestamp"; - reserved 22; - reserved "persist_txn_shard"; - reserved 8; - reserved "epoch"; - - oneof kind { - AuditLog audit_log = 1; - Cluster cluster = 2; - ClusterReplica cluster_replica = 3; - Comment comment = 4; - Config config = 5; - Database database = 6; - DefaultPrivileges default_privileges = 7; - IdAlloc id_alloc = 9; - ClusterIntrospectionSourceIndex cluster_introspection_source_index = 10; - Item item = 11; - Role role = 12; - Schema schema = 13; - Setting setting = 14; - ServerConfiguration server_configuration = 16; - GidMapping gid_mapping = 17; - SystemPrivileges system_privileges = 18; - StorageCollectionMetadata storage_collection_metadata = 20; - UnfinalizedShard unfinalized_shard = 21; - TxnWalShard txn_wal_shard = 23; - SourceReferences source_references = 24; - FenceToken fence_token = 25; - NetworkPolicy network_policy = 26; - RoleAuth role_auth = 27; - } -} diff --git a/src/catalog-protos/src/lib.rs b/src/catalog-protos/src/lib.rs index 4418c963d22a0..46d4282b50b17 100644 --- a/src/catalog-protos/src/lib.rs +++ b/src/catalog-protos/src/lib.rs @@ -7,22 +7,27 @@ // the Business Source License, use of this software will be governed // by the Apache License, Version 2.0. -//! All of the protobuf types we durably persist in the Catalog. -//! -//! These exist outside of the `mz_catalog` crate because the code generated by -//! [`prost`] for the protobuf files, takes a considerable (>40s) amount of -//! time to `build` and even `check`, yet the protobuf files rarely change. So -//! moving them into a separate crate allows folks to iterate on the -//! `mz_catalog` crate without having to pay the cost of re-compiling these -//! protobuf files. +//! All of the types we durably persist in the Catalog. pub mod audit_log; +pub mod objects; +pub mod objects_v67; +pub mod objects_v68; +pub mod objects_v69; +pub mod objects_v70; +pub mod objects_v71; +pub mod objects_v72; +pub mod objects_v73; +pub mod objects_v74; +pub mod objects_v75; +pub mod objects_v76; +pub mod objects_v77; pub mod serialization; /// The current version of the `Catalog`. /// /// We will initialize new `Catalog`s with this version, and migrate existing `Catalog`s to this -/// version. Whenever the `Catalog` changes, e.g. the protobufs we serialize in the `Catalog` +/// version. Whenever the `Catalog` changes, e.g. the types we serialize in the `Catalog` /// change, we need to bump this version. pub const CATALOG_VERSION: u64 = 77; @@ -31,56 +36,29 @@ pub const CATALOG_VERSION: u64 = 77; /// After bumping this we can delete the old migrations. pub const MIN_CATALOG_VERSION: u64 = 67; -macro_rules! proto_objects { - ( $( $x:ident ),* ) => { - paste::paste! { - $( - pub mod [] { - include!(concat!(env!("OUT_DIR"), "/objects_", stringify!($x), ".rs")); - } - )* - pub mod objects { - include!(concat!(env!("OUT_DIR"), "/objects.rs")); - } - } - }; -} - -proto_objects!(v67, v68, v69, v70, v71, v72, v73, v74, v75, v76, v77); - #[cfg(test)] mod tests { use std::collections::BTreeSet; use std::fs; - use std::io::{BufRead, BufReader}; + use std::path::PathBuf; use crate::{CATALOG_VERSION, MIN_CATALOG_VERSION}; - // Note: Feel free to update this path if the protos move. - const PROTO_DIRECTORY: &str = { - if mz_build_tools::is_bazel_build() { - "src/catalog/protos" - } else { - "protos" - } - }; - #[mz_ore::test] fn test_assert_snapshots_exist() { - // Get all of the files in the snapshot directory, with the `.proto` extension. - let mut filenames: BTreeSet<_> = fs::read_dir(PROTO_DIRECTORY) - .expect("failed to read protos dir") + let src_dir: PathBuf = [env!("CARGO_MANIFEST_DIR"), "src"].iter().collect(); + + // Get all the versioned object definition files. + let mut filenames: BTreeSet<_> = fs::read_dir(src_dir) + .expect("failed to read src dir") .map(|entry| entry.expect("failed to read dir entry").file_name()) .map(|filename| filename.to_str().expect("utf8").to_string()) - .filter(|filename| filename.ends_with("proto")) + .filter(|filename| filename.starts_with("objects_v")) .collect(); - // Assert objects.proto exists. - assert!(filenames.remove("objects.proto")); - // Assert snapshots exist for all of the versions we support. for version in MIN_CATALOG_VERSION..=CATALOG_VERSION { - let filename = format!("objects_v{version}.proto"); + let filename = format!("objects_v{version}.rs"); assert!( filenames.remove(&filename), "Missing snapshot for v{version}." @@ -100,39 +78,24 @@ mod tests { // Assert there aren't any extra snapshots. assert!( filenames.is_empty(), - "Found snapshots for unsupported catalog versions {filenames:?}.\nIf you just increased `MIN_CATALOG_VERSION`, then please delete the old snapshots. If you created a new snapshot, please bump `CATALOG_VERSION`." + "Found snapshots for unsupported catalog versions {filenames:?}.\n\ + If you just increased `MIN_CATALOG_VERSION`, then please delete the old snapshots. \ + If you created a new snapshot, please bump `CATALOG_VERSION`." ); } #[mz_ore::test] fn test_assert_current_snapshot() { - // Read the content from both files. - let current = fs::File::open(format!("{PROTO_DIRECTORY}/objects.proto")) - .map(BufReader::new) - .expect("read current"); - let snapshot = fs::File::open(format!( - "{PROTO_DIRECTORY}/objects_v{CATALOG_VERSION}.proto" - )) - .map(BufReader::new) - .expect("read snapshot"); + let src_dir: PathBuf = [env!("CARGO_MANIFEST_DIR"), "src"].iter().collect(); + let current_rs = src_dir.join("objects.rs"); + let snapshot_rs = src_dir.join(format!("objects_v{CATALOG_VERSION}.rs")); - // Read in all of the lines so we can compare the content of †he files. - let current: Vec<_> = current - .lines() - .map(|r| r.expect("failed to read line from current")) - // Filter out the package name, since we expect that to be different. - .filter(|line| line != "package objects;") - .collect(); - let snapshot: Vec<_> = snapshot - .lines() - .map(|r| r.expect("failed to read line from current")) - // Filter out the package name, since we expect that to be different. - .filter(|line| line != &format!("package objects_v{CATALOG_VERSION};")) - .collect(); + let current = fs::read_to_string(current_rs).expect("read current"); + let snapshot = fs::read_to_string(snapshot_rs).expect("read snapshot"); - // Note: objects.proto and objects_v.proto should be exactly the same. The + // Note: objects.rs and objects_v.rs should be exactly the same. The // reason being, when bumping the catalog to the next version, CATALOG_VERSION + 1, we need a - // snapshot to migrate _from_, which should be a snapshot of how the protos are today. + // snapshot to migrate _from_, which should be a snapshot of how the types are today. // Hence why the two files should be exactly the same. similar_asserts::assert_eq!(current, snapshot); } diff --git a/src/catalog-protos/src/objects.rs b/src/catalog-protos/src/objects.rs new file mode 100644 index 0000000000000..2e584d3c20547 --- /dev/null +++ b/src/catalog-protos/src/objects.rs @@ -0,0 +1,1815 @@ +use num_enum::{IntoPrimitive, TryFromPrimitive}; +use proptest_derive::Arbitrary; +use serde::{Deserialize, Serialize}; + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ConfigKey { + pub key: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ConfigValue { + pub value: u64, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SettingKey { + pub name: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SettingValue { + pub value: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct IdAllocKey { + pub name: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct IdAllocValue { + pub next_id: u64, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct GidMappingKey { + pub schema_name: String, + pub object_type: i32, + pub object_name: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct GidMappingValue { + pub id: u64, + pub fingerprint: String, + pub global_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterValue { + pub name: String, + pub owner_id: Option, + pub privileges: Vec, + pub config: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterIntrospectionSourceIndexKey { + pub cluster_id: Option, + pub name: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterIntrospectionSourceIndexValue { + pub index_id: u64, + pub oid: u32, + pub global_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterReplicaKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterReplicaValue { + pub cluster_id: Option, + pub name: String, + pub config: Option, + pub owner_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DatabaseKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DatabaseValue { + pub name: String, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaValue { + pub database_id: Option, + pub name: String, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ItemKey { + pub gid: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ItemValue { + pub schema_id: Option, + pub name: String, + pub definition: Option, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, + pub global_id: Option, + pub extra_versions: Vec, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ItemVersion { + pub global_id: Option, + pub version: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleValue { + pub name: String, + pub attributes: Option, + pub membership: Option, + pub vars: Option, + pub oid: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleAuthKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleAuthValue { + pub password_hash: Option, + pub updated_at: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct NetworkPolicyKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct NetworkPolicyValue { + pub name: String, + pub rules: Vec, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ServerConfigurationKey { + pub name: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ServerConfigurationValue { + pub value: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct AuditLogKey { + pub event: Option, +} + +pub mod audit_log_key { + use super::*; + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Event { + V1(AuditLogEventV1), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CommentKey { + pub object: Option, + pub sub_component: Option, +} + +pub mod comment_key { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Object { + Table(CatalogItemId), + View(CatalogItemId), + MaterializedView(CatalogItemId), + Source(CatalogItemId), + Sink(CatalogItemId), + Index(CatalogItemId), + Func(CatalogItemId), + Connection(CatalogItemId), + Type(CatalogItemId), + Secret(CatalogItemId), + ContinualTask(CatalogItemId), + Role(RoleId), + Database(DatabaseId), + Schema(ResolvedSchema), + Cluster(ClusterId), + ClusterReplica(ClusterReplicaId), + NetworkPolicy(NetworkPolicyId), + } + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum SubComponent { + ColumnPos(u64), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CommentValue { + pub comment: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SourceReferencesKey { + pub source: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SourceReferencesValue { + pub references: Vec, + pub updated_at: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SourceReference { + pub name: String, + pub namespace: Option, + pub columns: Vec, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StorageCollectionMetadataKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StorageCollectionMetadataValue { + pub shard: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct UnfinalizedShardKey { + pub shard: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct TxnWalShardValue { + pub shard: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Empty {} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StringWrapper { + pub inner: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Duration { + pub secs: u64, + pub nanos: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct EpochMillis { + pub millis: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Timestamp { + pub internal: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Version { + pub value: u64, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CatalogItem { + pub value: Option, +} + +pub mod catalog_item { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct V1 { + pub create_sql: String, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Value { + V1(V1), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CatalogItemId { + pub value: Option, +} + +pub mod catalog_item_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + Transient(u64), + IntrospectionSourceIndex(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemCatalogItemId { + pub value: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct IntrospectionSourceIndexCatalogItemId { + pub value: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct GlobalId { + pub value: Option, +} + +pub mod global_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + Transient(u64), + Explain(Empty), + IntrospectionSourceIndex(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemGlobalId { + pub value: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct IntrospectionSourceIndexGlobalId { + pub value: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterId { + pub value: Option, +} + +pub mod cluster_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DatabaseId { + pub value: Option, +} + +pub mod database_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ResolvedDatabaseSpecifier { + pub spec: Option, +} + +pub mod resolved_database_specifier { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Spec { + Ambient(Empty), + Id(DatabaseId), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaId { + pub value: Option, +} + +pub mod schema_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaSpecifier { + pub spec: Option, +} + +pub mod schema_specifier { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Spec { + Temporary(Empty), + Id(SchemaId), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ResolvedSchema { + pub database: Option, + pub schema: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ReplicaId { + pub value: Option, +} + +pub mod replica_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterReplicaId { + pub cluster_id: Option, + pub replica_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct NetworkPolicyId { + pub value: Option, +} + +pub mod network_policy_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ReplicaLogging { + pub log_logging: bool, + pub interval: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct OptimizerFeatureOverride { + pub name: String, + pub value: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterScheduleRefreshOptions { + pub rehydration_time_estimate: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterSchedule { + pub value: Option, +} + +pub mod cluster_schedule { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + Manual(Empty), + Refresh(ClusterScheduleRefreshOptions), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterConfig { + pub workload_class: Option, + pub variant: Option, +} + +pub mod cluster_config { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ManagedCluster { + pub size: String, + pub replication_factor: u32, + pub availability_zones: Vec, + pub logging: Option, + pub optimizer_feature_overrides: Vec, + pub schedule: Option, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Variant { + Unmanaged(Empty), + Managed(ManagedCluster), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ReplicaConfig { + pub logging: Option, + pub location: Option, +} + +pub mod replica_config { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UnmanagedLocation { + pub storagectl_addrs: Vec, + pub computectl_addrs: Vec, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ManagedLocation { + pub size: String, + pub availability_zone: Option, + pub internal: bool, + pub billed_as: Option, + pub pending: bool, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Location { + Unmanaged(UnmanagedLocation), + Managed(ManagedLocation), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleId { + pub value: Option, +} + +pub mod role_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + Public(Empty), + Predefined(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleAttributes { + pub inherit: bool, + pub superuser: Option, + pub login: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleMembership { + pub map: Vec, +} + +pub mod role_membership { + use super::*; + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct Entry { + pub key: Option, + pub value: Option, + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleVars { + pub entries: Vec, +} + +pub mod role_vars { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SqlSet { + pub entries: Vec, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Entry { + pub key: String, + pub val: Option, + } + + pub mod entry { + use super::*; + + #[derive( + Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Val { + Flat(String), + SqlSet(SqlSet), + } + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct NetworkPolicyRule { + pub name: String, + pub address: String, + pub action: Option, + pub direction: Option, +} + +pub mod network_policy_rule { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Action { + Allow(Empty), + } + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Direction { + Ingress(Empty), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct AclMode { + pub bitflags: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct MzAclItem { + pub grantee: Option, + pub grantor: Option, + pub acl_mode: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DefaultPrivilegesKey { + pub role_id: Option, + pub database_id: Option, + pub schema_id: Option, + pub object_type: i32, + pub grantee: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DefaultPrivilegesValue { + pub privileges: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemPrivilegesKey { + pub grantee: Option, + pub grantor: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemPrivilegesValue { + pub acl_mode: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct AuditLogEventV1 { + pub id: u64, + pub event_type: i32, + pub object_type: i32, + pub user: Option, + pub occurred_at: Option, + pub details: Option, +} + +pub mod audit_log_event_v1 { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct IdFullNameV1 { + pub id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct FullNameV1 { + pub database: String, + pub schema: String, + pub item: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct IdNameV1 { + pub id: String, + pub name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameClusterV1 { + pub id: String, + pub old_name: String, + pub new_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameClusterReplicaV1 { + pub cluster_id: String, + pub replica_id: String, + pub old_name: String, + pub new_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameItemV1 { + pub id: String, + pub old_name: Option, + pub new_name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateClusterReplicaV1 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub logical_size: String, + pub disk: bool, + pub billed_as: Option, + pub internal: bool, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateClusterReplicaV2 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub logical_size: String, + pub disk: bool, + pub billed_as: Option, + pub internal: bool, + pub reason: Option, + pub scheduling_policies: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateClusterReplicaV3 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub logical_size: String, + pub disk: bool, + pub billed_as: Option, + pub internal: bool, + pub reason: Option, + pub scheduling_policies: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateClusterReplicaV4 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub logical_size: String, + pub billed_as: Option, + pub internal: bool, + pub reason: Option, + pub scheduling_policies: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct DropClusterReplicaV1 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct DropClusterReplicaV2 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub reason: Option, + pub scheduling_policies: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct DropClusterReplicaV3 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub reason: Option, + pub scheduling_policies: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct CreateOrDropClusterReplicaReasonV1 { + pub reason: Option, + } + + pub mod create_or_drop_cluster_replica_reason_v1 { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Reason { + Manual(Empty), + Schedule(Empty), + System(Empty), + } + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SchedulingDecisionsWithReasonsV1 { + pub on_refresh: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SchedulingDecisionsWithReasonsV2 { + pub on_refresh: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RefreshDecisionWithReasonV1 { + pub objects_needing_refresh: Vec, + pub rehydration_time_estimate: String, + pub decision: Option, + } + + pub mod refresh_decision_with_reason_v1 { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Decision { + On(Empty), + Off(Empty), + } + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RefreshDecisionWithReasonV2 { + pub objects_needing_refresh: Vec, + pub objects_needing_compaction: Vec, + pub rehydration_time_estimate: String, + pub decision: Option, + } + + pub mod refresh_decision_with_reason_v2 { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Decision { + On(Empty), + Off(Empty), + } + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV1 { + pub id: String, + pub name: Option, + pub size: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV2 { + pub id: String, + pub name: Option, + pub size: Option, + pub external_type: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV3 { + pub id: String, + pub name: Option, + pub external_type: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV4 { + pub id: String, + pub cluster_id: Option, + pub name: Option, + pub external_type: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateIndexV1 { + pub id: String, + pub cluster_id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateMaterializedViewV1 { + pub id: String, + pub cluster_id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterSourceSinkV1 { + pub id: String, + pub name: Option, + pub old_size: Option, + pub new_size: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterSetClusterV1 { + pub id: String, + pub name: Option, + pub old_cluster: Option, + pub new_cluster: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct GrantRoleV1 { + pub role_id: String, + pub member_id: String, + pub grantor_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct GrantRoleV2 { + pub role_id: String, + pub member_id: String, + pub grantor_id: String, + pub executed_by: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RevokeRoleV1 { + pub role_id: String, + pub member_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RevokeRoleV2 { + pub role_id: String, + pub member_id: String, + pub grantor_id: String, + pub executed_by: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UpdatePrivilegeV1 { + pub object_id: String, + pub grantee_id: String, + pub grantor_id: String, + pub privileges: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterDefaultPrivilegeV1 { + pub role_id: String, + pub database_id: Option, + pub schema_id: Option, + pub grantee_id: String, + pub privileges: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UpdateOwnerV1 { + pub object_id: String, + pub old_owner_id: String, + pub new_owner_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SchemaV1 { + pub id: String, + pub name: String, + pub database_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SchemaV2 { + pub id: String, + pub name: String, + pub database_name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameSchemaV1 { + pub id: String, + pub database_name: Option, + pub old_name: String, + pub new_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UpdateItemV1 { + pub id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterRetainHistoryV1 { + pub id: String, + pub old_history: Option, + pub new_history: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ToNewIdV1 { + pub id: String, + pub new_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct FromPreviousIdV1 { + pub id: String, + pub previous_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SetV1 { + pub name: String, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RotateKeysV1 { + pub id: String, + pub name: String, + } + + #[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, + )] + #[repr(i32)] + pub enum EventType { + Unknown = 0, + Create = 1, + Drop = 2, + Alter = 3, + Grant = 4, + Revoke = 5, + Comment = 6, + } + + #[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, + )] + #[repr(i32)] + pub enum ObjectType { + Unknown = 0, + Cluster = 1, + ClusterReplica = 2, + Connection = 3, + Database = 4, + Func = 5, + Index = 6, + MaterializedView = 7, + Role = 8, + Secret = 9, + Schema = 10, + Sink = 11, + Source = 12, + Table = 13, + Type = 14, + View = 15, + System = 16, + ContinualTask = 17, + NetworkPolicy = 18, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Details { + CreateClusterReplicaV1(CreateClusterReplicaV1), + CreateClusterReplicaV2(CreateClusterReplicaV2), + CreateClusterReplicaV3(CreateClusterReplicaV3), + CreateClusterReplicaV4(CreateClusterReplicaV4), + DropClusterReplicaV1(DropClusterReplicaV1), + DropClusterReplicaV2(DropClusterReplicaV2), + DropClusterReplicaV3(DropClusterReplicaV3), + CreateSourceSinkV1(CreateSourceSinkV1), + CreateSourceSinkV2(CreateSourceSinkV2), + AlterSourceSinkV1(AlterSourceSinkV1), + AlterSetClusterV1(AlterSetClusterV1), + GrantRoleV1(GrantRoleV1), + GrantRoleV2(GrantRoleV2), + RevokeRoleV1(RevokeRoleV1), + RevokeRoleV2(RevokeRoleV2), + UpdatePrivilegeV1(UpdatePrivilegeV1), + AlterDefaultPrivilegeV1(AlterDefaultPrivilegeV1), + UpdateOwnerV1(UpdateOwnerV1), + IdFullNameV1(IdFullNameV1), + RenameClusterV1(RenameClusterV1), + RenameClusterReplicaV1(RenameClusterReplicaV1), + RenameItemV1(RenameItemV1), + IdNameV1(IdNameV1), + SchemaV1(SchemaV1), + SchemaV2(SchemaV2), + RenameSchemaV1(RenameSchemaV1), + UpdateItemV1(UpdateItemV1), + CreateSourceSinkV3(CreateSourceSinkV3), + AlterRetainHistoryV1(AlterRetainHistoryV1), + ToNewIdV1(ToNewIdV1), + FromPreviousIdV1(FromPreviousIdV1), + SetV1(SetV1), + ResetAllV1(Empty), + RotateKeysV1(RotateKeysV1), + CreateSourceSinkV4(CreateSourceSinkV4), + CreateIndexV1(CreateIndexV1), + CreateMaterializedViewV1(CreateMaterializedViewV1), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StateUpdateKind { + pub kind: Option, +} + +pub mod state_update_kind { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AuditLog { + pub key: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Cluster { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ClusterReplica { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Comment { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Config { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Database { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct DefaultPrivileges { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct FenceToken { + pub deploy_generation: u64, + pub epoch: i64, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct IdAlloc { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ClusterIntrospectionSourceIndex { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Item { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Role { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RoleAuth { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct NetworkPolicy { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Schema { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Setting { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ServerConfiguration { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SourceReferences { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct GidMapping { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct SystemPrivileges { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct StorageCollectionMetadata { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UnfinalizedShard { + pub key: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct TxnWalShard { + pub value: Option, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + // Serialize the top-level enum in the persist-backed catalog as internally tagged to set up + // persist pushdown statistics for success. + #[serde(tag = "kind")] + pub enum Kind { + AuditLog(AuditLog), + Cluster(Cluster), + ClusterReplica(ClusterReplica), + Comment(Comment), + Config(Config), + Database(Database), + DefaultPrivileges(DefaultPrivileges), + IdAlloc(IdAlloc), + ClusterIntrospectionSourceIndex(ClusterIntrospectionSourceIndex), + Item(Item), + Role(Role), + Schema(Schema), + Setting(Setting), + ServerConfiguration(ServerConfiguration), + GidMapping(GidMapping), + SystemPrivileges(SystemPrivileges), + StorageCollectionMetadata(StorageCollectionMetadata), + UnfinalizedShard(UnfinalizedShard), + TxnWalShard(TxnWalShard), + SourceReferences(SourceReferences), + FenceToken(FenceToken), + NetworkPolicy(NetworkPolicy), + RoleAuth(RoleAuth), + } +} + +#[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, +)] +#[repr(i32)] +pub enum CatalogItemType { + Unknown = 0, + Table = 1, + Source = 2, + Sink = 3, + View = 4, + MaterializedView = 5, + Index = 6, + Type = 7, + Func = 8, + Secret = 9, + Connection = 10, + ContinualTask = 11, +} + +#[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, +)] +#[repr(i32)] +pub enum ObjectType { + Unknown = 0, + Table = 1, + View = 2, + MaterializedView = 3, + Source = 4, + Sink = 5, + Index = 6, + Type = 7, + Role = 8, + Cluster = 9, + ClusterReplica = 10, + Secret = 11, + Connection = 12, + Database = 13, + Schema = 14, + Func = 15, + ContinualTask = 16, + NetworkPolicy = 17, +} diff --git a/src/catalog-protos/src/objects_v67.rs b/src/catalog-protos/src/objects_v67.rs new file mode 100644 index 0000000000000..ad95f5539c55e --- /dev/null +++ b/src/catalog-protos/src/objects_v67.rs @@ -0,0 +1,1573 @@ +use num_enum::{IntoPrimitive, TryFromPrimitive}; +use proptest_derive::Arbitrary; +use serde::{Deserialize, Serialize}; + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ConfigKey { + pub key: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ConfigValue { + pub value: u64, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SettingKey { + pub name: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SettingValue { + pub value: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct IdAllocKey { + pub name: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct IdAllocValue { + pub next_id: u64, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct GidMappingKey { + pub schema_name: String, + pub object_type: i32, + pub object_name: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct GidMappingValue { + pub id: u64, + pub fingerprint: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterValue { + pub name: String, + pub owner_id: Option, + pub privileges: Vec, + pub config: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterIntrospectionSourceIndexKey { + pub cluster_id: Option, + pub name: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterIntrospectionSourceIndexValue { + pub index_id: u64, + pub oid: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterReplicaKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterReplicaValue { + pub cluster_id: Option, + pub name: String, + pub config: Option, + pub owner_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DatabaseKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DatabaseValue { + pub name: String, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaValue { + pub database_id: Option, + pub name: String, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ItemKey { + pub gid: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ItemValue { + pub schema_id: Option, + pub name: String, + pub definition: Option, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleValue { + pub name: String, + pub attributes: Option, + pub membership: Option, + pub vars: Option, + pub oid: u32, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ServerConfigurationKey { + pub name: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ServerConfigurationValue { + pub value: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct AuditLogKey { + pub event: Option, +} + +pub mod audit_log_key { + use super::*; + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Event { + V1(AuditLogEventV1), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CommentKey { + pub object: Option, + pub sub_component: Option, +} + +pub mod comment_key { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Object { + Table(GlobalId), + View(GlobalId), + MaterializedView(GlobalId), + Source(GlobalId), + Sink(GlobalId), + Index(GlobalId), + Func(GlobalId), + Connection(GlobalId), + Type(GlobalId), + Secret(GlobalId), + ContinualTask(GlobalId), + Role(RoleId), + Database(DatabaseId), + Schema(ResolvedSchema), + Cluster(ClusterId), + ClusterReplica(ClusterReplicaId), + } + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum SubComponent { + ColumnPos(u64), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CommentValue { + pub comment: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SourceReferencesKey { + pub source: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SourceReferencesValue { + pub references: Vec, + pub updated_at: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SourceReference { + pub name: String, + pub namespace: Option, + pub columns: Vec, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StorageCollectionMetadataKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StorageCollectionMetadataValue { + pub shard: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct UnfinalizedShardKey { + pub shard: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct TxnWalShardValue { + pub shard: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Empty {} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StringWrapper { + pub inner: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Duration { + pub secs: u64, + pub nanos: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct EpochMillis { + pub millis: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Timestamp { + pub internal: u64, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CatalogItem { + pub value: Option, +} + +pub mod catalog_item { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct V1 { + pub create_sql: String, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Value { + V1(V1), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct GlobalId { + pub value: Option, +} + +pub mod global_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + Transient(u64), + Explain(Empty), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterId { + pub value: Option, +} + +pub mod cluster_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DatabaseId { + pub value: Option, +} + +pub mod database_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ResolvedDatabaseSpecifier { + pub spec: Option, +} + +pub mod resolved_database_specifier { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Spec { + Ambient(Empty), + Id(DatabaseId), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaId { + pub value: Option, +} + +pub mod schema_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaSpecifier { + pub spec: Option, +} + +pub mod schema_specifier { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Spec { + Temporary(Empty), + Id(SchemaId), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ResolvedSchema { + pub database: Option, + pub schema: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ReplicaId { + pub value: Option, +} + +pub mod replica_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterReplicaId { + pub cluster_id: Option, + pub replica_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ReplicaLogging { + pub log_logging: bool, + pub interval: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct OptimizerFeatureOverride { + pub name: String, + pub value: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterScheduleRefreshOptions { + pub rehydration_time_estimate: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterSchedule { + pub value: Option, +} + +pub mod cluster_schedule { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + Manual(Empty), + Refresh(ClusterScheduleRefreshOptions), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterConfig { + pub workload_class: Option, + pub variant: Option, +} + +pub mod cluster_config { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ManagedCluster { + pub size: String, + pub replication_factor: u32, + pub availability_zones: Vec, + pub logging: Option, + pub disk: bool, + pub optimizer_feature_overrides: Vec, + pub schedule: Option, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Variant { + Unmanaged(Empty), + Managed(ManagedCluster), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ReplicaConfig { + pub logging: Option, + pub location: Option, +} + +pub mod replica_config { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UnmanagedLocation { + pub storagectl_addrs: Vec, + pub storage_addrs: Vec, + pub computectl_addrs: Vec, + pub compute_addrs: Vec, + pub workers: u64, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ManagedLocation { + pub size: String, + pub availability_zone: Option, + pub disk: bool, + pub internal: bool, + pub billed_as: Option, + pub pending: bool, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Location { + Unmanaged(UnmanagedLocation), + Managed(ManagedLocation), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleId { + pub value: Option, +} + +pub mod role_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + Public(Empty), + Predefined(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleAttributes { + pub inherit: bool, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleMembership { + pub map: Vec, +} + +pub mod role_membership { + use super::*; + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct Entry { + pub key: Option, + pub value: Option, + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleVars { + pub entries: Vec, +} + +pub mod role_vars { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SqlSet { + pub entries: Vec, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Entry { + pub key: String, + pub val: Option, + } + + pub mod entry { + use super::*; + + #[derive( + Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Val { + Flat(String), + SqlSet(SqlSet), + } + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct AclMode { + pub bitflags: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct MzAclItem { + pub grantee: Option, + pub grantor: Option, + pub acl_mode: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DefaultPrivilegesKey { + pub role_id: Option, + pub database_id: Option, + pub schema_id: Option, + pub object_type: i32, + pub grantee: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DefaultPrivilegesValue { + pub privileges: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemPrivilegesKey { + pub grantee: Option, + pub grantor: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemPrivilegesValue { + pub acl_mode: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct AuditLogEventV1 { + pub id: u64, + pub event_type: i32, + pub object_type: i32, + pub user: Option, + pub occurred_at: Option, + pub details: Option, +} + +pub mod audit_log_event_v1 { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct IdFullNameV1 { + pub id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct FullNameV1 { + pub database: String, + pub schema: String, + pub item: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct IdNameV1 { + pub id: String, + pub name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameClusterV1 { + pub id: String, + pub old_name: String, + pub new_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameClusterReplicaV1 { + pub cluster_id: String, + pub replica_id: String, + pub old_name: String, + pub new_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameItemV1 { + pub id: String, + pub old_name: Option, + pub new_name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateClusterReplicaV1 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub logical_size: String, + pub disk: bool, + pub billed_as: Option, + pub internal: bool, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateClusterReplicaV2 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub logical_size: String, + pub disk: bool, + pub billed_as: Option, + pub internal: bool, + pub reason: Option, + pub scheduling_policies: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct DropClusterReplicaV1 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct DropClusterReplicaV2 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub reason: Option, + pub scheduling_policies: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct CreateOrDropClusterReplicaReasonV1 { + pub reason: Option, + } + + pub mod create_or_drop_cluster_replica_reason_v1 { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Reason { + Manual(Empty), + Schedule(Empty), + System(Empty), + } + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SchedulingDecisionsWithReasonsV1 { + pub on_refresh: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RefreshDecisionWithReasonV1 { + pub objects_needing_refresh: Vec, + pub rehydration_time_estimate: String, + pub decision: Option, + } + + pub mod refresh_decision_with_reason_v1 { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Decision { + On(Empty), + Off(Empty), + } + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV1 { + pub id: String, + pub name: Option, + pub size: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV2 { + pub id: String, + pub name: Option, + pub size: Option, + pub external_type: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV3 { + pub id: String, + pub name: Option, + pub external_type: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV4 { + pub id: String, + pub cluster_id: Option, + pub name: Option, + pub external_type: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateIndexV1 { + pub id: String, + pub cluster_id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateMaterializedViewV1 { + pub id: String, + pub cluster_id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterSourceSinkV1 { + pub id: String, + pub name: Option, + pub old_size: Option, + pub new_size: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterSetClusterV1 { + pub id: String, + pub name: Option, + pub old_cluster: Option, + pub new_cluster: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct GrantRoleV1 { + pub role_id: String, + pub member_id: String, + pub grantor_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct GrantRoleV2 { + pub role_id: String, + pub member_id: String, + pub grantor_id: String, + pub executed_by: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RevokeRoleV1 { + pub role_id: String, + pub member_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RevokeRoleV2 { + pub role_id: String, + pub member_id: String, + pub grantor_id: String, + pub executed_by: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UpdatePrivilegeV1 { + pub object_id: String, + pub grantee_id: String, + pub grantor_id: String, + pub privileges: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterDefaultPrivilegeV1 { + pub role_id: String, + pub database_id: Option, + pub schema_id: Option, + pub grantee_id: String, + pub privileges: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UpdateOwnerV1 { + pub object_id: String, + pub old_owner_id: String, + pub new_owner_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SchemaV1 { + pub id: String, + pub name: String, + pub database_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SchemaV2 { + pub id: String, + pub name: String, + pub database_name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameSchemaV1 { + pub id: String, + pub database_name: Option, + pub old_name: String, + pub new_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UpdateItemV1 { + pub id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterRetainHistoryV1 { + pub id: String, + pub old_history: Option, + pub new_history: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ToNewIdV1 { + pub id: String, + pub new_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct FromPreviousIdV1 { + pub id: String, + pub previous_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SetV1 { + pub name: String, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RotateKeysV1 { + pub id: String, + pub name: String, + } + + #[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, + )] + #[repr(i32)] + pub enum EventType { + Unknown = 0, + Create = 1, + Drop = 2, + Alter = 3, + Grant = 4, + Revoke = 5, + Comment = 6, + } + + #[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, + )] + #[repr(i32)] + pub enum ObjectType { + Unknown = 0, + Cluster = 1, + ClusterReplica = 2, + Connection = 3, + Database = 4, + Func = 5, + Index = 6, + MaterializedView = 7, + Role = 8, + Secret = 9, + Schema = 10, + Sink = 11, + Source = 12, + Table = 13, + Type = 14, + View = 15, + System = 16, + ContinualTask = 17, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Details { + CreateClusterReplicaV1(CreateClusterReplicaV1), + CreateClusterReplicaV2(CreateClusterReplicaV2), + DropClusterReplicaV1(DropClusterReplicaV1), + DropClusterReplicaV2(DropClusterReplicaV2), + CreateSourceSinkV1(CreateSourceSinkV1), + CreateSourceSinkV2(CreateSourceSinkV2), + AlterSourceSinkV1(AlterSourceSinkV1), + AlterSetClusterV1(AlterSetClusterV1), + GrantRoleV1(GrantRoleV1), + GrantRoleV2(GrantRoleV2), + RevokeRoleV1(RevokeRoleV1), + RevokeRoleV2(RevokeRoleV2), + UpdatePrivilegeV1(UpdatePrivilegeV1), + AlterDefaultPrivilegeV1(AlterDefaultPrivilegeV1), + UpdateOwnerV1(UpdateOwnerV1), + IdFullNameV1(IdFullNameV1), + RenameClusterV1(RenameClusterV1), + RenameClusterReplicaV1(RenameClusterReplicaV1), + RenameItemV1(RenameItemV1), + IdNameV1(IdNameV1), + SchemaV1(SchemaV1), + SchemaV2(SchemaV2), + RenameSchemaV1(RenameSchemaV1), + UpdateItemV1(UpdateItemV1), + CreateSourceSinkV3(CreateSourceSinkV3), + AlterRetainHistoryV1(AlterRetainHistoryV1), + ToNewIdV1(ToNewIdV1), + FromPreviousIdV1(FromPreviousIdV1), + SetV1(SetV1), + ResetAllV1(Empty), + RotateKeysV1(RotateKeysV1), + CreateSourceSinkV4(CreateSourceSinkV4), + CreateIndexV1(CreateIndexV1), + CreateMaterializedViewV1(CreateMaterializedViewV1), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StateUpdateKind { + pub kind: Option, +} + +pub mod state_update_kind { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AuditLog { + pub key: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Cluster { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ClusterReplica { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Comment { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Config { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Database { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct DefaultPrivileges { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct FenceToken { + pub deploy_generation: u64, + pub epoch: i64, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct IdAlloc { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ClusterIntrospectionSourceIndex { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Item { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Role { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Schema { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Setting { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ServerConfiguration { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SourceReferences { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct GidMapping { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct SystemPrivileges { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct StorageCollectionMetadata { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UnfinalizedShard { + pub key: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct TxnWalShard { + pub value: Option, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + // Serialize the top-level enum in the persist-backed catalog as internally tagged to set up + // persist pushdown statistics for success. + #[serde(tag = "kind")] + pub enum Kind { + AuditLog(AuditLog), + Cluster(Cluster), + ClusterReplica(ClusterReplica), + Comment(Comment), + Config(Config), + Database(Database), + DefaultPrivileges(DefaultPrivileges), + IdAlloc(IdAlloc), + ClusterIntrospectionSourceIndex(ClusterIntrospectionSourceIndex), + Item(Item), + Role(Role), + Schema(Schema), + Setting(Setting), + ServerConfiguration(ServerConfiguration), + GidMapping(GidMapping), + SystemPrivileges(SystemPrivileges), + StorageCollectionMetadata(StorageCollectionMetadata), + UnfinalizedShard(UnfinalizedShard), + TxnWalShard(TxnWalShard), + SourceReferences(SourceReferences), + FenceToken(FenceToken), + } +} + +#[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, +)] +#[repr(i32)] +pub enum CatalogItemType { + Unknown = 0, + Table = 1, + Source = 2, + Sink = 3, + View = 4, + MaterializedView = 5, + Index = 6, + Type = 7, + Func = 8, + Secret = 9, + Connection = 10, + ContinualTask = 11, +} + +#[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, +)] +#[repr(i32)] +pub enum ObjectType { + Unknown = 0, + Table = 1, + View = 2, + MaterializedView = 3, + Source = 4, + Sink = 5, + Index = 6, + Type = 7, + Role = 8, + Cluster = 9, + ClusterReplica = 10, + Secret = 11, + Connection = 12, + Database = 13, + Schema = 14, + Func = 15, + ContinualTask = 16, +} diff --git a/src/catalog-protos/src/objects_v68.rs b/src/catalog-protos/src/objects_v68.rs new file mode 100644 index 0000000000000..d42314dfa0119 --- /dev/null +++ b/src/catalog-protos/src/objects_v68.rs @@ -0,0 +1,1626 @@ +use num_enum::{IntoPrimitive, TryFromPrimitive}; +use proptest_derive::Arbitrary; +use serde::{Deserialize, Serialize}; + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ConfigKey { + pub key: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ConfigValue { + pub value: u64, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SettingKey { + pub name: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SettingValue { + pub value: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct IdAllocKey { + pub name: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct IdAllocValue { + pub next_id: u64, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct GidMappingKey { + pub schema_name: String, + pub object_type: i32, + pub object_name: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct GidMappingValue { + pub id: u64, + pub fingerprint: String, + pub global_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterValue { + pub name: String, + pub owner_id: Option, + pub privileges: Vec, + pub config: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterIntrospectionSourceIndexKey { + pub cluster_id: Option, + pub name: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterIntrospectionSourceIndexValue { + pub index_id: u64, + pub oid: u32, + pub global_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterReplicaKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterReplicaValue { + pub cluster_id: Option, + pub name: String, + pub config: Option, + pub owner_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DatabaseKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DatabaseValue { + pub name: String, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaValue { + pub database_id: Option, + pub name: String, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ItemKey { + pub gid: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ItemValue { + pub schema_id: Option, + pub name: String, + pub definition: Option, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, + pub global_id: Option, + pub extra_versions: Vec, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ItemVersion { + pub global_id: Option, + pub version: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleValue { + pub name: String, + pub attributes: Option, + pub membership: Option, + pub vars: Option, + pub oid: u32, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ServerConfigurationKey { + pub name: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ServerConfigurationValue { + pub value: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct AuditLogKey { + pub event: Option, +} + +pub mod audit_log_key { + use super::*; + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Event { + V1(AuditLogEventV1), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CommentKey { + pub object: Option, + pub sub_component: Option, +} + +pub mod comment_key { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Object { + Table(CatalogItemId), + View(CatalogItemId), + MaterializedView(CatalogItemId), + Source(CatalogItemId), + Sink(CatalogItemId), + Index(CatalogItemId), + Func(CatalogItemId), + Connection(CatalogItemId), + Type(CatalogItemId), + Secret(CatalogItemId), + ContinualTask(CatalogItemId), + Role(RoleId), + Database(DatabaseId), + Schema(ResolvedSchema), + Cluster(ClusterId), + ClusterReplica(ClusterReplicaId), + } + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum SubComponent { + ColumnPos(u64), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CommentValue { + pub comment: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SourceReferencesKey { + pub source: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SourceReferencesValue { + pub references: Vec, + pub updated_at: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SourceReference { + pub name: String, + pub namespace: Option, + pub columns: Vec, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StorageCollectionMetadataKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StorageCollectionMetadataValue { + pub shard: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct UnfinalizedShardKey { + pub shard: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct TxnWalShardValue { + pub shard: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Empty {} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StringWrapper { + pub inner: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Duration { + pub secs: u64, + pub nanos: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct EpochMillis { + pub millis: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Timestamp { + pub internal: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Version { + pub value: u64, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CatalogItem { + pub value: Option, +} + +pub mod catalog_item { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct V1 { + pub create_sql: String, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Value { + V1(V1), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CatalogItemId { + pub value: Option, +} + +pub mod catalog_item_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + Transient(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemCatalogItemId { + pub value: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct GlobalId { + pub value: Option, +} + +pub mod global_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + Transient(u64), + Explain(Empty), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemGlobalId { + pub value: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterId { + pub value: Option, +} + +pub mod cluster_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DatabaseId { + pub value: Option, +} + +pub mod database_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ResolvedDatabaseSpecifier { + pub spec: Option, +} + +pub mod resolved_database_specifier { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Spec { + Ambient(Empty), + Id(DatabaseId), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaId { + pub value: Option, +} + +pub mod schema_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaSpecifier { + pub spec: Option, +} + +pub mod schema_specifier { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Spec { + Temporary(Empty), + Id(SchemaId), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ResolvedSchema { + pub database: Option, + pub schema: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ReplicaId { + pub value: Option, +} + +pub mod replica_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterReplicaId { + pub cluster_id: Option, + pub replica_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ReplicaLogging { + pub log_logging: bool, + pub interval: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct OptimizerFeatureOverride { + pub name: String, + pub value: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterScheduleRefreshOptions { + pub rehydration_time_estimate: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterSchedule { + pub value: Option, +} + +pub mod cluster_schedule { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + Manual(Empty), + Refresh(ClusterScheduleRefreshOptions), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterConfig { + pub workload_class: Option, + pub variant: Option, +} + +pub mod cluster_config { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ManagedCluster { + pub size: String, + pub replication_factor: u32, + pub availability_zones: Vec, + pub logging: Option, + pub disk: bool, + pub optimizer_feature_overrides: Vec, + pub schedule: Option, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Variant { + Unmanaged(Empty), + Managed(ManagedCluster), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ReplicaConfig { + pub logging: Option, + pub location: Option, +} + +pub mod replica_config { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UnmanagedLocation { + pub storagectl_addrs: Vec, + pub storage_addrs: Vec, + pub computectl_addrs: Vec, + pub compute_addrs: Vec, + pub workers: u64, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ManagedLocation { + pub size: String, + pub availability_zone: Option, + pub disk: bool, + pub internal: bool, + pub billed_as: Option, + pub pending: bool, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Location { + Unmanaged(UnmanagedLocation), + Managed(ManagedLocation), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleId { + pub value: Option, +} + +pub mod role_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + Public(Empty), + Predefined(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleAttributes { + pub inherit: bool, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleMembership { + pub map: Vec, +} + +pub mod role_membership { + use super::*; + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct Entry { + pub key: Option, + pub value: Option, + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleVars { + pub entries: Vec, +} + +pub mod role_vars { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SqlSet { + pub entries: Vec, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Entry { + pub key: String, + pub val: Option, + } + + pub mod entry { + use super::*; + + #[derive( + Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Val { + Flat(String), + SqlSet(SqlSet), + } + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct AclMode { + pub bitflags: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct MzAclItem { + pub grantee: Option, + pub grantor: Option, + pub acl_mode: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DefaultPrivilegesKey { + pub role_id: Option, + pub database_id: Option, + pub schema_id: Option, + pub object_type: i32, + pub grantee: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DefaultPrivilegesValue { + pub privileges: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemPrivilegesKey { + pub grantee: Option, + pub grantor: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemPrivilegesValue { + pub acl_mode: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct AuditLogEventV1 { + pub id: u64, + pub event_type: i32, + pub object_type: i32, + pub user: Option, + pub occurred_at: Option, + pub details: Option, +} + +pub mod audit_log_event_v1 { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct IdFullNameV1 { + pub id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct FullNameV1 { + pub database: String, + pub schema: String, + pub item: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct IdNameV1 { + pub id: String, + pub name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameClusterV1 { + pub id: String, + pub old_name: String, + pub new_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameClusterReplicaV1 { + pub cluster_id: String, + pub replica_id: String, + pub old_name: String, + pub new_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameItemV1 { + pub id: String, + pub old_name: Option, + pub new_name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateClusterReplicaV1 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub logical_size: String, + pub disk: bool, + pub billed_as: Option, + pub internal: bool, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateClusterReplicaV2 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub logical_size: String, + pub disk: bool, + pub billed_as: Option, + pub internal: bool, + pub reason: Option, + pub scheduling_policies: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct DropClusterReplicaV1 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct DropClusterReplicaV2 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub reason: Option, + pub scheduling_policies: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct CreateOrDropClusterReplicaReasonV1 { + pub reason: Option, + } + + pub mod create_or_drop_cluster_replica_reason_v1 { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Reason { + Manual(Empty), + Schedule(Empty), + System(Empty), + } + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SchedulingDecisionsWithReasonsV1 { + pub on_refresh: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RefreshDecisionWithReasonV1 { + pub objects_needing_refresh: Vec, + pub rehydration_time_estimate: String, + pub decision: Option, + } + + pub mod refresh_decision_with_reason_v1 { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Decision { + On(Empty), + Off(Empty), + } + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV1 { + pub id: String, + pub name: Option, + pub size: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV2 { + pub id: String, + pub name: Option, + pub size: Option, + pub external_type: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV3 { + pub id: String, + pub name: Option, + pub external_type: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV4 { + pub id: String, + pub cluster_id: Option, + pub name: Option, + pub external_type: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateIndexV1 { + pub id: String, + pub cluster_id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateMaterializedViewV1 { + pub id: String, + pub cluster_id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterSourceSinkV1 { + pub id: String, + pub name: Option, + pub old_size: Option, + pub new_size: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterSetClusterV1 { + pub id: String, + pub name: Option, + pub old_cluster: Option, + pub new_cluster: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct GrantRoleV1 { + pub role_id: String, + pub member_id: String, + pub grantor_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct GrantRoleV2 { + pub role_id: String, + pub member_id: String, + pub grantor_id: String, + pub executed_by: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RevokeRoleV1 { + pub role_id: String, + pub member_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RevokeRoleV2 { + pub role_id: String, + pub member_id: String, + pub grantor_id: String, + pub executed_by: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UpdatePrivilegeV1 { + pub object_id: String, + pub grantee_id: String, + pub grantor_id: String, + pub privileges: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterDefaultPrivilegeV1 { + pub role_id: String, + pub database_id: Option, + pub schema_id: Option, + pub grantee_id: String, + pub privileges: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UpdateOwnerV1 { + pub object_id: String, + pub old_owner_id: String, + pub new_owner_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SchemaV1 { + pub id: String, + pub name: String, + pub database_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SchemaV2 { + pub id: String, + pub name: String, + pub database_name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameSchemaV1 { + pub id: String, + pub database_name: Option, + pub old_name: String, + pub new_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UpdateItemV1 { + pub id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterRetainHistoryV1 { + pub id: String, + pub old_history: Option, + pub new_history: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ToNewIdV1 { + pub id: String, + pub new_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct FromPreviousIdV1 { + pub id: String, + pub previous_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SetV1 { + pub name: String, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RotateKeysV1 { + pub id: String, + pub name: String, + } + + #[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, + )] + #[repr(i32)] + pub enum EventType { + Unknown = 0, + Create = 1, + Drop = 2, + Alter = 3, + Grant = 4, + Revoke = 5, + Comment = 6, + } + + #[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, + )] + #[repr(i32)] + pub enum ObjectType { + Unknown = 0, + Cluster = 1, + ClusterReplica = 2, + Connection = 3, + Database = 4, + Func = 5, + Index = 6, + MaterializedView = 7, + Role = 8, + Secret = 9, + Schema = 10, + Sink = 11, + Source = 12, + Table = 13, + Type = 14, + View = 15, + System = 16, + ContinualTask = 17, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Details { + CreateClusterReplicaV1(CreateClusterReplicaV1), + CreateClusterReplicaV2(CreateClusterReplicaV2), + DropClusterReplicaV1(DropClusterReplicaV1), + DropClusterReplicaV2(DropClusterReplicaV2), + CreateSourceSinkV1(CreateSourceSinkV1), + CreateSourceSinkV2(CreateSourceSinkV2), + AlterSourceSinkV1(AlterSourceSinkV1), + AlterSetClusterV1(AlterSetClusterV1), + GrantRoleV1(GrantRoleV1), + GrantRoleV2(GrantRoleV2), + RevokeRoleV1(RevokeRoleV1), + RevokeRoleV2(RevokeRoleV2), + UpdatePrivilegeV1(UpdatePrivilegeV1), + AlterDefaultPrivilegeV1(AlterDefaultPrivilegeV1), + UpdateOwnerV1(UpdateOwnerV1), + IdFullNameV1(IdFullNameV1), + RenameClusterV1(RenameClusterV1), + RenameClusterReplicaV1(RenameClusterReplicaV1), + RenameItemV1(RenameItemV1), + IdNameV1(IdNameV1), + SchemaV1(SchemaV1), + SchemaV2(SchemaV2), + RenameSchemaV1(RenameSchemaV1), + UpdateItemV1(UpdateItemV1), + CreateSourceSinkV3(CreateSourceSinkV3), + AlterRetainHistoryV1(AlterRetainHistoryV1), + ToNewIdV1(ToNewIdV1), + FromPreviousIdV1(FromPreviousIdV1), + SetV1(SetV1), + ResetAllV1(Empty), + RotateKeysV1(RotateKeysV1), + CreateSourceSinkV4(CreateSourceSinkV4), + CreateIndexV1(CreateIndexV1), + CreateMaterializedViewV1(CreateMaterializedViewV1), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StateUpdateKind { + pub kind: Option, +} + +pub mod state_update_kind { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AuditLog { + pub key: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Cluster { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ClusterReplica { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Comment { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Config { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Database { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct DefaultPrivileges { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct FenceToken { + pub deploy_generation: u64, + pub epoch: i64, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct IdAlloc { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ClusterIntrospectionSourceIndex { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Item { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Role { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Schema { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Setting { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ServerConfiguration { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SourceReferences { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct GidMapping { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct SystemPrivileges { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct StorageCollectionMetadata { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UnfinalizedShard { + pub key: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct TxnWalShard { + pub value: Option, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + // Serialize the top-level enum in the persist-backed catalog as internally tagged to set up + // persist pushdown statistics for success. + #[serde(tag = "kind")] + pub enum Kind { + AuditLog(AuditLog), + Cluster(Cluster), + ClusterReplica(ClusterReplica), + Comment(Comment), + Config(Config), + Database(Database), + DefaultPrivileges(DefaultPrivileges), + IdAlloc(IdAlloc), + ClusterIntrospectionSourceIndex(ClusterIntrospectionSourceIndex), + Item(Item), + Role(Role), + Schema(Schema), + Setting(Setting), + ServerConfiguration(ServerConfiguration), + GidMapping(GidMapping), + SystemPrivileges(SystemPrivileges), + StorageCollectionMetadata(StorageCollectionMetadata), + UnfinalizedShard(UnfinalizedShard), + TxnWalShard(TxnWalShard), + SourceReferences(SourceReferences), + FenceToken(FenceToken), + } +} + +#[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, +)] +#[repr(i32)] +pub enum CatalogItemType { + Unknown = 0, + Table = 1, + Source = 2, + Sink = 3, + View = 4, + MaterializedView = 5, + Index = 6, + Type = 7, + Func = 8, + Secret = 9, + Connection = 10, + ContinualTask = 11, +} + +#[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, +)] +#[repr(i32)] +pub enum ObjectType { + Unknown = 0, + Table = 1, + View = 2, + MaterializedView = 3, + Source = 4, + Sink = 5, + Index = 6, + Type = 7, + Role = 8, + Cluster = 9, + ClusterReplica = 10, + Secret = 11, + Connection = 12, + Database = 13, + Schema = 14, + Func = 15, + ContinualTask = 16, +} diff --git a/src/catalog-protos/src/objects_v69.rs b/src/catalog-protos/src/objects_v69.rs new file mode 100644 index 0000000000000..49b33a87a9506 --- /dev/null +++ b/src/catalog-protos/src/objects_v69.rs @@ -0,0 +1,1703 @@ +use num_enum::{IntoPrimitive, TryFromPrimitive}; +use proptest_derive::Arbitrary; +use serde::{Deserialize, Serialize}; + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ConfigKey { + pub key: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ConfigValue { + pub value: u64, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SettingKey { + pub name: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SettingValue { + pub value: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct IdAllocKey { + pub name: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct IdAllocValue { + pub next_id: u64, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct GidMappingKey { + pub schema_name: String, + pub object_type: i32, + pub object_name: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct GidMappingValue { + pub id: u64, + pub fingerprint: String, + pub global_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterValue { + pub name: String, + pub owner_id: Option, + pub privileges: Vec, + pub config: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterIntrospectionSourceIndexKey { + pub cluster_id: Option, + pub name: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterIntrospectionSourceIndexValue { + pub index_id: u64, + pub oid: u32, + pub global_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterReplicaKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterReplicaValue { + pub cluster_id: Option, + pub name: String, + pub config: Option, + pub owner_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DatabaseKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DatabaseValue { + pub name: String, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaValue { + pub database_id: Option, + pub name: String, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ItemKey { + pub gid: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ItemValue { + pub schema_id: Option, + pub name: String, + pub definition: Option, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, + pub global_id: Option, + pub extra_versions: Vec, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ItemVersion { + pub global_id: Option, + pub version: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleValue { + pub name: String, + pub attributes: Option, + pub membership: Option, + pub vars: Option, + pub oid: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct NetworkPolicyKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct NetworkPolicyValue { + pub name: String, + pub rules: Vec, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ServerConfigurationKey { + pub name: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ServerConfigurationValue { + pub value: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct AuditLogKey { + pub event: Option, +} + +pub mod audit_log_key { + use super::*; + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Event { + V1(AuditLogEventV1), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CommentKey { + pub object: Option, + pub sub_component: Option, +} + +pub mod comment_key { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Object { + Table(CatalogItemId), + View(CatalogItemId), + MaterializedView(CatalogItemId), + Source(CatalogItemId), + Sink(CatalogItemId), + Index(CatalogItemId), + Func(CatalogItemId), + Connection(CatalogItemId), + Type(CatalogItemId), + Secret(CatalogItemId), + ContinualTask(CatalogItemId), + Role(RoleId), + Database(DatabaseId), + Schema(ResolvedSchema), + Cluster(ClusterId), + ClusterReplica(ClusterReplicaId), + NetworkPolicy(NetworkPolicyId), + } + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum SubComponent { + ColumnPos(u64), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CommentValue { + pub comment: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SourceReferencesKey { + pub source: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SourceReferencesValue { + pub references: Vec, + pub updated_at: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SourceReference { + pub name: String, + pub namespace: Option, + pub columns: Vec, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StorageCollectionMetadataKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StorageCollectionMetadataValue { + pub shard: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct UnfinalizedShardKey { + pub shard: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct TxnWalShardValue { + pub shard: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Empty {} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StringWrapper { + pub inner: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Duration { + pub secs: u64, + pub nanos: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct EpochMillis { + pub millis: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Timestamp { + pub internal: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Version { + pub value: u64, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CatalogItem { + pub value: Option, +} + +pub mod catalog_item { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct V1 { + pub create_sql: String, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Value { + V1(V1), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CatalogItemId { + pub value: Option, +} + +pub mod catalog_item_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + Transient(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemCatalogItemId { + pub value: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct GlobalId { + pub value: Option, +} + +pub mod global_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + Transient(u64), + Explain(Empty), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemGlobalId { + pub value: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterId { + pub value: Option, +} + +pub mod cluster_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DatabaseId { + pub value: Option, +} + +pub mod database_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ResolvedDatabaseSpecifier { + pub spec: Option, +} + +pub mod resolved_database_specifier { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Spec { + Ambient(Empty), + Id(DatabaseId), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaId { + pub value: Option, +} + +pub mod schema_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaSpecifier { + pub spec: Option, +} + +pub mod schema_specifier { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Spec { + Temporary(Empty), + Id(SchemaId), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ResolvedSchema { + pub database: Option, + pub schema: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ReplicaId { + pub value: Option, +} + +pub mod replica_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterReplicaId { + pub cluster_id: Option, + pub replica_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct NetworkPolicyId { + pub value: Option, +} + +pub mod network_policy_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ReplicaLogging { + pub log_logging: bool, + pub interval: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct OptimizerFeatureOverride { + pub name: String, + pub value: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterScheduleRefreshOptions { + pub rehydration_time_estimate: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterSchedule { + pub value: Option, +} + +pub mod cluster_schedule { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + Manual(Empty), + Refresh(ClusterScheduleRefreshOptions), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterConfig { + pub workload_class: Option, + pub variant: Option, +} + +pub mod cluster_config { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ManagedCluster { + pub size: String, + pub replication_factor: u32, + pub availability_zones: Vec, + pub logging: Option, + pub disk: bool, + pub optimizer_feature_overrides: Vec, + pub schedule: Option, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Variant { + Unmanaged(Empty), + Managed(ManagedCluster), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ReplicaConfig { + pub logging: Option, + pub location: Option, +} + +pub mod replica_config { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UnmanagedLocation { + pub storagectl_addrs: Vec, + pub storage_addrs: Vec, + pub computectl_addrs: Vec, + pub compute_addrs: Vec, + pub workers: u64, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ManagedLocation { + pub size: String, + pub availability_zone: Option, + pub disk: bool, + pub internal: bool, + pub billed_as: Option, + pub pending: bool, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Location { + Unmanaged(UnmanagedLocation), + Managed(ManagedLocation), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleId { + pub value: Option, +} + +pub mod role_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + Public(Empty), + Predefined(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleAttributes { + pub inherit: bool, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleMembership { + pub map: Vec, +} + +pub mod role_membership { + use super::*; + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct Entry { + pub key: Option, + pub value: Option, + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleVars { + pub entries: Vec, +} + +pub mod role_vars { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SqlSet { + pub entries: Vec, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Entry { + pub key: String, + pub val: Option, + } + + pub mod entry { + use super::*; + + #[derive( + Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Val { + Flat(String), + SqlSet(SqlSet), + } + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct NetworkPolicyRule { + pub name: String, + pub address: String, + pub action: Option, + pub direction: Option, +} + +pub mod network_policy_rule { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Action { + Allow(Empty), + } + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Direction { + Ingress(Empty), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct AclMode { + pub bitflags: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct MzAclItem { + pub grantee: Option, + pub grantor: Option, + pub acl_mode: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DefaultPrivilegesKey { + pub role_id: Option, + pub database_id: Option, + pub schema_id: Option, + pub object_type: i32, + pub grantee: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DefaultPrivilegesValue { + pub privileges: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemPrivilegesKey { + pub grantee: Option, + pub grantor: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemPrivilegesValue { + pub acl_mode: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct AuditLogEventV1 { + pub id: u64, + pub event_type: i32, + pub object_type: i32, + pub user: Option, + pub occurred_at: Option, + pub details: Option, +} + +pub mod audit_log_event_v1 { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct IdFullNameV1 { + pub id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct FullNameV1 { + pub database: String, + pub schema: String, + pub item: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct IdNameV1 { + pub id: String, + pub name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameClusterV1 { + pub id: String, + pub old_name: String, + pub new_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameClusterReplicaV1 { + pub cluster_id: String, + pub replica_id: String, + pub old_name: String, + pub new_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameItemV1 { + pub id: String, + pub old_name: Option, + pub new_name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateClusterReplicaV1 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub logical_size: String, + pub disk: bool, + pub billed_as: Option, + pub internal: bool, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateClusterReplicaV2 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub logical_size: String, + pub disk: bool, + pub billed_as: Option, + pub internal: bool, + pub reason: Option, + pub scheduling_policies: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct DropClusterReplicaV1 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct DropClusterReplicaV2 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub reason: Option, + pub scheduling_policies: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct CreateOrDropClusterReplicaReasonV1 { + pub reason: Option, + } + + pub mod create_or_drop_cluster_replica_reason_v1 { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Reason { + Manual(Empty), + Schedule(Empty), + System(Empty), + } + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SchedulingDecisionsWithReasonsV1 { + pub on_refresh: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RefreshDecisionWithReasonV1 { + pub objects_needing_refresh: Vec, + pub rehydration_time_estimate: String, + pub decision: Option, + } + + pub mod refresh_decision_with_reason_v1 { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Decision { + On(Empty), + Off(Empty), + } + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV1 { + pub id: String, + pub name: Option, + pub size: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV2 { + pub id: String, + pub name: Option, + pub size: Option, + pub external_type: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV3 { + pub id: String, + pub name: Option, + pub external_type: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV4 { + pub id: String, + pub cluster_id: Option, + pub name: Option, + pub external_type: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateIndexV1 { + pub id: String, + pub cluster_id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateMaterializedViewV1 { + pub id: String, + pub cluster_id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterSourceSinkV1 { + pub id: String, + pub name: Option, + pub old_size: Option, + pub new_size: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterSetClusterV1 { + pub id: String, + pub name: Option, + pub old_cluster: Option, + pub new_cluster: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct GrantRoleV1 { + pub role_id: String, + pub member_id: String, + pub grantor_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct GrantRoleV2 { + pub role_id: String, + pub member_id: String, + pub grantor_id: String, + pub executed_by: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RevokeRoleV1 { + pub role_id: String, + pub member_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RevokeRoleV2 { + pub role_id: String, + pub member_id: String, + pub grantor_id: String, + pub executed_by: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UpdatePrivilegeV1 { + pub object_id: String, + pub grantee_id: String, + pub grantor_id: String, + pub privileges: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterDefaultPrivilegeV1 { + pub role_id: String, + pub database_id: Option, + pub schema_id: Option, + pub grantee_id: String, + pub privileges: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UpdateOwnerV1 { + pub object_id: String, + pub old_owner_id: String, + pub new_owner_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SchemaV1 { + pub id: String, + pub name: String, + pub database_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SchemaV2 { + pub id: String, + pub name: String, + pub database_name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameSchemaV1 { + pub id: String, + pub database_name: Option, + pub old_name: String, + pub new_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UpdateItemV1 { + pub id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterRetainHistoryV1 { + pub id: String, + pub old_history: Option, + pub new_history: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ToNewIdV1 { + pub id: String, + pub new_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct FromPreviousIdV1 { + pub id: String, + pub previous_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SetV1 { + pub name: String, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RotateKeysV1 { + pub id: String, + pub name: String, + } + + #[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, + )] + #[repr(i32)] + pub enum EventType { + Unknown = 0, + Create = 1, + Drop = 2, + Alter = 3, + Grant = 4, + Revoke = 5, + Comment = 6, + } + + #[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, + )] + #[repr(i32)] + pub enum ObjectType { + Unknown = 0, + Cluster = 1, + ClusterReplica = 2, + Connection = 3, + Database = 4, + Func = 5, + Index = 6, + MaterializedView = 7, + Role = 8, + Secret = 9, + Schema = 10, + Sink = 11, + Source = 12, + Table = 13, + Type = 14, + View = 15, + System = 16, + ContinualTask = 17, + NetworkPolicy = 18, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Details { + CreateClusterReplicaV1(CreateClusterReplicaV1), + CreateClusterReplicaV2(CreateClusterReplicaV2), + DropClusterReplicaV1(DropClusterReplicaV1), + DropClusterReplicaV2(DropClusterReplicaV2), + CreateSourceSinkV1(CreateSourceSinkV1), + CreateSourceSinkV2(CreateSourceSinkV2), + AlterSourceSinkV1(AlterSourceSinkV1), + AlterSetClusterV1(AlterSetClusterV1), + GrantRoleV1(GrantRoleV1), + GrantRoleV2(GrantRoleV2), + RevokeRoleV1(RevokeRoleV1), + RevokeRoleV2(RevokeRoleV2), + UpdatePrivilegeV1(UpdatePrivilegeV1), + AlterDefaultPrivilegeV1(AlterDefaultPrivilegeV1), + UpdateOwnerV1(UpdateOwnerV1), + IdFullNameV1(IdFullNameV1), + RenameClusterV1(RenameClusterV1), + RenameClusterReplicaV1(RenameClusterReplicaV1), + RenameItemV1(RenameItemV1), + IdNameV1(IdNameV1), + SchemaV1(SchemaV1), + SchemaV2(SchemaV2), + RenameSchemaV1(RenameSchemaV1), + UpdateItemV1(UpdateItemV1), + CreateSourceSinkV3(CreateSourceSinkV3), + AlterRetainHistoryV1(AlterRetainHistoryV1), + ToNewIdV1(ToNewIdV1), + FromPreviousIdV1(FromPreviousIdV1), + SetV1(SetV1), + ResetAllV1(Empty), + RotateKeysV1(RotateKeysV1), + CreateSourceSinkV4(CreateSourceSinkV4), + CreateIndexV1(CreateIndexV1), + CreateMaterializedViewV1(CreateMaterializedViewV1), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StateUpdateKind { + pub kind: Option, +} + +pub mod state_update_kind { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AuditLog { + pub key: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Cluster { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ClusterReplica { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Comment { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Config { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Database { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct DefaultPrivileges { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct FenceToken { + pub deploy_generation: u64, + pub epoch: i64, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct IdAlloc { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ClusterIntrospectionSourceIndex { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Item { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Role { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct NetworkPolicy { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Schema { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Setting { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ServerConfiguration { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SourceReferences { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct GidMapping { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct SystemPrivileges { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct StorageCollectionMetadata { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UnfinalizedShard { + pub key: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct TxnWalShard { + pub value: Option, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + // Serialize the top-level enum in the persist-backed catalog as internally tagged to set up + // persist pushdown statistics for success. + #[serde(tag = "kind")] + pub enum Kind { + AuditLog(AuditLog), + Cluster(Cluster), + ClusterReplica(ClusterReplica), + Comment(Comment), + Config(Config), + Database(Database), + DefaultPrivileges(DefaultPrivileges), + IdAlloc(IdAlloc), + ClusterIntrospectionSourceIndex(ClusterIntrospectionSourceIndex), + Item(Item), + Role(Role), + Schema(Schema), + Setting(Setting), + ServerConfiguration(ServerConfiguration), + GidMapping(GidMapping), + SystemPrivileges(SystemPrivileges), + StorageCollectionMetadata(StorageCollectionMetadata), + UnfinalizedShard(UnfinalizedShard), + TxnWalShard(TxnWalShard), + SourceReferences(SourceReferences), + FenceToken(FenceToken), + NetworkPolicy(NetworkPolicy), + } +} + +#[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, +)] +#[repr(i32)] +pub enum CatalogItemType { + Unknown = 0, + Table = 1, + Source = 2, + Sink = 3, + View = 4, + MaterializedView = 5, + Index = 6, + Type = 7, + Func = 8, + Secret = 9, + Connection = 10, + ContinualTask = 11, +} + +#[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, +)] +#[repr(i32)] +pub enum ObjectType { + Unknown = 0, + Table = 1, + View = 2, + MaterializedView = 3, + Source = 4, + Sink = 5, + Index = 6, + Type = 7, + Role = 8, + Cluster = 9, + ClusterReplica = 10, + Secret = 11, + Connection = 12, + Database = 13, + Schema = 14, + Func = 15, + ContinualTask = 16, + NetworkPolicy = 17, +} diff --git a/src/catalog-protos/src/objects_v70.rs b/src/catalog-protos/src/objects_v70.rs new file mode 100644 index 0000000000000..34628daf12845 --- /dev/null +++ b/src/catalog-protos/src/objects_v70.rs @@ -0,0 +1,1761 @@ +use num_enum::{IntoPrimitive, TryFromPrimitive}; +use proptest_derive::Arbitrary; +use serde::{Deserialize, Serialize}; + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ConfigKey { + pub key: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ConfigValue { + pub value: u64, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SettingKey { + pub name: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SettingValue { + pub value: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct IdAllocKey { + pub name: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct IdAllocValue { + pub next_id: u64, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct GidMappingKey { + pub schema_name: String, + pub object_type: i32, + pub object_name: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct GidMappingValue { + pub id: u64, + pub fingerprint: String, + pub global_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterValue { + pub name: String, + pub owner_id: Option, + pub privileges: Vec, + pub config: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterIntrospectionSourceIndexKey { + pub cluster_id: Option, + pub name: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterIntrospectionSourceIndexValue { + pub index_id: u64, + pub oid: u32, + pub global_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterReplicaKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterReplicaValue { + pub cluster_id: Option, + pub name: String, + pub config: Option, + pub owner_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DatabaseKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DatabaseValue { + pub name: String, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaValue { + pub database_id: Option, + pub name: String, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ItemKey { + pub gid: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ItemValue { + pub schema_id: Option, + pub name: String, + pub definition: Option, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, + pub global_id: Option, + pub extra_versions: Vec, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ItemVersion { + pub global_id: Option, + pub version: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleValue { + pub name: String, + pub attributes: Option, + pub membership: Option, + pub vars: Option, + pub oid: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct NetworkPolicyKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct NetworkPolicyValue { + pub name: String, + pub rules: Vec, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ServerConfigurationKey { + pub name: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ServerConfigurationValue { + pub value: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct AuditLogKey { + pub event: Option, +} + +pub mod audit_log_key { + use super::*; + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Event { + V1(AuditLogEventV1), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CommentKey { + pub object: Option, + pub sub_component: Option, +} + +pub mod comment_key { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Object { + Table(CatalogItemId), + View(CatalogItemId), + MaterializedView(CatalogItemId), + Source(CatalogItemId), + Sink(CatalogItemId), + Index(CatalogItemId), + Func(CatalogItemId), + Connection(CatalogItemId), + Type(CatalogItemId), + Secret(CatalogItemId), + ContinualTask(CatalogItemId), + Role(RoleId), + Database(DatabaseId), + Schema(ResolvedSchema), + Cluster(ClusterId), + ClusterReplica(ClusterReplicaId), + NetworkPolicy(NetworkPolicyId), + } + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum SubComponent { + ColumnPos(u64), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CommentValue { + pub comment: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SourceReferencesKey { + pub source: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SourceReferencesValue { + pub references: Vec, + pub updated_at: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SourceReference { + pub name: String, + pub namespace: Option, + pub columns: Vec, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StorageCollectionMetadataKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StorageCollectionMetadataValue { + pub shard: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct UnfinalizedShardKey { + pub shard: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct TxnWalShardValue { + pub shard: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Empty {} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StringWrapper { + pub inner: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Duration { + pub secs: u64, + pub nanos: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct EpochMillis { + pub millis: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Timestamp { + pub internal: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Version { + pub value: u64, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CatalogItem { + pub value: Option, +} + +pub mod catalog_item { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct V1 { + pub create_sql: String, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Value { + V1(V1), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CatalogItemId { + pub value: Option, +} + +pub mod catalog_item_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + Transient(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemCatalogItemId { + pub value: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct GlobalId { + pub value: Option, +} + +pub mod global_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + Transient(u64), + Explain(Empty), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemGlobalId { + pub value: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterId { + pub value: Option, +} + +pub mod cluster_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DatabaseId { + pub value: Option, +} + +pub mod database_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ResolvedDatabaseSpecifier { + pub spec: Option, +} + +pub mod resolved_database_specifier { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Spec { + Ambient(Empty), + Id(DatabaseId), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaId { + pub value: Option, +} + +pub mod schema_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaSpecifier { + pub spec: Option, +} + +pub mod schema_specifier { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Spec { + Temporary(Empty), + Id(SchemaId), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ResolvedSchema { + pub database: Option, + pub schema: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ReplicaId { + pub value: Option, +} + +pub mod replica_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterReplicaId { + pub cluster_id: Option, + pub replica_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct NetworkPolicyId { + pub value: Option, +} + +pub mod network_policy_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ReplicaLogging { + pub log_logging: bool, + pub interval: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct OptimizerFeatureOverride { + pub name: String, + pub value: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterScheduleRefreshOptions { + pub rehydration_time_estimate: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterSchedule { + pub value: Option, +} + +pub mod cluster_schedule { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + Manual(Empty), + Refresh(ClusterScheduleRefreshOptions), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterConfig { + pub workload_class: Option, + pub variant: Option, +} + +pub mod cluster_config { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ManagedCluster { + pub size: String, + pub replication_factor: u32, + pub availability_zones: Vec, + pub logging: Option, + pub disk: bool, + pub optimizer_feature_overrides: Vec, + pub schedule: Option, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Variant { + Unmanaged(Empty), + Managed(ManagedCluster), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ReplicaConfig { + pub logging: Option, + pub location: Option, +} + +pub mod replica_config { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UnmanagedLocation { + pub storagectl_addrs: Vec, + pub storage_addrs: Vec, + pub computectl_addrs: Vec, + pub compute_addrs: Vec, + pub workers: u64, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ManagedLocation { + pub size: String, + pub availability_zone: Option, + pub disk: bool, + pub internal: bool, + pub billed_as: Option, + pub pending: bool, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Location { + Unmanaged(UnmanagedLocation), + Managed(ManagedLocation), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleId { + pub value: Option, +} + +pub mod role_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + Public(Empty), + Predefined(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleAttributes { + pub inherit: bool, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleMembership { + pub map: Vec, +} + +pub mod role_membership { + use super::*; + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct Entry { + pub key: Option, + pub value: Option, + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleVars { + pub entries: Vec, +} + +pub mod role_vars { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SqlSet { + pub entries: Vec, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Entry { + pub key: String, + pub val: Option, + } + + pub mod entry { + use super::*; + + #[derive( + Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Val { + Flat(String), + SqlSet(SqlSet), + } + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct NetworkPolicyRule { + pub name: String, + pub address: String, + pub action: Option, + pub direction: Option, +} + +pub mod network_policy_rule { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Action { + Allow(Empty), + } + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Direction { + Ingress(Empty), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct AclMode { + pub bitflags: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct MzAclItem { + pub grantee: Option, + pub grantor: Option, + pub acl_mode: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DefaultPrivilegesKey { + pub role_id: Option, + pub database_id: Option, + pub schema_id: Option, + pub object_type: i32, + pub grantee: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DefaultPrivilegesValue { + pub privileges: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemPrivilegesKey { + pub grantee: Option, + pub grantor: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemPrivilegesValue { + pub acl_mode: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct AuditLogEventV1 { + pub id: u64, + pub event_type: i32, + pub object_type: i32, + pub user: Option, + pub occurred_at: Option, + pub details: Option, +} + +pub mod audit_log_event_v1 { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct IdFullNameV1 { + pub id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct FullNameV1 { + pub database: String, + pub schema: String, + pub item: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct IdNameV1 { + pub id: String, + pub name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameClusterV1 { + pub id: String, + pub old_name: String, + pub new_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameClusterReplicaV1 { + pub cluster_id: String, + pub replica_id: String, + pub old_name: String, + pub new_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameItemV1 { + pub id: String, + pub old_name: Option, + pub new_name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateClusterReplicaV1 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub logical_size: String, + pub disk: bool, + pub billed_as: Option, + pub internal: bool, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateClusterReplicaV2 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub logical_size: String, + pub disk: bool, + pub billed_as: Option, + pub internal: bool, + pub reason: Option, + pub scheduling_policies: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateClusterReplicaV3 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub logical_size: String, + pub disk: bool, + pub billed_as: Option, + pub internal: bool, + pub reason: Option, + pub scheduling_policies: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct DropClusterReplicaV1 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct DropClusterReplicaV2 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub reason: Option, + pub scheduling_policies: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct DropClusterReplicaV3 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub reason: Option, + pub scheduling_policies: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct CreateOrDropClusterReplicaReasonV1 { + pub reason: Option, + } + + pub mod create_or_drop_cluster_replica_reason_v1 { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Reason { + Manual(Empty), + Schedule(Empty), + System(Empty), + } + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SchedulingDecisionsWithReasonsV1 { + pub on_refresh: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SchedulingDecisionsWithReasonsV2 { + pub on_refresh: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RefreshDecisionWithReasonV1 { + pub objects_needing_refresh: Vec, + pub rehydration_time_estimate: String, + pub decision: Option, + } + + pub mod refresh_decision_with_reason_v1 { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Decision { + On(Empty), + Off(Empty), + } + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RefreshDecisionWithReasonV2 { + pub objects_needing_refresh: Vec, + pub objects_needing_compaction: Vec, + pub rehydration_time_estimate: String, + pub decision: Option, + } + + pub mod refresh_decision_with_reason_v2 { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Decision { + On(Empty), + Off(Empty), + } + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV1 { + pub id: String, + pub name: Option, + pub size: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV2 { + pub id: String, + pub name: Option, + pub size: Option, + pub external_type: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV3 { + pub id: String, + pub name: Option, + pub external_type: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV4 { + pub id: String, + pub cluster_id: Option, + pub name: Option, + pub external_type: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateIndexV1 { + pub id: String, + pub cluster_id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateMaterializedViewV1 { + pub id: String, + pub cluster_id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterSourceSinkV1 { + pub id: String, + pub name: Option, + pub old_size: Option, + pub new_size: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterSetClusterV1 { + pub id: String, + pub name: Option, + pub old_cluster: Option, + pub new_cluster: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct GrantRoleV1 { + pub role_id: String, + pub member_id: String, + pub grantor_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct GrantRoleV2 { + pub role_id: String, + pub member_id: String, + pub grantor_id: String, + pub executed_by: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RevokeRoleV1 { + pub role_id: String, + pub member_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RevokeRoleV2 { + pub role_id: String, + pub member_id: String, + pub grantor_id: String, + pub executed_by: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UpdatePrivilegeV1 { + pub object_id: String, + pub grantee_id: String, + pub grantor_id: String, + pub privileges: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterDefaultPrivilegeV1 { + pub role_id: String, + pub database_id: Option, + pub schema_id: Option, + pub grantee_id: String, + pub privileges: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UpdateOwnerV1 { + pub object_id: String, + pub old_owner_id: String, + pub new_owner_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SchemaV1 { + pub id: String, + pub name: String, + pub database_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SchemaV2 { + pub id: String, + pub name: String, + pub database_name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameSchemaV1 { + pub id: String, + pub database_name: Option, + pub old_name: String, + pub new_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UpdateItemV1 { + pub id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterRetainHistoryV1 { + pub id: String, + pub old_history: Option, + pub new_history: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ToNewIdV1 { + pub id: String, + pub new_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct FromPreviousIdV1 { + pub id: String, + pub previous_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SetV1 { + pub name: String, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RotateKeysV1 { + pub id: String, + pub name: String, + } + + #[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, + )] + #[repr(i32)] + pub enum EventType { + Unknown = 0, + Create = 1, + Drop = 2, + Alter = 3, + Grant = 4, + Revoke = 5, + Comment = 6, + } + + #[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, + )] + #[repr(i32)] + pub enum ObjectType { + Unknown = 0, + Cluster = 1, + ClusterReplica = 2, + Connection = 3, + Database = 4, + Func = 5, + Index = 6, + MaterializedView = 7, + Role = 8, + Secret = 9, + Schema = 10, + Sink = 11, + Source = 12, + Table = 13, + Type = 14, + View = 15, + System = 16, + ContinualTask = 17, + NetworkPolicy = 18, + } + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Details { + CreateClusterReplicaV1(CreateClusterReplicaV1), + CreateClusterReplicaV2(CreateClusterReplicaV2), + CreateClusterReplicaV3(CreateClusterReplicaV3), + DropClusterReplicaV1(DropClusterReplicaV1), + DropClusterReplicaV2(DropClusterReplicaV2), + DropClusterReplicaV3(DropClusterReplicaV3), + CreateSourceSinkV1(CreateSourceSinkV1), + CreateSourceSinkV2(CreateSourceSinkV2), + AlterSourceSinkV1(AlterSourceSinkV1), + AlterSetClusterV1(AlterSetClusterV1), + GrantRoleV1(GrantRoleV1), + GrantRoleV2(GrantRoleV2), + RevokeRoleV1(RevokeRoleV1), + RevokeRoleV2(RevokeRoleV2), + UpdatePrivilegeV1(UpdatePrivilegeV1), + AlterDefaultPrivilegeV1(AlterDefaultPrivilegeV1), + UpdateOwnerV1(UpdateOwnerV1), + IdFullNameV1(IdFullNameV1), + RenameClusterV1(RenameClusterV1), + RenameClusterReplicaV1(RenameClusterReplicaV1), + RenameItemV1(RenameItemV1), + IdNameV1(IdNameV1), + SchemaV1(SchemaV1), + SchemaV2(SchemaV2), + RenameSchemaV1(RenameSchemaV1), + UpdateItemV1(UpdateItemV1), + CreateSourceSinkV3(CreateSourceSinkV3), + AlterRetainHistoryV1(AlterRetainHistoryV1), + ToNewIdV1(ToNewIdV1), + FromPreviousIdV1(FromPreviousIdV1), + SetV1(SetV1), + ResetAllV1(Empty), + RotateKeysV1(RotateKeysV1), + CreateSourceSinkV4(CreateSourceSinkV4), + CreateIndexV1(CreateIndexV1), + CreateMaterializedViewV1(CreateMaterializedViewV1), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StateUpdateKind { + pub kind: Option, +} + +pub mod state_update_kind { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AuditLog { + pub key: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Cluster { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ClusterReplica { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Comment { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Config { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Database { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct DefaultPrivileges { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct FenceToken { + pub deploy_generation: u64, + pub epoch: i64, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct IdAlloc { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ClusterIntrospectionSourceIndex { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Item { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Role { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct NetworkPolicy { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Schema { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Setting { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ServerConfiguration { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SourceReferences { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct GidMapping { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct SystemPrivileges { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct StorageCollectionMetadata { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UnfinalizedShard { + pub key: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct TxnWalShard { + pub value: Option, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + // Serialize the top-level enum in the persist-backed catalog as internally tagged to set up + // persist pushdown statistics for success. + #[serde(tag = "kind")] + pub enum Kind { + AuditLog(AuditLog), + Cluster(Cluster), + ClusterReplica(ClusterReplica), + Comment(Comment), + Config(Config), + Database(Database), + DefaultPrivileges(DefaultPrivileges), + IdAlloc(IdAlloc), + ClusterIntrospectionSourceIndex(ClusterIntrospectionSourceIndex), + Item(Item), + Role(Role), + Schema(Schema), + Setting(Setting), + ServerConfiguration(ServerConfiguration), + GidMapping(GidMapping), + SystemPrivileges(SystemPrivileges), + StorageCollectionMetadata(StorageCollectionMetadata), + UnfinalizedShard(UnfinalizedShard), + TxnWalShard(TxnWalShard), + SourceReferences(SourceReferences), + FenceToken(FenceToken), + NetworkPolicy(NetworkPolicy), + } +} + +#[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, +)] +#[repr(i32)] +pub enum CatalogItemType { + Unknown = 0, + Table = 1, + Source = 2, + Sink = 3, + View = 4, + MaterializedView = 5, + Index = 6, + Type = 7, + Func = 8, + Secret = 9, + Connection = 10, + ContinualTask = 11, +} + +#[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, +)] +#[repr(i32)] +pub enum ObjectType { + Unknown = 0, + Table = 1, + View = 2, + MaterializedView = 3, + Source = 4, + Sink = 5, + Index = 6, + Type = 7, + Role = 8, + Cluster = 9, + ClusterReplica = 10, + Secret = 11, + Connection = 12, + Database = 13, + Schema = 14, + Func = 15, + ContinualTask = 16, + NetworkPolicy = 17, +} diff --git a/src/catalog-protos/src/objects_v71.rs b/src/catalog-protos/src/objects_v71.rs new file mode 100644 index 0000000000000..34628daf12845 --- /dev/null +++ b/src/catalog-protos/src/objects_v71.rs @@ -0,0 +1,1761 @@ +use num_enum::{IntoPrimitive, TryFromPrimitive}; +use proptest_derive::Arbitrary; +use serde::{Deserialize, Serialize}; + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ConfigKey { + pub key: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ConfigValue { + pub value: u64, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SettingKey { + pub name: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SettingValue { + pub value: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct IdAllocKey { + pub name: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct IdAllocValue { + pub next_id: u64, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct GidMappingKey { + pub schema_name: String, + pub object_type: i32, + pub object_name: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct GidMappingValue { + pub id: u64, + pub fingerprint: String, + pub global_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterValue { + pub name: String, + pub owner_id: Option, + pub privileges: Vec, + pub config: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterIntrospectionSourceIndexKey { + pub cluster_id: Option, + pub name: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterIntrospectionSourceIndexValue { + pub index_id: u64, + pub oid: u32, + pub global_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterReplicaKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterReplicaValue { + pub cluster_id: Option, + pub name: String, + pub config: Option, + pub owner_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DatabaseKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DatabaseValue { + pub name: String, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaValue { + pub database_id: Option, + pub name: String, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ItemKey { + pub gid: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ItemValue { + pub schema_id: Option, + pub name: String, + pub definition: Option, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, + pub global_id: Option, + pub extra_versions: Vec, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ItemVersion { + pub global_id: Option, + pub version: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleValue { + pub name: String, + pub attributes: Option, + pub membership: Option, + pub vars: Option, + pub oid: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct NetworkPolicyKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct NetworkPolicyValue { + pub name: String, + pub rules: Vec, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ServerConfigurationKey { + pub name: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ServerConfigurationValue { + pub value: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct AuditLogKey { + pub event: Option, +} + +pub mod audit_log_key { + use super::*; + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Event { + V1(AuditLogEventV1), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CommentKey { + pub object: Option, + pub sub_component: Option, +} + +pub mod comment_key { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Object { + Table(CatalogItemId), + View(CatalogItemId), + MaterializedView(CatalogItemId), + Source(CatalogItemId), + Sink(CatalogItemId), + Index(CatalogItemId), + Func(CatalogItemId), + Connection(CatalogItemId), + Type(CatalogItemId), + Secret(CatalogItemId), + ContinualTask(CatalogItemId), + Role(RoleId), + Database(DatabaseId), + Schema(ResolvedSchema), + Cluster(ClusterId), + ClusterReplica(ClusterReplicaId), + NetworkPolicy(NetworkPolicyId), + } + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum SubComponent { + ColumnPos(u64), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CommentValue { + pub comment: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SourceReferencesKey { + pub source: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SourceReferencesValue { + pub references: Vec, + pub updated_at: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SourceReference { + pub name: String, + pub namespace: Option, + pub columns: Vec, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StorageCollectionMetadataKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StorageCollectionMetadataValue { + pub shard: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct UnfinalizedShardKey { + pub shard: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct TxnWalShardValue { + pub shard: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Empty {} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StringWrapper { + pub inner: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Duration { + pub secs: u64, + pub nanos: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct EpochMillis { + pub millis: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Timestamp { + pub internal: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Version { + pub value: u64, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CatalogItem { + pub value: Option, +} + +pub mod catalog_item { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct V1 { + pub create_sql: String, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Value { + V1(V1), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CatalogItemId { + pub value: Option, +} + +pub mod catalog_item_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + Transient(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemCatalogItemId { + pub value: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct GlobalId { + pub value: Option, +} + +pub mod global_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + Transient(u64), + Explain(Empty), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemGlobalId { + pub value: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterId { + pub value: Option, +} + +pub mod cluster_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DatabaseId { + pub value: Option, +} + +pub mod database_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ResolvedDatabaseSpecifier { + pub spec: Option, +} + +pub mod resolved_database_specifier { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Spec { + Ambient(Empty), + Id(DatabaseId), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaId { + pub value: Option, +} + +pub mod schema_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaSpecifier { + pub spec: Option, +} + +pub mod schema_specifier { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Spec { + Temporary(Empty), + Id(SchemaId), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ResolvedSchema { + pub database: Option, + pub schema: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ReplicaId { + pub value: Option, +} + +pub mod replica_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterReplicaId { + pub cluster_id: Option, + pub replica_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct NetworkPolicyId { + pub value: Option, +} + +pub mod network_policy_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ReplicaLogging { + pub log_logging: bool, + pub interval: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct OptimizerFeatureOverride { + pub name: String, + pub value: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterScheduleRefreshOptions { + pub rehydration_time_estimate: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterSchedule { + pub value: Option, +} + +pub mod cluster_schedule { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + Manual(Empty), + Refresh(ClusterScheduleRefreshOptions), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterConfig { + pub workload_class: Option, + pub variant: Option, +} + +pub mod cluster_config { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ManagedCluster { + pub size: String, + pub replication_factor: u32, + pub availability_zones: Vec, + pub logging: Option, + pub disk: bool, + pub optimizer_feature_overrides: Vec, + pub schedule: Option, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Variant { + Unmanaged(Empty), + Managed(ManagedCluster), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ReplicaConfig { + pub logging: Option, + pub location: Option, +} + +pub mod replica_config { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UnmanagedLocation { + pub storagectl_addrs: Vec, + pub storage_addrs: Vec, + pub computectl_addrs: Vec, + pub compute_addrs: Vec, + pub workers: u64, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ManagedLocation { + pub size: String, + pub availability_zone: Option, + pub disk: bool, + pub internal: bool, + pub billed_as: Option, + pub pending: bool, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Location { + Unmanaged(UnmanagedLocation), + Managed(ManagedLocation), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleId { + pub value: Option, +} + +pub mod role_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + Public(Empty), + Predefined(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleAttributes { + pub inherit: bool, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleMembership { + pub map: Vec, +} + +pub mod role_membership { + use super::*; + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct Entry { + pub key: Option, + pub value: Option, + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleVars { + pub entries: Vec, +} + +pub mod role_vars { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SqlSet { + pub entries: Vec, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Entry { + pub key: String, + pub val: Option, + } + + pub mod entry { + use super::*; + + #[derive( + Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Val { + Flat(String), + SqlSet(SqlSet), + } + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct NetworkPolicyRule { + pub name: String, + pub address: String, + pub action: Option, + pub direction: Option, +} + +pub mod network_policy_rule { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Action { + Allow(Empty), + } + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Direction { + Ingress(Empty), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct AclMode { + pub bitflags: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct MzAclItem { + pub grantee: Option, + pub grantor: Option, + pub acl_mode: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DefaultPrivilegesKey { + pub role_id: Option, + pub database_id: Option, + pub schema_id: Option, + pub object_type: i32, + pub grantee: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DefaultPrivilegesValue { + pub privileges: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemPrivilegesKey { + pub grantee: Option, + pub grantor: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemPrivilegesValue { + pub acl_mode: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct AuditLogEventV1 { + pub id: u64, + pub event_type: i32, + pub object_type: i32, + pub user: Option, + pub occurred_at: Option, + pub details: Option, +} + +pub mod audit_log_event_v1 { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct IdFullNameV1 { + pub id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct FullNameV1 { + pub database: String, + pub schema: String, + pub item: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct IdNameV1 { + pub id: String, + pub name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameClusterV1 { + pub id: String, + pub old_name: String, + pub new_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameClusterReplicaV1 { + pub cluster_id: String, + pub replica_id: String, + pub old_name: String, + pub new_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameItemV1 { + pub id: String, + pub old_name: Option, + pub new_name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateClusterReplicaV1 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub logical_size: String, + pub disk: bool, + pub billed_as: Option, + pub internal: bool, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateClusterReplicaV2 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub logical_size: String, + pub disk: bool, + pub billed_as: Option, + pub internal: bool, + pub reason: Option, + pub scheduling_policies: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateClusterReplicaV3 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub logical_size: String, + pub disk: bool, + pub billed_as: Option, + pub internal: bool, + pub reason: Option, + pub scheduling_policies: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct DropClusterReplicaV1 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct DropClusterReplicaV2 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub reason: Option, + pub scheduling_policies: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct DropClusterReplicaV3 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub reason: Option, + pub scheduling_policies: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct CreateOrDropClusterReplicaReasonV1 { + pub reason: Option, + } + + pub mod create_or_drop_cluster_replica_reason_v1 { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Reason { + Manual(Empty), + Schedule(Empty), + System(Empty), + } + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SchedulingDecisionsWithReasonsV1 { + pub on_refresh: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SchedulingDecisionsWithReasonsV2 { + pub on_refresh: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RefreshDecisionWithReasonV1 { + pub objects_needing_refresh: Vec, + pub rehydration_time_estimate: String, + pub decision: Option, + } + + pub mod refresh_decision_with_reason_v1 { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Decision { + On(Empty), + Off(Empty), + } + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RefreshDecisionWithReasonV2 { + pub objects_needing_refresh: Vec, + pub objects_needing_compaction: Vec, + pub rehydration_time_estimate: String, + pub decision: Option, + } + + pub mod refresh_decision_with_reason_v2 { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Decision { + On(Empty), + Off(Empty), + } + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV1 { + pub id: String, + pub name: Option, + pub size: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV2 { + pub id: String, + pub name: Option, + pub size: Option, + pub external_type: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV3 { + pub id: String, + pub name: Option, + pub external_type: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV4 { + pub id: String, + pub cluster_id: Option, + pub name: Option, + pub external_type: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateIndexV1 { + pub id: String, + pub cluster_id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateMaterializedViewV1 { + pub id: String, + pub cluster_id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterSourceSinkV1 { + pub id: String, + pub name: Option, + pub old_size: Option, + pub new_size: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterSetClusterV1 { + pub id: String, + pub name: Option, + pub old_cluster: Option, + pub new_cluster: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct GrantRoleV1 { + pub role_id: String, + pub member_id: String, + pub grantor_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct GrantRoleV2 { + pub role_id: String, + pub member_id: String, + pub grantor_id: String, + pub executed_by: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RevokeRoleV1 { + pub role_id: String, + pub member_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RevokeRoleV2 { + pub role_id: String, + pub member_id: String, + pub grantor_id: String, + pub executed_by: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UpdatePrivilegeV1 { + pub object_id: String, + pub grantee_id: String, + pub grantor_id: String, + pub privileges: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterDefaultPrivilegeV1 { + pub role_id: String, + pub database_id: Option, + pub schema_id: Option, + pub grantee_id: String, + pub privileges: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UpdateOwnerV1 { + pub object_id: String, + pub old_owner_id: String, + pub new_owner_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SchemaV1 { + pub id: String, + pub name: String, + pub database_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SchemaV2 { + pub id: String, + pub name: String, + pub database_name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameSchemaV1 { + pub id: String, + pub database_name: Option, + pub old_name: String, + pub new_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UpdateItemV1 { + pub id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterRetainHistoryV1 { + pub id: String, + pub old_history: Option, + pub new_history: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ToNewIdV1 { + pub id: String, + pub new_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct FromPreviousIdV1 { + pub id: String, + pub previous_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SetV1 { + pub name: String, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RotateKeysV1 { + pub id: String, + pub name: String, + } + + #[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, + )] + #[repr(i32)] + pub enum EventType { + Unknown = 0, + Create = 1, + Drop = 2, + Alter = 3, + Grant = 4, + Revoke = 5, + Comment = 6, + } + + #[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, + )] + #[repr(i32)] + pub enum ObjectType { + Unknown = 0, + Cluster = 1, + ClusterReplica = 2, + Connection = 3, + Database = 4, + Func = 5, + Index = 6, + MaterializedView = 7, + Role = 8, + Secret = 9, + Schema = 10, + Sink = 11, + Source = 12, + Table = 13, + Type = 14, + View = 15, + System = 16, + ContinualTask = 17, + NetworkPolicy = 18, + } + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Details { + CreateClusterReplicaV1(CreateClusterReplicaV1), + CreateClusterReplicaV2(CreateClusterReplicaV2), + CreateClusterReplicaV3(CreateClusterReplicaV3), + DropClusterReplicaV1(DropClusterReplicaV1), + DropClusterReplicaV2(DropClusterReplicaV2), + DropClusterReplicaV3(DropClusterReplicaV3), + CreateSourceSinkV1(CreateSourceSinkV1), + CreateSourceSinkV2(CreateSourceSinkV2), + AlterSourceSinkV1(AlterSourceSinkV1), + AlterSetClusterV1(AlterSetClusterV1), + GrantRoleV1(GrantRoleV1), + GrantRoleV2(GrantRoleV2), + RevokeRoleV1(RevokeRoleV1), + RevokeRoleV2(RevokeRoleV2), + UpdatePrivilegeV1(UpdatePrivilegeV1), + AlterDefaultPrivilegeV1(AlterDefaultPrivilegeV1), + UpdateOwnerV1(UpdateOwnerV1), + IdFullNameV1(IdFullNameV1), + RenameClusterV1(RenameClusterV1), + RenameClusterReplicaV1(RenameClusterReplicaV1), + RenameItemV1(RenameItemV1), + IdNameV1(IdNameV1), + SchemaV1(SchemaV1), + SchemaV2(SchemaV2), + RenameSchemaV1(RenameSchemaV1), + UpdateItemV1(UpdateItemV1), + CreateSourceSinkV3(CreateSourceSinkV3), + AlterRetainHistoryV1(AlterRetainHistoryV1), + ToNewIdV1(ToNewIdV1), + FromPreviousIdV1(FromPreviousIdV1), + SetV1(SetV1), + ResetAllV1(Empty), + RotateKeysV1(RotateKeysV1), + CreateSourceSinkV4(CreateSourceSinkV4), + CreateIndexV1(CreateIndexV1), + CreateMaterializedViewV1(CreateMaterializedViewV1), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StateUpdateKind { + pub kind: Option, +} + +pub mod state_update_kind { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AuditLog { + pub key: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Cluster { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ClusterReplica { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Comment { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Config { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Database { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct DefaultPrivileges { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct FenceToken { + pub deploy_generation: u64, + pub epoch: i64, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct IdAlloc { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ClusterIntrospectionSourceIndex { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Item { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Role { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct NetworkPolicy { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Schema { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Setting { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ServerConfiguration { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SourceReferences { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct GidMapping { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct SystemPrivileges { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct StorageCollectionMetadata { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UnfinalizedShard { + pub key: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct TxnWalShard { + pub value: Option, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + // Serialize the top-level enum in the persist-backed catalog as internally tagged to set up + // persist pushdown statistics for success. + #[serde(tag = "kind")] + pub enum Kind { + AuditLog(AuditLog), + Cluster(Cluster), + ClusterReplica(ClusterReplica), + Comment(Comment), + Config(Config), + Database(Database), + DefaultPrivileges(DefaultPrivileges), + IdAlloc(IdAlloc), + ClusterIntrospectionSourceIndex(ClusterIntrospectionSourceIndex), + Item(Item), + Role(Role), + Schema(Schema), + Setting(Setting), + ServerConfiguration(ServerConfiguration), + GidMapping(GidMapping), + SystemPrivileges(SystemPrivileges), + StorageCollectionMetadata(StorageCollectionMetadata), + UnfinalizedShard(UnfinalizedShard), + TxnWalShard(TxnWalShard), + SourceReferences(SourceReferences), + FenceToken(FenceToken), + NetworkPolicy(NetworkPolicy), + } +} + +#[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, +)] +#[repr(i32)] +pub enum CatalogItemType { + Unknown = 0, + Table = 1, + Source = 2, + Sink = 3, + View = 4, + MaterializedView = 5, + Index = 6, + Type = 7, + Func = 8, + Secret = 9, + Connection = 10, + ContinualTask = 11, +} + +#[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, +)] +#[repr(i32)] +pub enum ObjectType { + Unknown = 0, + Table = 1, + View = 2, + MaterializedView = 3, + Source = 4, + Sink = 5, + Index = 6, + Type = 7, + Role = 8, + Cluster = 9, + ClusterReplica = 10, + Secret = 11, + Connection = 12, + Database = 13, + Schema = 14, + Func = 15, + ContinualTask = 16, + NetworkPolicy = 17, +} diff --git a/src/catalog-protos/src/objects_v72.rs b/src/catalog-protos/src/objects_v72.rs new file mode 100644 index 0000000000000..34628daf12845 --- /dev/null +++ b/src/catalog-protos/src/objects_v72.rs @@ -0,0 +1,1761 @@ +use num_enum::{IntoPrimitive, TryFromPrimitive}; +use proptest_derive::Arbitrary; +use serde::{Deserialize, Serialize}; + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ConfigKey { + pub key: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ConfigValue { + pub value: u64, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SettingKey { + pub name: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SettingValue { + pub value: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct IdAllocKey { + pub name: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct IdAllocValue { + pub next_id: u64, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct GidMappingKey { + pub schema_name: String, + pub object_type: i32, + pub object_name: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct GidMappingValue { + pub id: u64, + pub fingerprint: String, + pub global_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterValue { + pub name: String, + pub owner_id: Option, + pub privileges: Vec, + pub config: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterIntrospectionSourceIndexKey { + pub cluster_id: Option, + pub name: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterIntrospectionSourceIndexValue { + pub index_id: u64, + pub oid: u32, + pub global_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterReplicaKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterReplicaValue { + pub cluster_id: Option, + pub name: String, + pub config: Option, + pub owner_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DatabaseKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DatabaseValue { + pub name: String, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaValue { + pub database_id: Option, + pub name: String, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ItemKey { + pub gid: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ItemValue { + pub schema_id: Option, + pub name: String, + pub definition: Option, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, + pub global_id: Option, + pub extra_versions: Vec, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ItemVersion { + pub global_id: Option, + pub version: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleValue { + pub name: String, + pub attributes: Option, + pub membership: Option, + pub vars: Option, + pub oid: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct NetworkPolicyKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct NetworkPolicyValue { + pub name: String, + pub rules: Vec, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ServerConfigurationKey { + pub name: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ServerConfigurationValue { + pub value: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct AuditLogKey { + pub event: Option, +} + +pub mod audit_log_key { + use super::*; + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Event { + V1(AuditLogEventV1), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CommentKey { + pub object: Option, + pub sub_component: Option, +} + +pub mod comment_key { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Object { + Table(CatalogItemId), + View(CatalogItemId), + MaterializedView(CatalogItemId), + Source(CatalogItemId), + Sink(CatalogItemId), + Index(CatalogItemId), + Func(CatalogItemId), + Connection(CatalogItemId), + Type(CatalogItemId), + Secret(CatalogItemId), + ContinualTask(CatalogItemId), + Role(RoleId), + Database(DatabaseId), + Schema(ResolvedSchema), + Cluster(ClusterId), + ClusterReplica(ClusterReplicaId), + NetworkPolicy(NetworkPolicyId), + } + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum SubComponent { + ColumnPos(u64), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CommentValue { + pub comment: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SourceReferencesKey { + pub source: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SourceReferencesValue { + pub references: Vec, + pub updated_at: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SourceReference { + pub name: String, + pub namespace: Option, + pub columns: Vec, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StorageCollectionMetadataKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StorageCollectionMetadataValue { + pub shard: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct UnfinalizedShardKey { + pub shard: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct TxnWalShardValue { + pub shard: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Empty {} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StringWrapper { + pub inner: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Duration { + pub secs: u64, + pub nanos: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct EpochMillis { + pub millis: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Timestamp { + pub internal: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Version { + pub value: u64, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CatalogItem { + pub value: Option, +} + +pub mod catalog_item { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct V1 { + pub create_sql: String, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Value { + V1(V1), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CatalogItemId { + pub value: Option, +} + +pub mod catalog_item_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + Transient(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemCatalogItemId { + pub value: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct GlobalId { + pub value: Option, +} + +pub mod global_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + Transient(u64), + Explain(Empty), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemGlobalId { + pub value: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterId { + pub value: Option, +} + +pub mod cluster_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DatabaseId { + pub value: Option, +} + +pub mod database_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ResolvedDatabaseSpecifier { + pub spec: Option, +} + +pub mod resolved_database_specifier { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Spec { + Ambient(Empty), + Id(DatabaseId), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaId { + pub value: Option, +} + +pub mod schema_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaSpecifier { + pub spec: Option, +} + +pub mod schema_specifier { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Spec { + Temporary(Empty), + Id(SchemaId), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ResolvedSchema { + pub database: Option, + pub schema: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ReplicaId { + pub value: Option, +} + +pub mod replica_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterReplicaId { + pub cluster_id: Option, + pub replica_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct NetworkPolicyId { + pub value: Option, +} + +pub mod network_policy_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ReplicaLogging { + pub log_logging: bool, + pub interval: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct OptimizerFeatureOverride { + pub name: String, + pub value: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterScheduleRefreshOptions { + pub rehydration_time_estimate: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterSchedule { + pub value: Option, +} + +pub mod cluster_schedule { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + Manual(Empty), + Refresh(ClusterScheduleRefreshOptions), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterConfig { + pub workload_class: Option, + pub variant: Option, +} + +pub mod cluster_config { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ManagedCluster { + pub size: String, + pub replication_factor: u32, + pub availability_zones: Vec, + pub logging: Option, + pub disk: bool, + pub optimizer_feature_overrides: Vec, + pub schedule: Option, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Variant { + Unmanaged(Empty), + Managed(ManagedCluster), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ReplicaConfig { + pub logging: Option, + pub location: Option, +} + +pub mod replica_config { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UnmanagedLocation { + pub storagectl_addrs: Vec, + pub storage_addrs: Vec, + pub computectl_addrs: Vec, + pub compute_addrs: Vec, + pub workers: u64, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ManagedLocation { + pub size: String, + pub availability_zone: Option, + pub disk: bool, + pub internal: bool, + pub billed_as: Option, + pub pending: bool, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Location { + Unmanaged(UnmanagedLocation), + Managed(ManagedLocation), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleId { + pub value: Option, +} + +pub mod role_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + Public(Empty), + Predefined(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleAttributes { + pub inherit: bool, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleMembership { + pub map: Vec, +} + +pub mod role_membership { + use super::*; + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct Entry { + pub key: Option, + pub value: Option, + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleVars { + pub entries: Vec, +} + +pub mod role_vars { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SqlSet { + pub entries: Vec, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Entry { + pub key: String, + pub val: Option, + } + + pub mod entry { + use super::*; + + #[derive( + Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Val { + Flat(String), + SqlSet(SqlSet), + } + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct NetworkPolicyRule { + pub name: String, + pub address: String, + pub action: Option, + pub direction: Option, +} + +pub mod network_policy_rule { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Action { + Allow(Empty), + } + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Direction { + Ingress(Empty), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct AclMode { + pub bitflags: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct MzAclItem { + pub grantee: Option, + pub grantor: Option, + pub acl_mode: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DefaultPrivilegesKey { + pub role_id: Option, + pub database_id: Option, + pub schema_id: Option, + pub object_type: i32, + pub grantee: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DefaultPrivilegesValue { + pub privileges: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemPrivilegesKey { + pub grantee: Option, + pub grantor: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemPrivilegesValue { + pub acl_mode: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct AuditLogEventV1 { + pub id: u64, + pub event_type: i32, + pub object_type: i32, + pub user: Option, + pub occurred_at: Option, + pub details: Option, +} + +pub mod audit_log_event_v1 { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct IdFullNameV1 { + pub id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct FullNameV1 { + pub database: String, + pub schema: String, + pub item: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct IdNameV1 { + pub id: String, + pub name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameClusterV1 { + pub id: String, + pub old_name: String, + pub new_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameClusterReplicaV1 { + pub cluster_id: String, + pub replica_id: String, + pub old_name: String, + pub new_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameItemV1 { + pub id: String, + pub old_name: Option, + pub new_name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateClusterReplicaV1 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub logical_size: String, + pub disk: bool, + pub billed_as: Option, + pub internal: bool, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateClusterReplicaV2 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub logical_size: String, + pub disk: bool, + pub billed_as: Option, + pub internal: bool, + pub reason: Option, + pub scheduling_policies: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateClusterReplicaV3 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub logical_size: String, + pub disk: bool, + pub billed_as: Option, + pub internal: bool, + pub reason: Option, + pub scheduling_policies: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct DropClusterReplicaV1 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct DropClusterReplicaV2 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub reason: Option, + pub scheduling_policies: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct DropClusterReplicaV3 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub reason: Option, + pub scheduling_policies: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct CreateOrDropClusterReplicaReasonV1 { + pub reason: Option, + } + + pub mod create_or_drop_cluster_replica_reason_v1 { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Reason { + Manual(Empty), + Schedule(Empty), + System(Empty), + } + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SchedulingDecisionsWithReasonsV1 { + pub on_refresh: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SchedulingDecisionsWithReasonsV2 { + pub on_refresh: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RefreshDecisionWithReasonV1 { + pub objects_needing_refresh: Vec, + pub rehydration_time_estimate: String, + pub decision: Option, + } + + pub mod refresh_decision_with_reason_v1 { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Decision { + On(Empty), + Off(Empty), + } + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RefreshDecisionWithReasonV2 { + pub objects_needing_refresh: Vec, + pub objects_needing_compaction: Vec, + pub rehydration_time_estimate: String, + pub decision: Option, + } + + pub mod refresh_decision_with_reason_v2 { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Decision { + On(Empty), + Off(Empty), + } + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV1 { + pub id: String, + pub name: Option, + pub size: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV2 { + pub id: String, + pub name: Option, + pub size: Option, + pub external_type: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV3 { + pub id: String, + pub name: Option, + pub external_type: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV4 { + pub id: String, + pub cluster_id: Option, + pub name: Option, + pub external_type: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateIndexV1 { + pub id: String, + pub cluster_id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateMaterializedViewV1 { + pub id: String, + pub cluster_id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterSourceSinkV1 { + pub id: String, + pub name: Option, + pub old_size: Option, + pub new_size: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterSetClusterV1 { + pub id: String, + pub name: Option, + pub old_cluster: Option, + pub new_cluster: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct GrantRoleV1 { + pub role_id: String, + pub member_id: String, + pub grantor_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct GrantRoleV2 { + pub role_id: String, + pub member_id: String, + pub grantor_id: String, + pub executed_by: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RevokeRoleV1 { + pub role_id: String, + pub member_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RevokeRoleV2 { + pub role_id: String, + pub member_id: String, + pub grantor_id: String, + pub executed_by: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UpdatePrivilegeV1 { + pub object_id: String, + pub grantee_id: String, + pub grantor_id: String, + pub privileges: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterDefaultPrivilegeV1 { + pub role_id: String, + pub database_id: Option, + pub schema_id: Option, + pub grantee_id: String, + pub privileges: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UpdateOwnerV1 { + pub object_id: String, + pub old_owner_id: String, + pub new_owner_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SchemaV1 { + pub id: String, + pub name: String, + pub database_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SchemaV2 { + pub id: String, + pub name: String, + pub database_name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameSchemaV1 { + pub id: String, + pub database_name: Option, + pub old_name: String, + pub new_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UpdateItemV1 { + pub id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterRetainHistoryV1 { + pub id: String, + pub old_history: Option, + pub new_history: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ToNewIdV1 { + pub id: String, + pub new_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct FromPreviousIdV1 { + pub id: String, + pub previous_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SetV1 { + pub name: String, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RotateKeysV1 { + pub id: String, + pub name: String, + } + + #[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, + )] + #[repr(i32)] + pub enum EventType { + Unknown = 0, + Create = 1, + Drop = 2, + Alter = 3, + Grant = 4, + Revoke = 5, + Comment = 6, + } + + #[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, + )] + #[repr(i32)] + pub enum ObjectType { + Unknown = 0, + Cluster = 1, + ClusterReplica = 2, + Connection = 3, + Database = 4, + Func = 5, + Index = 6, + MaterializedView = 7, + Role = 8, + Secret = 9, + Schema = 10, + Sink = 11, + Source = 12, + Table = 13, + Type = 14, + View = 15, + System = 16, + ContinualTask = 17, + NetworkPolicy = 18, + } + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Details { + CreateClusterReplicaV1(CreateClusterReplicaV1), + CreateClusterReplicaV2(CreateClusterReplicaV2), + CreateClusterReplicaV3(CreateClusterReplicaV3), + DropClusterReplicaV1(DropClusterReplicaV1), + DropClusterReplicaV2(DropClusterReplicaV2), + DropClusterReplicaV3(DropClusterReplicaV3), + CreateSourceSinkV1(CreateSourceSinkV1), + CreateSourceSinkV2(CreateSourceSinkV2), + AlterSourceSinkV1(AlterSourceSinkV1), + AlterSetClusterV1(AlterSetClusterV1), + GrantRoleV1(GrantRoleV1), + GrantRoleV2(GrantRoleV2), + RevokeRoleV1(RevokeRoleV1), + RevokeRoleV2(RevokeRoleV2), + UpdatePrivilegeV1(UpdatePrivilegeV1), + AlterDefaultPrivilegeV1(AlterDefaultPrivilegeV1), + UpdateOwnerV1(UpdateOwnerV1), + IdFullNameV1(IdFullNameV1), + RenameClusterV1(RenameClusterV1), + RenameClusterReplicaV1(RenameClusterReplicaV1), + RenameItemV1(RenameItemV1), + IdNameV1(IdNameV1), + SchemaV1(SchemaV1), + SchemaV2(SchemaV2), + RenameSchemaV1(RenameSchemaV1), + UpdateItemV1(UpdateItemV1), + CreateSourceSinkV3(CreateSourceSinkV3), + AlterRetainHistoryV1(AlterRetainHistoryV1), + ToNewIdV1(ToNewIdV1), + FromPreviousIdV1(FromPreviousIdV1), + SetV1(SetV1), + ResetAllV1(Empty), + RotateKeysV1(RotateKeysV1), + CreateSourceSinkV4(CreateSourceSinkV4), + CreateIndexV1(CreateIndexV1), + CreateMaterializedViewV1(CreateMaterializedViewV1), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StateUpdateKind { + pub kind: Option, +} + +pub mod state_update_kind { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AuditLog { + pub key: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Cluster { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ClusterReplica { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Comment { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Config { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Database { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct DefaultPrivileges { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct FenceToken { + pub deploy_generation: u64, + pub epoch: i64, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct IdAlloc { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ClusterIntrospectionSourceIndex { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Item { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Role { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct NetworkPolicy { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Schema { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Setting { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ServerConfiguration { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SourceReferences { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct GidMapping { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct SystemPrivileges { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct StorageCollectionMetadata { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UnfinalizedShard { + pub key: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct TxnWalShard { + pub value: Option, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + // Serialize the top-level enum in the persist-backed catalog as internally tagged to set up + // persist pushdown statistics for success. + #[serde(tag = "kind")] + pub enum Kind { + AuditLog(AuditLog), + Cluster(Cluster), + ClusterReplica(ClusterReplica), + Comment(Comment), + Config(Config), + Database(Database), + DefaultPrivileges(DefaultPrivileges), + IdAlloc(IdAlloc), + ClusterIntrospectionSourceIndex(ClusterIntrospectionSourceIndex), + Item(Item), + Role(Role), + Schema(Schema), + Setting(Setting), + ServerConfiguration(ServerConfiguration), + GidMapping(GidMapping), + SystemPrivileges(SystemPrivileges), + StorageCollectionMetadata(StorageCollectionMetadata), + UnfinalizedShard(UnfinalizedShard), + TxnWalShard(TxnWalShard), + SourceReferences(SourceReferences), + FenceToken(FenceToken), + NetworkPolicy(NetworkPolicy), + } +} + +#[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, +)] +#[repr(i32)] +pub enum CatalogItemType { + Unknown = 0, + Table = 1, + Source = 2, + Sink = 3, + View = 4, + MaterializedView = 5, + Index = 6, + Type = 7, + Func = 8, + Secret = 9, + Connection = 10, + ContinualTask = 11, +} + +#[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, +)] +#[repr(i32)] +pub enum ObjectType { + Unknown = 0, + Table = 1, + View = 2, + MaterializedView = 3, + Source = 4, + Sink = 5, + Index = 6, + Type = 7, + Role = 8, + Cluster = 9, + ClusterReplica = 10, + Secret = 11, + Connection = 12, + Database = 13, + Schema = 14, + Func = 15, + ContinualTask = 16, + NetworkPolicy = 17, +} diff --git a/src/catalog-protos/src/objects_v73.rs b/src/catalog-protos/src/objects_v73.rs new file mode 100644 index 0000000000000..80136db3c29f2 --- /dev/null +++ b/src/catalog-protos/src/objects_v73.rs @@ -0,0 +1,1777 @@ +use num_enum::{IntoPrimitive, TryFromPrimitive}; +use proptest_derive::Arbitrary; +use serde::{Deserialize, Serialize}; + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ConfigKey { + pub key: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ConfigValue { + pub value: u64, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SettingKey { + pub name: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SettingValue { + pub value: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct IdAllocKey { + pub name: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct IdAllocValue { + pub next_id: u64, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct GidMappingKey { + pub schema_name: String, + pub object_type: i32, + pub object_name: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct GidMappingValue { + pub id: u64, + pub fingerprint: String, + pub global_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterValue { + pub name: String, + pub owner_id: Option, + pub privileges: Vec, + pub config: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterIntrospectionSourceIndexKey { + pub cluster_id: Option, + pub name: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterIntrospectionSourceIndexValue { + pub index_id: u64, + pub oid: u32, + pub global_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterReplicaKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterReplicaValue { + pub cluster_id: Option, + pub name: String, + pub config: Option, + pub owner_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DatabaseKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DatabaseValue { + pub name: String, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaValue { + pub database_id: Option, + pub name: String, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ItemKey { + pub gid: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ItemValue { + pub schema_id: Option, + pub name: String, + pub definition: Option, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, + pub global_id: Option, + pub extra_versions: Vec, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ItemVersion { + pub global_id: Option, + pub version: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleValue { + pub name: String, + pub attributes: Option, + pub membership: Option, + pub vars: Option, + pub oid: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct NetworkPolicyKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct NetworkPolicyValue { + pub name: String, + pub rules: Vec, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ServerConfigurationKey { + pub name: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ServerConfigurationValue { + pub value: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct AuditLogKey { + pub event: Option, +} + +pub mod audit_log_key { + use super::*; + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Event { + V1(AuditLogEventV1), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CommentKey { + pub object: Option, + pub sub_component: Option, +} + +pub mod comment_key { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Object { + Table(CatalogItemId), + View(CatalogItemId), + MaterializedView(CatalogItemId), + Source(CatalogItemId), + Sink(CatalogItemId), + Index(CatalogItemId), + Func(CatalogItemId), + Connection(CatalogItemId), + Type(CatalogItemId), + Secret(CatalogItemId), + ContinualTask(CatalogItemId), + Role(RoleId), + Database(DatabaseId), + Schema(ResolvedSchema), + Cluster(ClusterId), + ClusterReplica(ClusterReplicaId), + NetworkPolicy(NetworkPolicyId), + } + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum SubComponent { + ColumnPos(u64), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CommentValue { + pub comment: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SourceReferencesKey { + pub source: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SourceReferencesValue { + pub references: Vec, + pub updated_at: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SourceReference { + pub name: String, + pub namespace: Option, + pub columns: Vec, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StorageCollectionMetadataKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StorageCollectionMetadataValue { + pub shard: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct UnfinalizedShardKey { + pub shard: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct TxnWalShardValue { + pub shard: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Empty {} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StringWrapper { + pub inner: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Duration { + pub secs: u64, + pub nanos: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct EpochMillis { + pub millis: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Timestamp { + pub internal: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Version { + pub value: u64, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CatalogItem { + pub value: Option, +} + +pub mod catalog_item { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct V1 { + pub create_sql: String, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Value { + V1(V1), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CatalogItemId { + pub value: Option, +} + +pub mod catalog_item_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + Transient(u64), + IntrospectionSourceIndex(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemCatalogItemId { + pub value: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct IntrospectionSourceIndexCatalogItemId { + pub value: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct GlobalId { + pub value: Option, +} + +pub mod global_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + Transient(u64), + Explain(Empty), + IntrospectionSourceIndex(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemGlobalId { + pub value: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct IntrospectionSourceIndexGlobalId { + pub value: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterId { + pub value: Option, +} + +pub mod cluster_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DatabaseId { + pub value: Option, +} + +pub mod database_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ResolvedDatabaseSpecifier { + pub spec: Option, +} + +pub mod resolved_database_specifier { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Spec { + Ambient(Empty), + Id(DatabaseId), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaId { + pub value: Option, +} + +pub mod schema_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaSpecifier { + pub spec: Option, +} + +pub mod schema_specifier { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Spec { + Temporary(Empty), + Id(SchemaId), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ResolvedSchema { + pub database: Option, + pub schema: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ReplicaId { + pub value: Option, +} + +pub mod replica_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterReplicaId { + pub cluster_id: Option, + pub replica_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct NetworkPolicyId { + pub value: Option, +} + +pub mod network_policy_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ReplicaLogging { + pub log_logging: bool, + pub interval: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct OptimizerFeatureOverride { + pub name: String, + pub value: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterScheduleRefreshOptions { + pub rehydration_time_estimate: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterSchedule { + pub value: Option, +} + +pub mod cluster_schedule { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + Manual(Empty), + Refresh(ClusterScheduleRefreshOptions), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterConfig { + pub workload_class: Option, + pub variant: Option, +} + +pub mod cluster_config { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ManagedCluster { + pub size: String, + pub replication_factor: u32, + pub availability_zones: Vec, + pub logging: Option, + pub disk: bool, + pub optimizer_feature_overrides: Vec, + pub schedule: Option, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Variant { + Unmanaged(Empty), + Managed(ManagedCluster), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ReplicaConfig { + pub logging: Option, + pub location: Option, +} + +pub mod replica_config { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UnmanagedLocation { + pub storagectl_addrs: Vec, + pub storage_addrs: Vec, + pub computectl_addrs: Vec, + pub compute_addrs: Vec, + pub workers: u64, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ManagedLocation { + pub size: String, + pub availability_zone: Option, + pub disk: bool, + pub internal: bool, + pub billed_as: Option, + pub pending: bool, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Location { + Unmanaged(UnmanagedLocation), + Managed(ManagedLocation), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleId { + pub value: Option, +} + +pub mod role_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + Public(Empty), + Predefined(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleAttributes { + pub inherit: bool, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleMembership { + pub map: Vec, +} + +pub mod role_membership { + use super::*; + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct Entry { + pub key: Option, + pub value: Option, + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleVars { + pub entries: Vec, +} + +pub mod role_vars { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SqlSet { + pub entries: Vec, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Entry { + pub key: String, + pub val: Option, + } + + pub mod entry { + use super::*; + + #[derive( + Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Val { + Flat(String), + SqlSet(SqlSet), + } + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct NetworkPolicyRule { + pub name: String, + pub address: String, + pub action: Option, + pub direction: Option, +} + +pub mod network_policy_rule { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Action { + Allow(Empty), + } + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Direction { + Ingress(Empty), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct AclMode { + pub bitflags: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct MzAclItem { + pub grantee: Option, + pub grantor: Option, + pub acl_mode: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DefaultPrivilegesKey { + pub role_id: Option, + pub database_id: Option, + pub schema_id: Option, + pub object_type: i32, + pub grantee: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DefaultPrivilegesValue { + pub privileges: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemPrivilegesKey { + pub grantee: Option, + pub grantor: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemPrivilegesValue { + pub acl_mode: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct AuditLogEventV1 { + pub id: u64, + pub event_type: i32, + pub object_type: i32, + pub user: Option, + pub occurred_at: Option, + pub details: Option, +} + +pub mod audit_log_event_v1 { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct IdFullNameV1 { + pub id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct FullNameV1 { + pub database: String, + pub schema: String, + pub item: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct IdNameV1 { + pub id: String, + pub name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameClusterV1 { + pub id: String, + pub old_name: String, + pub new_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameClusterReplicaV1 { + pub cluster_id: String, + pub replica_id: String, + pub old_name: String, + pub new_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameItemV1 { + pub id: String, + pub old_name: Option, + pub new_name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateClusterReplicaV1 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub logical_size: String, + pub disk: bool, + pub billed_as: Option, + pub internal: bool, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateClusterReplicaV2 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub logical_size: String, + pub disk: bool, + pub billed_as: Option, + pub internal: bool, + pub reason: Option, + pub scheduling_policies: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateClusterReplicaV3 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub logical_size: String, + pub disk: bool, + pub billed_as: Option, + pub internal: bool, + pub reason: Option, + pub scheduling_policies: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct DropClusterReplicaV1 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct DropClusterReplicaV2 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub reason: Option, + pub scheduling_policies: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct DropClusterReplicaV3 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub reason: Option, + pub scheduling_policies: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct CreateOrDropClusterReplicaReasonV1 { + pub reason: Option, + } + + pub mod create_or_drop_cluster_replica_reason_v1 { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Reason { + Manual(Empty), + Schedule(Empty), + System(Empty), + } + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SchedulingDecisionsWithReasonsV1 { + pub on_refresh: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SchedulingDecisionsWithReasonsV2 { + pub on_refresh: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RefreshDecisionWithReasonV1 { + pub objects_needing_refresh: Vec, + pub rehydration_time_estimate: String, + pub decision: Option, + } + + pub mod refresh_decision_with_reason_v1 { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Decision { + On(Empty), + Off(Empty), + } + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RefreshDecisionWithReasonV2 { + pub objects_needing_refresh: Vec, + pub objects_needing_compaction: Vec, + pub rehydration_time_estimate: String, + pub decision: Option, + } + + pub mod refresh_decision_with_reason_v2 { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Decision { + On(Empty), + Off(Empty), + } + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV1 { + pub id: String, + pub name: Option, + pub size: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV2 { + pub id: String, + pub name: Option, + pub size: Option, + pub external_type: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV3 { + pub id: String, + pub name: Option, + pub external_type: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV4 { + pub id: String, + pub cluster_id: Option, + pub name: Option, + pub external_type: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateIndexV1 { + pub id: String, + pub cluster_id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateMaterializedViewV1 { + pub id: String, + pub cluster_id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterSourceSinkV1 { + pub id: String, + pub name: Option, + pub old_size: Option, + pub new_size: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterSetClusterV1 { + pub id: String, + pub name: Option, + pub old_cluster: Option, + pub new_cluster: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct GrantRoleV1 { + pub role_id: String, + pub member_id: String, + pub grantor_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct GrantRoleV2 { + pub role_id: String, + pub member_id: String, + pub grantor_id: String, + pub executed_by: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RevokeRoleV1 { + pub role_id: String, + pub member_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RevokeRoleV2 { + pub role_id: String, + pub member_id: String, + pub grantor_id: String, + pub executed_by: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UpdatePrivilegeV1 { + pub object_id: String, + pub grantee_id: String, + pub grantor_id: String, + pub privileges: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterDefaultPrivilegeV1 { + pub role_id: String, + pub database_id: Option, + pub schema_id: Option, + pub grantee_id: String, + pub privileges: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UpdateOwnerV1 { + pub object_id: String, + pub old_owner_id: String, + pub new_owner_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SchemaV1 { + pub id: String, + pub name: String, + pub database_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SchemaV2 { + pub id: String, + pub name: String, + pub database_name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameSchemaV1 { + pub id: String, + pub database_name: Option, + pub old_name: String, + pub new_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UpdateItemV1 { + pub id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterRetainHistoryV1 { + pub id: String, + pub old_history: Option, + pub new_history: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ToNewIdV1 { + pub id: String, + pub new_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct FromPreviousIdV1 { + pub id: String, + pub previous_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SetV1 { + pub name: String, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RotateKeysV1 { + pub id: String, + pub name: String, + } + + #[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, + )] + #[repr(i32)] + pub enum EventType { + Unknown = 0, + Create = 1, + Drop = 2, + Alter = 3, + Grant = 4, + Revoke = 5, + Comment = 6, + } + + #[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, + )] + #[repr(i32)] + pub enum ObjectType { + Unknown = 0, + Cluster = 1, + ClusterReplica = 2, + Connection = 3, + Database = 4, + Func = 5, + Index = 6, + MaterializedView = 7, + Role = 8, + Secret = 9, + Schema = 10, + Sink = 11, + Source = 12, + Table = 13, + Type = 14, + View = 15, + System = 16, + ContinualTask = 17, + NetworkPolicy = 18, + } + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Details { + CreateClusterReplicaV1(CreateClusterReplicaV1), + CreateClusterReplicaV2(CreateClusterReplicaV2), + CreateClusterReplicaV3(CreateClusterReplicaV3), + DropClusterReplicaV1(DropClusterReplicaV1), + DropClusterReplicaV2(DropClusterReplicaV2), + DropClusterReplicaV3(DropClusterReplicaV3), + CreateSourceSinkV1(CreateSourceSinkV1), + CreateSourceSinkV2(CreateSourceSinkV2), + AlterSourceSinkV1(AlterSourceSinkV1), + AlterSetClusterV1(AlterSetClusterV1), + GrantRoleV1(GrantRoleV1), + GrantRoleV2(GrantRoleV2), + RevokeRoleV1(RevokeRoleV1), + RevokeRoleV2(RevokeRoleV2), + UpdatePrivilegeV1(UpdatePrivilegeV1), + AlterDefaultPrivilegeV1(AlterDefaultPrivilegeV1), + UpdateOwnerV1(UpdateOwnerV1), + IdFullNameV1(IdFullNameV1), + RenameClusterV1(RenameClusterV1), + RenameClusterReplicaV1(RenameClusterReplicaV1), + RenameItemV1(RenameItemV1), + IdNameV1(IdNameV1), + SchemaV1(SchemaV1), + SchemaV2(SchemaV2), + RenameSchemaV1(RenameSchemaV1), + UpdateItemV1(UpdateItemV1), + CreateSourceSinkV3(CreateSourceSinkV3), + AlterRetainHistoryV1(AlterRetainHistoryV1), + ToNewIdV1(ToNewIdV1), + FromPreviousIdV1(FromPreviousIdV1), + SetV1(SetV1), + ResetAllV1(Empty), + RotateKeysV1(RotateKeysV1), + CreateSourceSinkV4(CreateSourceSinkV4), + CreateIndexV1(CreateIndexV1), + CreateMaterializedViewV1(CreateMaterializedViewV1), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StateUpdateKind { + pub kind: Option, +} + +pub mod state_update_kind { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AuditLog { + pub key: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Cluster { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ClusterReplica { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Comment { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Config { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Database { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct DefaultPrivileges { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct FenceToken { + pub deploy_generation: u64, + pub epoch: i64, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct IdAlloc { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ClusterIntrospectionSourceIndex { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Item { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Role { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct NetworkPolicy { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Schema { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Setting { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ServerConfiguration { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SourceReferences { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct GidMapping { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct SystemPrivileges { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct StorageCollectionMetadata { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UnfinalizedShard { + pub key: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct TxnWalShard { + pub value: Option, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + // Serialize the top-level enum in the persist-backed catalog as internally tagged to set up + // persist pushdown statistics for success. + #[serde(tag = "kind")] + pub enum Kind { + AuditLog(AuditLog), + Cluster(Cluster), + ClusterReplica(ClusterReplica), + Comment(Comment), + Config(Config), + Database(Database), + DefaultPrivileges(DefaultPrivileges), + IdAlloc(IdAlloc), + ClusterIntrospectionSourceIndex(ClusterIntrospectionSourceIndex), + Item(Item), + Role(Role), + Schema(Schema), + Setting(Setting), + ServerConfiguration(ServerConfiguration), + GidMapping(GidMapping), + SystemPrivileges(SystemPrivileges), + StorageCollectionMetadata(StorageCollectionMetadata), + UnfinalizedShard(UnfinalizedShard), + TxnWalShard(TxnWalShard), + SourceReferences(SourceReferences), + FenceToken(FenceToken), + NetworkPolicy(NetworkPolicy), + } +} + +#[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, +)] +#[repr(i32)] +pub enum CatalogItemType { + Unknown = 0, + Table = 1, + Source = 2, + Sink = 3, + View = 4, + MaterializedView = 5, + Index = 6, + Type = 7, + Func = 8, + Secret = 9, + Connection = 10, + ContinualTask = 11, +} + +#[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, +)] +#[repr(i32)] +pub enum ObjectType { + Unknown = 0, + Table = 1, + View = 2, + MaterializedView = 3, + Source = 4, + Sink = 5, + Index = 6, + Type = 7, + Role = 8, + Cluster = 9, + ClusterReplica = 10, + Secret = 11, + Connection = 12, + Database = 13, + Schema = 14, + Func = 15, + ContinualTask = 16, + NetworkPolicy = 17, +} diff --git a/src/catalog-protos/src/objects_v74.rs b/src/catalog-protos/src/objects_v74.rs new file mode 100644 index 0000000000000..911d331066f40 --- /dev/null +++ b/src/catalog-protos/src/objects_v74.rs @@ -0,0 +1,1803 @@ +use num_enum::{IntoPrimitive, TryFromPrimitive}; +use proptest_derive::Arbitrary; +use serde::{Deserialize, Serialize}; + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ConfigKey { + pub key: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ConfigValue { + pub value: u64, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SettingKey { + pub name: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SettingValue { + pub value: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct IdAllocKey { + pub name: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct IdAllocValue { + pub next_id: u64, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct GidMappingKey { + pub schema_name: String, + pub object_type: i32, + pub object_name: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct GidMappingValue { + pub id: u64, + pub fingerprint: String, + pub global_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterValue { + pub name: String, + pub owner_id: Option, + pub privileges: Vec, + pub config: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterIntrospectionSourceIndexKey { + pub cluster_id: Option, + pub name: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterIntrospectionSourceIndexValue { + pub index_id: u64, + pub oid: u32, + pub global_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterReplicaKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterReplicaValue { + pub cluster_id: Option, + pub name: String, + pub config: Option, + pub owner_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DatabaseKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DatabaseValue { + pub name: String, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaValue { + pub database_id: Option, + pub name: String, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ItemKey { + pub gid: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ItemValue { + pub schema_id: Option, + pub name: String, + pub definition: Option, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, + pub global_id: Option, + pub extra_versions: Vec, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ItemVersion { + pub global_id: Option, + pub version: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleValue { + pub name: String, + pub attributes: Option, + pub membership: Option, + pub vars: Option, + pub oid: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleAuthKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleAuthValue { + pub password_hash: Option, + pub updated_at: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct NetworkPolicyKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct NetworkPolicyValue { + pub name: String, + pub rules: Vec, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ServerConfigurationKey { + pub name: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ServerConfigurationValue { + pub value: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct AuditLogKey { + pub event: Option, +} + +pub mod audit_log_key { + use super::*; + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Event { + V1(AuditLogEventV1), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CommentKey { + pub object: Option, + pub sub_component: Option, +} + +pub mod comment_key { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Object { + Table(CatalogItemId), + View(CatalogItemId), + MaterializedView(CatalogItemId), + Source(CatalogItemId), + Sink(CatalogItemId), + Index(CatalogItemId), + Func(CatalogItemId), + Connection(CatalogItemId), + Type(CatalogItemId), + Secret(CatalogItemId), + ContinualTask(CatalogItemId), + Role(RoleId), + Database(DatabaseId), + Schema(ResolvedSchema), + Cluster(ClusterId), + ClusterReplica(ClusterReplicaId), + NetworkPolicy(NetworkPolicyId), + } + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum SubComponent { + ColumnPos(u64), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CommentValue { + pub comment: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SourceReferencesKey { + pub source: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SourceReferencesValue { + pub references: Vec, + pub updated_at: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SourceReference { + pub name: String, + pub namespace: Option, + pub columns: Vec, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StorageCollectionMetadataKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StorageCollectionMetadataValue { + pub shard: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct UnfinalizedShardKey { + pub shard: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct TxnWalShardValue { + pub shard: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Empty {} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StringWrapper { + pub inner: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Duration { + pub secs: u64, + pub nanos: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct EpochMillis { + pub millis: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Timestamp { + pub internal: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Version { + pub value: u64, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CatalogItem { + pub value: Option, +} + +pub mod catalog_item { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct V1 { + pub create_sql: String, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Value { + V1(V1), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CatalogItemId { + pub value: Option, +} + +pub mod catalog_item_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + Transient(u64), + IntrospectionSourceIndex(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemCatalogItemId { + pub value: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct IntrospectionSourceIndexCatalogItemId { + pub value: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct GlobalId { + pub value: Option, +} + +pub mod global_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + Transient(u64), + Explain(Empty), + IntrospectionSourceIndex(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemGlobalId { + pub value: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct IntrospectionSourceIndexGlobalId { + pub value: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterId { + pub value: Option, +} + +pub mod cluster_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DatabaseId { + pub value: Option, +} + +pub mod database_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ResolvedDatabaseSpecifier { + pub spec: Option, +} + +pub mod resolved_database_specifier { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Spec { + Ambient(Empty), + Id(DatabaseId), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaId { + pub value: Option, +} + +pub mod schema_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaSpecifier { + pub spec: Option, +} + +pub mod schema_specifier { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Spec { + Temporary(Empty), + Id(SchemaId), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ResolvedSchema { + pub database: Option, + pub schema: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ReplicaId { + pub value: Option, +} + +pub mod replica_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterReplicaId { + pub cluster_id: Option, + pub replica_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct NetworkPolicyId { + pub value: Option, +} + +pub mod network_policy_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ReplicaLogging { + pub log_logging: bool, + pub interval: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct OptimizerFeatureOverride { + pub name: String, + pub value: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterScheduleRefreshOptions { + pub rehydration_time_estimate: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterSchedule { + pub value: Option, +} + +pub mod cluster_schedule { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + Manual(Empty), + Refresh(ClusterScheduleRefreshOptions), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterConfig { + pub workload_class: Option, + pub variant: Option, +} + +pub mod cluster_config { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ManagedCluster { + pub size: String, + pub replication_factor: u32, + pub availability_zones: Vec, + pub logging: Option, + pub disk: bool, + pub optimizer_feature_overrides: Vec, + pub schedule: Option, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Variant { + Unmanaged(Empty), + Managed(ManagedCluster), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ReplicaConfig { + pub logging: Option, + pub location: Option, +} + +pub mod replica_config { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UnmanagedLocation { + pub storagectl_addrs: Vec, + pub storage_addrs: Vec, + pub computectl_addrs: Vec, + pub compute_addrs: Vec, + pub workers: u64, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ManagedLocation { + pub size: String, + pub availability_zone: Option, + pub disk: bool, + pub internal: bool, + pub billed_as: Option, + pub pending: bool, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Location { + Unmanaged(UnmanagedLocation), + Managed(ManagedLocation), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleId { + pub value: Option, +} + +pub mod role_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + Public(Empty), + Predefined(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleAttributes { + pub inherit: bool, + pub superuser: Option, + pub login: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleMembership { + pub map: Vec, +} + +pub mod role_membership { + use super::*; + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct Entry { + pub key: Option, + pub value: Option, + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleVars { + pub entries: Vec, +} + +pub mod role_vars { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SqlSet { + pub entries: Vec, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Entry { + pub key: String, + pub val: Option, + } + + pub mod entry { + use super::*; + + #[derive( + Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Val { + Flat(String), + SqlSet(SqlSet), + } + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct NetworkPolicyRule { + pub name: String, + pub address: String, + pub action: Option, + pub direction: Option, +} + +pub mod network_policy_rule { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Action { + Allow(Empty), + } + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Direction { + Ingress(Empty), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct AclMode { + pub bitflags: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct MzAclItem { + pub grantee: Option, + pub grantor: Option, + pub acl_mode: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DefaultPrivilegesKey { + pub role_id: Option, + pub database_id: Option, + pub schema_id: Option, + pub object_type: i32, + pub grantee: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DefaultPrivilegesValue { + pub privileges: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemPrivilegesKey { + pub grantee: Option, + pub grantor: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemPrivilegesValue { + pub acl_mode: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct AuditLogEventV1 { + pub id: u64, + pub event_type: i32, + pub object_type: i32, + pub user: Option, + pub occurred_at: Option, + pub details: Option, +} + +pub mod audit_log_event_v1 { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct IdFullNameV1 { + pub id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct FullNameV1 { + pub database: String, + pub schema: String, + pub item: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct IdNameV1 { + pub id: String, + pub name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameClusterV1 { + pub id: String, + pub old_name: String, + pub new_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameClusterReplicaV1 { + pub cluster_id: String, + pub replica_id: String, + pub old_name: String, + pub new_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameItemV1 { + pub id: String, + pub old_name: Option, + pub new_name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateClusterReplicaV1 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub logical_size: String, + pub disk: bool, + pub billed_as: Option, + pub internal: bool, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateClusterReplicaV2 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub logical_size: String, + pub disk: bool, + pub billed_as: Option, + pub internal: bool, + pub reason: Option, + pub scheduling_policies: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateClusterReplicaV3 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub logical_size: String, + pub disk: bool, + pub billed_as: Option, + pub internal: bool, + pub reason: Option, + pub scheduling_policies: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct DropClusterReplicaV1 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct DropClusterReplicaV2 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub reason: Option, + pub scheduling_policies: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct DropClusterReplicaV3 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub reason: Option, + pub scheduling_policies: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct CreateOrDropClusterReplicaReasonV1 { + pub reason: Option, + } + + pub mod create_or_drop_cluster_replica_reason_v1 { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Reason { + Manual(Empty), + Schedule(Empty), + System(Empty), + } + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SchedulingDecisionsWithReasonsV1 { + pub on_refresh: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SchedulingDecisionsWithReasonsV2 { + pub on_refresh: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RefreshDecisionWithReasonV1 { + pub objects_needing_refresh: Vec, + pub rehydration_time_estimate: String, + pub decision: Option, + } + + pub mod refresh_decision_with_reason_v1 { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Decision { + On(Empty), + Off(Empty), + } + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RefreshDecisionWithReasonV2 { + pub objects_needing_refresh: Vec, + pub objects_needing_compaction: Vec, + pub rehydration_time_estimate: String, + pub decision: Option, + } + + pub mod refresh_decision_with_reason_v2 { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Decision { + On(Empty), + Off(Empty), + } + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV1 { + pub id: String, + pub name: Option, + pub size: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV2 { + pub id: String, + pub name: Option, + pub size: Option, + pub external_type: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV3 { + pub id: String, + pub name: Option, + pub external_type: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV4 { + pub id: String, + pub cluster_id: Option, + pub name: Option, + pub external_type: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateIndexV1 { + pub id: String, + pub cluster_id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateMaterializedViewV1 { + pub id: String, + pub cluster_id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterSourceSinkV1 { + pub id: String, + pub name: Option, + pub old_size: Option, + pub new_size: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterSetClusterV1 { + pub id: String, + pub name: Option, + pub old_cluster: Option, + pub new_cluster: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct GrantRoleV1 { + pub role_id: String, + pub member_id: String, + pub grantor_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct GrantRoleV2 { + pub role_id: String, + pub member_id: String, + pub grantor_id: String, + pub executed_by: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RevokeRoleV1 { + pub role_id: String, + pub member_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RevokeRoleV2 { + pub role_id: String, + pub member_id: String, + pub grantor_id: String, + pub executed_by: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UpdatePrivilegeV1 { + pub object_id: String, + pub grantee_id: String, + pub grantor_id: String, + pub privileges: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterDefaultPrivilegeV1 { + pub role_id: String, + pub database_id: Option, + pub schema_id: Option, + pub grantee_id: String, + pub privileges: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UpdateOwnerV1 { + pub object_id: String, + pub old_owner_id: String, + pub new_owner_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SchemaV1 { + pub id: String, + pub name: String, + pub database_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SchemaV2 { + pub id: String, + pub name: String, + pub database_name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameSchemaV1 { + pub id: String, + pub database_name: Option, + pub old_name: String, + pub new_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UpdateItemV1 { + pub id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterRetainHistoryV1 { + pub id: String, + pub old_history: Option, + pub new_history: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ToNewIdV1 { + pub id: String, + pub new_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct FromPreviousIdV1 { + pub id: String, + pub previous_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SetV1 { + pub name: String, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RotateKeysV1 { + pub id: String, + pub name: String, + } + + #[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, + )] + #[repr(i32)] + pub enum EventType { + Unknown = 0, + Create = 1, + Drop = 2, + Alter = 3, + Grant = 4, + Revoke = 5, + Comment = 6, + } + + #[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, + )] + #[repr(i32)] + pub enum ObjectType { + Unknown = 0, + Cluster = 1, + ClusterReplica = 2, + Connection = 3, + Database = 4, + Func = 5, + Index = 6, + MaterializedView = 7, + Role = 8, + Secret = 9, + Schema = 10, + Sink = 11, + Source = 12, + Table = 13, + Type = 14, + View = 15, + System = 16, + ContinualTask = 17, + NetworkPolicy = 18, + } + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Details { + CreateClusterReplicaV1(CreateClusterReplicaV1), + CreateClusterReplicaV2(CreateClusterReplicaV2), + CreateClusterReplicaV3(CreateClusterReplicaV3), + DropClusterReplicaV1(DropClusterReplicaV1), + DropClusterReplicaV2(DropClusterReplicaV2), + DropClusterReplicaV3(DropClusterReplicaV3), + CreateSourceSinkV1(CreateSourceSinkV1), + CreateSourceSinkV2(CreateSourceSinkV2), + AlterSourceSinkV1(AlterSourceSinkV1), + AlterSetClusterV1(AlterSetClusterV1), + GrantRoleV1(GrantRoleV1), + GrantRoleV2(GrantRoleV2), + RevokeRoleV1(RevokeRoleV1), + RevokeRoleV2(RevokeRoleV2), + UpdatePrivilegeV1(UpdatePrivilegeV1), + AlterDefaultPrivilegeV1(AlterDefaultPrivilegeV1), + UpdateOwnerV1(UpdateOwnerV1), + IdFullNameV1(IdFullNameV1), + RenameClusterV1(RenameClusterV1), + RenameClusterReplicaV1(RenameClusterReplicaV1), + RenameItemV1(RenameItemV1), + IdNameV1(IdNameV1), + SchemaV1(SchemaV1), + SchemaV2(SchemaV2), + RenameSchemaV1(RenameSchemaV1), + UpdateItemV1(UpdateItemV1), + CreateSourceSinkV3(CreateSourceSinkV3), + AlterRetainHistoryV1(AlterRetainHistoryV1), + ToNewIdV1(ToNewIdV1), + FromPreviousIdV1(FromPreviousIdV1), + SetV1(SetV1), + ResetAllV1(Empty), + RotateKeysV1(RotateKeysV1), + CreateSourceSinkV4(CreateSourceSinkV4), + CreateIndexV1(CreateIndexV1), + CreateMaterializedViewV1(CreateMaterializedViewV1), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StateUpdateKind { + pub kind: Option, +} + +pub mod state_update_kind { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AuditLog { + pub key: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Cluster { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ClusterReplica { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Comment { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Config { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Database { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct DefaultPrivileges { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct FenceToken { + pub deploy_generation: u64, + pub epoch: i64, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct IdAlloc { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ClusterIntrospectionSourceIndex { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Item { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Role { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RoleAuth { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct NetworkPolicy { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Schema { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Setting { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ServerConfiguration { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SourceReferences { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct GidMapping { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct SystemPrivileges { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct StorageCollectionMetadata { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UnfinalizedShard { + pub key: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct TxnWalShard { + pub value: Option, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + // Serialize the top-level enum in the persist-backed catalog as internally tagged to set up + // persist pushdown statistics for success. + #[serde(tag = "kind")] + pub enum Kind { + AuditLog(AuditLog), + Cluster(Cluster), + ClusterReplica(ClusterReplica), + Comment(Comment), + Config(Config), + Database(Database), + DefaultPrivileges(DefaultPrivileges), + IdAlloc(IdAlloc), + ClusterIntrospectionSourceIndex(ClusterIntrospectionSourceIndex), + Item(Item), + Role(Role), + Schema(Schema), + Setting(Setting), + ServerConfiguration(ServerConfiguration), + GidMapping(GidMapping), + SystemPrivileges(SystemPrivileges), + StorageCollectionMetadata(StorageCollectionMetadata), + UnfinalizedShard(UnfinalizedShard), + TxnWalShard(TxnWalShard), + SourceReferences(SourceReferences), + FenceToken(FenceToken), + NetworkPolicy(NetworkPolicy), + RoleAuth(RoleAuth), + } +} + +#[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, +)] +#[repr(i32)] +pub enum CatalogItemType { + Unknown = 0, + Table = 1, + Source = 2, + Sink = 3, + View = 4, + MaterializedView = 5, + Index = 6, + Type = 7, + Func = 8, + Secret = 9, + Connection = 10, + ContinualTask = 11, +} + +#[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, +)] +#[repr(i32)] +pub enum ObjectType { + Unknown = 0, + Table = 1, + View = 2, + MaterializedView = 3, + Source = 4, + Sink = 5, + Index = 6, + Type = 7, + Role = 8, + Cluster = 9, + ClusterReplica = 10, + Secret = 11, + Connection = 12, + Database = 13, + Schema = 14, + Func = 15, + ContinualTask = 16, + NetworkPolicy = 17, +} diff --git a/src/catalog-protos/src/objects_v75.rs b/src/catalog-protos/src/objects_v75.rs new file mode 100644 index 0000000000000..3c653865d40bc --- /dev/null +++ b/src/catalog-protos/src/objects_v75.rs @@ -0,0 +1,1800 @@ +use num_enum::{IntoPrimitive, TryFromPrimitive}; +use proptest_derive::Arbitrary; +use serde::{Deserialize, Serialize}; + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ConfigKey { + pub key: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ConfigValue { + pub value: u64, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SettingKey { + pub name: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SettingValue { + pub value: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct IdAllocKey { + pub name: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct IdAllocValue { + pub next_id: u64, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct GidMappingKey { + pub schema_name: String, + pub object_type: i32, + pub object_name: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct GidMappingValue { + pub id: u64, + pub fingerprint: String, + pub global_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterValue { + pub name: String, + pub owner_id: Option, + pub privileges: Vec, + pub config: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterIntrospectionSourceIndexKey { + pub cluster_id: Option, + pub name: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterIntrospectionSourceIndexValue { + pub index_id: u64, + pub oid: u32, + pub global_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterReplicaKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterReplicaValue { + pub cluster_id: Option, + pub name: String, + pub config: Option, + pub owner_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DatabaseKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DatabaseValue { + pub name: String, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaValue { + pub database_id: Option, + pub name: String, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ItemKey { + pub gid: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ItemValue { + pub schema_id: Option, + pub name: String, + pub definition: Option, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, + pub global_id: Option, + pub extra_versions: Vec, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ItemVersion { + pub global_id: Option, + pub version: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleValue { + pub name: String, + pub attributes: Option, + pub membership: Option, + pub vars: Option, + pub oid: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleAuthKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleAuthValue { + pub password_hash: Option, + pub updated_at: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct NetworkPolicyKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct NetworkPolicyValue { + pub name: String, + pub rules: Vec, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ServerConfigurationKey { + pub name: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ServerConfigurationValue { + pub value: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct AuditLogKey { + pub event: Option, +} + +pub mod audit_log_key { + use super::*; + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Event { + V1(AuditLogEventV1), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CommentKey { + pub object: Option, + pub sub_component: Option, +} + +pub mod comment_key { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Object { + Table(CatalogItemId), + View(CatalogItemId), + MaterializedView(CatalogItemId), + Source(CatalogItemId), + Sink(CatalogItemId), + Index(CatalogItemId), + Func(CatalogItemId), + Connection(CatalogItemId), + Type(CatalogItemId), + Secret(CatalogItemId), + ContinualTask(CatalogItemId), + Role(RoleId), + Database(DatabaseId), + Schema(ResolvedSchema), + Cluster(ClusterId), + ClusterReplica(ClusterReplicaId), + NetworkPolicy(NetworkPolicyId), + } + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum SubComponent { + ColumnPos(u64), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CommentValue { + pub comment: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SourceReferencesKey { + pub source: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SourceReferencesValue { + pub references: Vec, + pub updated_at: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SourceReference { + pub name: String, + pub namespace: Option, + pub columns: Vec, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StorageCollectionMetadataKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StorageCollectionMetadataValue { + pub shard: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct UnfinalizedShardKey { + pub shard: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct TxnWalShardValue { + pub shard: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Empty {} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StringWrapper { + pub inner: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Duration { + pub secs: u64, + pub nanos: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct EpochMillis { + pub millis: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Timestamp { + pub internal: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Version { + pub value: u64, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CatalogItem { + pub value: Option, +} + +pub mod catalog_item { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct V1 { + pub create_sql: String, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Value { + V1(V1), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CatalogItemId { + pub value: Option, +} + +pub mod catalog_item_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + Transient(u64), + IntrospectionSourceIndex(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemCatalogItemId { + pub value: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct IntrospectionSourceIndexCatalogItemId { + pub value: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct GlobalId { + pub value: Option, +} + +pub mod global_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + Transient(u64), + Explain(Empty), + IntrospectionSourceIndex(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemGlobalId { + pub value: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct IntrospectionSourceIndexGlobalId { + pub value: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterId { + pub value: Option, +} + +pub mod cluster_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DatabaseId { + pub value: Option, +} + +pub mod database_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ResolvedDatabaseSpecifier { + pub spec: Option, +} + +pub mod resolved_database_specifier { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Spec { + Ambient(Empty), + Id(DatabaseId), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaId { + pub value: Option, +} + +pub mod schema_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaSpecifier { + pub spec: Option, +} + +pub mod schema_specifier { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Spec { + Temporary(Empty), + Id(SchemaId), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ResolvedSchema { + pub database: Option, + pub schema: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ReplicaId { + pub value: Option, +} + +pub mod replica_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterReplicaId { + pub cluster_id: Option, + pub replica_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct NetworkPolicyId { + pub value: Option, +} + +pub mod network_policy_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ReplicaLogging { + pub log_logging: bool, + pub interval: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct OptimizerFeatureOverride { + pub name: String, + pub value: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterScheduleRefreshOptions { + pub rehydration_time_estimate: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterSchedule { + pub value: Option, +} + +pub mod cluster_schedule { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + Manual(Empty), + Refresh(ClusterScheduleRefreshOptions), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterConfig { + pub workload_class: Option, + pub variant: Option, +} + +pub mod cluster_config { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ManagedCluster { + pub size: String, + pub replication_factor: u32, + pub availability_zones: Vec, + pub logging: Option, + pub disk: bool, + pub optimizer_feature_overrides: Vec, + pub schedule: Option, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Variant { + Unmanaged(Empty), + Managed(ManagedCluster), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ReplicaConfig { + pub logging: Option, + pub location: Option, +} + +pub mod replica_config { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UnmanagedLocation { + pub storagectl_addrs: Vec, + pub computectl_addrs: Vec, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ManagedLocation { + pub size: String, + pub availability_zone: Option, + pub disk: bool, + pub internal: bool, + pub billed_as: Option, + pub pending: bool, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Location { + Unmanaged(UnmanagedLocation), + Managed(ManagedLocation), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleId { + pub value: Option, +} + +pub mod role_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + Public(Empty), + Predefined(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleAttributes { + pub inherit: bool, + pub superuser: Option, + pub login: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleMembership { + pub map: Vec, +} + +pub mod role_membership { + use super::*; + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct Entry { + pub key: Option, + pub value: Option, + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleVars { + pub entries: Vec, +} + +pub mod role_vars { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SqlSet { + pub entries: Vec, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Entry { + pub key: String, + pub val: Option, + } + + pub mod entry { + use super::*; + + #[derive( + Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Val { + Flat(String), + SqlSet(SqlSet), + } + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct NetworkPolicyRule { + pub name: String, + pub address: String, + pub action: Option, + pub direction: Option, +} + +pub mod network_policy_rule { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Action { + Allow(Empty), + } + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Direction { + Ingress(Empty), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct AclMode { + pub bitflags: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct MzAclItem { + pub grantee: Option, + pub grantor: Option, + pub acl_mode: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DefaultPrivilegesKey { + pub role_id: Option, + pub database_id: Option, + pub schema_id: Option, + pub object_type: i32, + pub grantee: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DefaultPrivilegesValue { + pub privileges: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemPrivilegesKey { + pub grantee: Option, + pub grantor: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemPrivilegesValue { + pub acl_mode: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct AuditLogEventV1 { + pub id: u64, + pub event_type: i32, + pub object_type: i32, + pub user: Option, + pub occurred_at: Option, + pub details: Option, +} + +pub mod audit_log_event_v1 { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct IdFullNameV1 { + pub id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct FullNameV1 { + pub database: String, + pub schema: String, + pub item: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct IdNameV1 { + pub id: String, + pub name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameClusterV1 { + pub id: String, + pub old_name: String, + pub new_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameClusterReplicaV1 { + pub cluster_id: String, + pub replica_id: String, + pub old_name: String, + pub new_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameItemV1 { + pub id: String, + pub old_name: Option, + pub new_name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateClusterReplicaV1 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub logical_size: String, + pub disk: bool, + pub billed_as: Option, + pub internal: bool, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateClusterReplicaV2 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub logical_size: String, + pub disk: bool, + pub billed_as: Option, + pub internal: bool, + pub reason: Option, + pub scheduling_policies: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateClusterReplicaV3 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub logical_size: String, + pub disk: bool, + pub billed_as: Option, + pub internal: bool, + pub reason: Option, + pub scheduling_policies: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct DropClusterReplicaV1 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct DropClusterReplicaV2 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub reason: Option, + pub scheduling_policies: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct DropClusterReplicaV3 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub reason: Option, + pub scheduling_policies: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct CreateOrDropClusterReplicaReasonV1 { + pub reason: Option, + } + + pub mod create_or_drop_cluster_replica_reason_v1 { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Reason { + Manual(Empty), + Schedule(Empty), + System(Empty), + } + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SchedulingDecisionsWithReasonsV1 { + pub on_refresh: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SchedulingDecisionsWithReasonsV2 { + pub on_refresh: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RefreshDecisionWithReasonV1 { + pub objects_needing_refresh: Vec, + pub rehydration_time_estimate: String, + pub decision: Option, + } + + pub mod refresh_decision_with_reason_v1 { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Decision { + On(Empty), + Off(Empty), + } + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RefreshDecisionWithReasonV2 { + pub objects_needing_refresh: Vec, + pub objects_needing_compaction: Vec, + pub rehydration_time_estimate: String, + pub decision: Option, + } + + pub mod refresh_decision_with_reason_v2 { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Decision { + On(Empty), + Off(Empty), + } + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV1 { + pub id: String, + pub name: Option, + pub size: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV2 { + pub id: String, + pub name: Option, + pub size: Option, + pub external_type: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV3 { + pub id: String, + pub name: Option, + pub external_type: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV4 { + pub id: String, + pub cluster_id: Option, + pub name: Option, + pub external_type: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateIndexV1 { + pub id: String, + pub cluster_id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateMaterializedViewV1 { + pub id: String, + pub cluster_id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterSourceSinkV1 { + pub id: String, + pub name: Option, + pub old_size: Option, + pub new_size: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterSetClusterV1 { + pub id: String, + pub name: Option, + pub old_cluster: Option, + pub new_cluster: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct GrantRoleV1 { + pub role_id: String, + pub member_id: String, + pub grantor_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct GrantRoleV2 { + pub role_id: String, + pub member_id: String, + pub grantor_id: String, + pub executed_by: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RevokeRoleV1 { + pub role_id: String, + pub member_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RevokeRoleV2 { + pub role_id: String, + pub member_id: String, + pub grantor_id: String, + pub executed_by: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UpdatePrivilegeV1 { + pub object_id: String, + pub grantee_id: String, + pub grantor_id: String, + pub privileges: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterDefaultPrivilegeV1 { + pub role_id: String, + pub database_id: Option, + pub schema_id: Option, + pub grantee_id: String, + pub privileges: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UpdateOwnerV1 { + pub object_id: String, + pub old_owner_id: String, + pub new_owner_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SchemaV1 { + pub id: String, + pub name: String, + pub database_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SchemaV2 { + pub id: String, + pub name: String, + pub database_name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameSchemaV1 { + pub id: String, + pub database_name: Option, + pub old_name: String, + pub new_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UpdateItemV1 { + pub id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterRetainHistoryV1 { + pub id: String, + pub old_history: Option, + pub new_history: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ToNewIdV1 { + pub id: String, + pub new_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct FromPreviousIdV1 { + pub id: String, + pub previous_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SetV1 { + pub name: String, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RotateKeysV1 { + pub id: String, + pub name: String, + } + + #[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, + )] + #[repr(i32)] + pub enum EventType { + Unknown = 0, + Create = 1, + Drop = 2, + Alter = 3, + Grant = 4, + Revoke = 5, + Comment = 6, + } + + #[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, + )] + #[repr(i32)] + pub enum ObjectType { + Unknown = 0, + Cluster = 1, + ClusterReplica = 2, + Connection = 3, + Database = 4, + Func = 5, + Index = 6, + MaterializedView = 7, + Role = 8, + Secret = 9, + Schema = 10, + Sink = 11, + Source = 12, + Table = 13, + Type = 14, + View = 15, + System = 16, + ContinualTask = 17, + NetworkPolicy = 18, + } + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Details { + CreateClusterReplicaV1(CreateClusterReplicaV1), + CreateClusterReplicaV2(CreateClusterReplicaV2), + CreateClusterReplicaV3(CreateClusterReplicaV3), + DropClusterReplicaV1(DropClusterReplicaV1), + DropClusterReplicaV2(DropClusterReplicaV2), + DropClusterReplicaV3(DropClusterReplicaV3), + CreateSourceSinkV1(CreateSourceSinkV1), + CreateSourceSinkV2(CreateSourceSinkV2), + AlterSourceSinkV1(AlterSourceSinkV1), + AlterSetClusterV1(AlterSetClusterV1), + GrantRoleV1(GrantRoleV1), + GrantRoleV2(GrantRoleV2), + RevokeRoleV1(RevokeRoleV1), + RevokeRoleV2(RevokeRoleV2), + UpdatePrivilegeV1(UpdatePrivilegeV1), + AlterDefaultPrivilegeV1(AlterDefaultPrivilegeV1), + UpdateOwnerV1(UpdateOwnerV1), + IdFullNameV1(IdFullNameV1), + RenameClusterV1(RenameClusterV1), + RenameClusterReplicaV1(RenameClusterReplicaV1), + RenameItemV1(RenameItemV1), + IdNameV1(IdNameV1), + SchemaV1(SchemaV1), + SchemaV2(SchemaV2), + RenameSchemaV1(RenameSchemaV1), + UpdateItemV1(UpdateItemV1), + CreateSourceSinkV3(CreateSourceSinkV3), + AlterRetainHistoryV1(AlterRetainHistoryV1), + ToNewIdV1(ToNewIdV1), + FromPreviousIdV1(FromPreviousIdV1), + SetV1(SetV1), + ResetAllV1(Empty), + RotateKeysV1(RotateKeysV1), + CreateSourceSinkV4(CreateSourceSinkV4), + CreateIndexV1(CreateIndexV1), + CreateMaterializedViewV1(CreateMaterializedViewV1), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StateUpdateKind { + pub kind: Option, +} + +pub mod state_update_kind { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AuditLog { + pub key: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Cluster { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ClusterReplica { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Comment { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Config { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Database { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct DefaultPrivileges { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct FenceToken { + pub deploy_generation: u64, + pub epoch: i64, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct IdAlloc { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ClusterIntrospectionSourceIndex { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Item { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Role { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RoleAuth { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct NetworkPolicy { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Schema { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Setting { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ServerConfiguration { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SourceReferences { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct GidMapping { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct SystemPrivileges { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct StorageCollectionMetadata { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UnfinalizedShard { + pub key: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct TxnWalShard { + pub value: Option, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + // Serialize the top-level enum in the persist-backed catalog as internally tagged to set up + // persist pushdown statistics for success. + #[serde(tag = "kind")] + pub enum Kind { + AuditLog(AuditLog), + Cluster(Cluster), + ClusterReplica(ClusterReplica), + Comment(Comment), + Config(Config), + Database(Database), + DefaultPrivileges(DefaultPrivileges), + IdAlloc(IdAlloc), + ClusterIntrospectionSourceIndex(ClusterIntrospectionSourceIndex), + Item(Item), + Role(Role), + Schema(Schema), + Setting(Setting), + ServerConfiguration(ServerConfiguration), + GidMapping(GidMapping), + SystemPrivileges(SystemPrivileges), + StorageCollectionMetadata(StorageCollectionMetadata), + UnfinalizedShard(UnfinalizedShard), + TxnWalShard(TxnWalShard), + SourceReferences(SourceReferences), + FenceToken(FenceToken), + NetworkPolicy(NetworkPolicy), + RoleAuth(RoleAuth), + } +} + +#[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, +)] +#[repr(i32)] +pub enum CatalogItemType { + Unknown = 0, + Table = 1, + Source = 2, + Sink = 3, + View = 4, + MaterializedView = 5, + Index = 6, + Type = 7, + Func = 8, + Secret = 9, + Connection = 10, + ContinualTask = 11, +} + +#[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, +)] +#[repr(i32)] +pub enum ObjectType { + Unknown = 0, + Table = 1, + View = 2, + MaterializedView = 3, + Source = 4, + Sink = 5, + Index = 6, + Type = 7, + Role = 8, + Cluster = 9, + ClusterReplica = 10, + Secret = 11, + Connection = 12, + Database = 13, + Schema = 14, + Func = 15, + ContinualTask = 16, + NetworkPolicy = 17, +} diff --git a/src/catalog-protos/src/objects_v76.rs b/src/catalog-protos/src/objects_v76.rs new file mode 100644 index 0000000000000..2e584d3c20547 --- /dev/null +++ b/src/catalog-protos/src/objects_v76.rs @@ -0,0 +1,1815 @@ +use num_enum::{IntoPrimitive, TryFromPrimitive}; +use proptest_derive::Arbitrary; +use serde::{Deserialize, Serialize}; + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ConfigKey { + pub key: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ConfigValue { + pub value: u64, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SettingKey { + pub name: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SettingValue { + pub value: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct IdAllocKey { + pub name: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct IdAllocValue { + pub next_id: u64, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct GidMappingKey { + pub schema_name: String, + pub object_type: i32, + pub object_name: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct GidMappingValue { + pub id: u64, + pub fingerprint: String, + pub global_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterValue { + pub name: String, + pub owner_id: Option, + pub privileges: Vec, + pub config: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterIntrospectionSourceIndexKey { + pub cluster_id: Option, + pub name: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterIntrospectionSourceIndexValue { + pub index_id: u64, + pub oid: u32, + pub global_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterReplicaKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterReplicaValue { + pub cluster_id: Option, + pub name: String, + pub config: Option, + pub owner_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DatabaseKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DatabaseValue { + pub name: String, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaValue { + pub database_id: Option, + pub name: String, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ItemKey { + pub gid: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ItemValue { + pub schema_id: Option, + pub name: String, + pub definition: Option, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, + pub global_id: Option, + pub extra_versions: Vec, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ItemVersion { + pub global_id: Option, + pub version: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleValue { + pub name: String, + pub attributes: Option, + pub membership: Option, + pub vars: Option, + pub oid: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleAuthKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleAuthValue { + pub password_hash: Option, + pub updated_at: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct NetworkPolicyKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct NetworkPolicyValue { + pub name: String, + pub rules: Vec, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ServerConfigurationKey { + pub name: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ServerConfigurationValue { + pub value: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct AuditLogKey { + pub event: Option, +} + +pub mod audit_log_key { + use super::*; + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Event { + V1(AuditLogEventV1), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CommentKey { + pub object: Option, + pub sub_component: Option, +} + +pub mod comment_key { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Object { + Table(CatalogItemId), + View(CatalogItemId), + MaterializedView(CatalogItemId), + Source(CatalogItemId), + Sink(CatalogItemId), + Index(CatalogItemId), + Func(CatalogItemId), + Connection(CatalogItemId), + Type(CatalogItemId), + Secret(CatalogItemId), + ContinualTask(CatalogItemId), + Role(RoleId), + Database(DatabaseId), + Schema(ResolvedSchema), + Cluster(ClusterId), + ClusterReplica(ClusterReplicaId), + NetworkPolicy(NetworkPolicyId), + } + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum SubComponent { + ColumnPos(u64), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CommentValue { + pub comment: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SourceReferencesKey { + pub source: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SourceReferencesValue { + pub references: Vec, + pub updated_at: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SourceReference { + pub name: String, + pub namespace: Option, + pub columns: Vec, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StorageCollectionMetadataKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StorageCollectionMetadataValue { + pub shard: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct UnfinalizedShardKey { + pub shard: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct TxnWalShardValue { + pub shard: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Empty {} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StringWrapper { + pub inner: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Duration { + pub secs: u64, + pub nanos: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct EpochMillis { + pub millis: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Timestamp { + pub internal: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Version { + pub value: u64, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CatalogItem { + pub value: Option, +} + +pub mod catalog_item { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct V1 { + pub create_sql: String, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Value { + V1(V1), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CatalogItemId { + pub value: Option, +} + +pub mod catalog_item_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + Transient(u64), + IntrospectionSourceIndex(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemCatalogItemId { + pub value: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct IntrospectionSourceIndexCatalogItemId { + pub value: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct GlobalId { + pub value: Option, +} + +pub mod global_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + Transient(u64), + Explain(Empty), + IntrospectionSourceIndex(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemGlobalId { + pub value: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct IntrospectionSourceIndexGlobalId { + pub value: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterId { + pub value: Option, +} + +pub mod cluster_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DatabaseId { + pub value: Option, +} + +pub mod database_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ResolvedDatabaseSpecifier { + pub spec: Option, +} + +pub mod resolved_database_specifier { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Spec { + Ambient(Empty), + Id(DatabaseId), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaId { + pub value: Option, +} + +pub mod schema_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaSpecifier { + pub spec: Option, +} + +pub mod schema_specifier { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Spec { + Temporary(Empty), + Id(SchemaId), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ResolvedSchema { + pub database: Option, + pub schema: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ReplicaId { + pub value: Option, +} + +pub mod replica_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterReplicaId { + pub cluster_id: Option, + pub replica_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct NetworkPolicyId { + pub value: Option, +} + +pub mod network_policy_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ReplicaLogging { + pub log_logging: bool, + pub interval: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct OptimizerFeatureOverride { + pub name: String, + pub value: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterScheduleRefreshOptions { + pub rehydration_time_estimate: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterSchedule { + pub value: Option, +} + +pub mod cluster_schedule { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + Manual(Empty), + Refresh(ClusterScheduleRefreshOptions), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterConfig { + pub workload_class: Option, + pub variant: Option, +} + +pub mod cluster_config { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ManagedCluster { + pub size: String, + pub replication_factor: u32, + pub availability_zones: Vec, + pub logging: Option, + pub optimizer_feature_overrides: Vec, + pub schedule: Option, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Variant { + Unmanaged(Empty), + Managed(ManagedCluster), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ReplicaConfig { + pub logging: Option, + pub location: Option, +} + +pub mod replica_config { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UnmanagedLocation { + pub storagectl_addrs: Vec, + pub computectl_addrs: Vec, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ManagedLocation { + pub size: String, + pub availability_zone: Option, + pub internal: bool, + pub billed_as: Option, + pub pending: bool, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Location { + Unmanaged(UnmanagedLocation), + Managed(ManagedLocation), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleId { + pub value: Option, +} + +pub mod role_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + Public(Empty), + Predefined(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleAttributes { + pub inherit: bool, + pub superuser: Option, + pub login: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleMembership { + pub map: Vec, +} + +pub mod role_membership { + use super::*; + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct Entry { + pub key: Option, + pub value: Option, + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleVars { + pub entries: Vec, +} + +pub mod role_vars { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SqlSet { + pub entries: Vec, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Entry { + pub key: String, + pub val: Option, + } + + pub mod entry { + use super::*; + + #[derive( + Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Val { + Flat(String), + SqlSet(SqlSet), + } + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct NetworkPolicyRule { + pub name: String, + pub address: String, + pub action: Option, + pub direction: Option, +} + +pub mod network_policy_rule { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Action { + Allow(Empty), + } + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Direction { + Ingress(Empty), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct AclMode { + pub bitflags: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct MzAclItem { + pub grantee: Option, + pub grantor: Option, + pub acl_mode: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DefaultPrivilegesKey { + pub role_id: Option, + pub database_id: Option, + pub schema_id: Option, + pub object_type: i32, + pub grantee: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DefaultPrivilegesValue { + pub privileges: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemPrivilegesKey { + pub grantee: Option, + pub grantor: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemPrivilegesValue { + pub acl_mode: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct AuditLogEventV1 { + pub id: u64, + pub event_type: i32, + pub object_type: i32, + pub user: Option, + pub occurred_at: Option, + pub details: Option, +} + +pub mod audit_log_event_v1 { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct IdFullNameV1 { + pub id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct FullNameV1 { + pub database: String, + pub schema: String, + pub item: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct IdNameV1 { + pub id: String, + pub name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameClusterV1 { + pub id: String, + pub old_name: String, + pub new_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameClusterReplicaV1 { + pub cluster_id: String, + pub replica_id: String, + pub old_name: String, + pub new_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameItemV1 { + pub id: String, + pub old_name: Option, + pub new_name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateClusterReplicaV1 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub logical_size: String, + pub disk: bool, + pub billed_as: Option, + pub internal: bool, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateClusterReplicaV2 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub logical_size: String, + pub disk: bool, + pub billed_as: Option, + pub internal: bool, + pub reason: Option, + pub scheduling_policies: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateClusterReplicaV3 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub logical_size: String, + pub disk: bool, + pub billed_as: Option, + pub internal: bool, + pub reason: Option, + pub scheduling_policies: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateClusterReplicaV4 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub logical_size: String, + pub billed_as: Option, + pub internal: bool, + pub reason: Option, + pub scheduling_policies: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct DropClusterReplicaV1 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct DropClusterReplicaV2 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub reason: Option, + pub scheduling_policies: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct DropClusterReplicaV3 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub reason: Option, + pub scheduling_policies: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct CreateOrDropClusterReplicaReasonV1 { + pub reason: Option, + } + + pub mod create_or_drop_cluster_replica_reason_v1 { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Reason { + Manual(Empty), + Schedule(Empty), + System(Empty), + } + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SchedulingDecisionsWithReasonsV1 { + pub on_refresh: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SchedulingDecisionsWithReasonsV2 { + pub on_refresh: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RefreshDecisionWithReasonV1 { + pub objects_needing_refresh: Vec, + pub rehydration_time_estimate: String, + pub decision: Option, + } + + pub mod refresh_decision_with_reason_v1 { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Decision { + On(Empty), + Off(Empty), + } + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RefreshDecisionWithReasonV2 { + pub objects_needing_refresh: Vec, + pub objects_needing_compaction: Vec, + pub rehydration_time_estimate: String, + pub decision: Option, + } + + pub mod refresh_decision_with_reason_v2 { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Decision { + On(Empty), + Off(Empty), + } + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV1 { + pub id: String, + pub name: Option, + pub size: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV2 { + pub id: String, + pub name: Option, + pub size: Option, + pub external_type: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV3 { + pub id: String, + pub name: Option, + pub external_type: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV4 { + pub id: String, + pub cluster_id: Option, + pub name: Option, + pub external_type: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateIndexV1 { + pub id: String, + pub cluster_id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateMaterializedViewV1 { + pub id: String, + pub cluster_id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterSourceSinkV1 { + pub id: String, + pub name: Option, + pub old_size: Option, + pub new_size: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterSetClusterV1 { + pub id: String, + pub name: Option, + pub old_cluster: Option, + pub new_cluster: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct GrantRoleV1 { + pub role_id: String, + pub member_id: String, + pub grantor_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct GrantRoleV2 { + pub role_id: String, + pub member_id: String, + pub grantor_id: String, + pub executed_by: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RevokeRoleV1 { + pub role_id: String, + pub member_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RevokeRoleV2 { + pub role_id: String, + pub member_id: String, + pub grantor_id: String, + pub executed_by: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UpdatePrivilegeV1 { + pub object_id: String, + pub grantee_id: String, + pub grantor_id: String, + pub privileges: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterDefaultPrivilegeV1 { + pub role_id: String, + pub database_id: Option, + pub schema_id: Option, + pub grantee_id: String, + pub privileges: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UpdateOwnerV1 { + pub object_id: String, + pub old_owner_id: String, + pub new_owner_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SchemaV1 { + pub id: String, + pub name: String, + pub database_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SchemaV2 { + pub id: String, + pub name: String, + pub database_name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameSchemaV1 { + pub id: String, + pub database_name: Option, + pub old_name: String, + pub new_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UpdateItemV1 { + pub id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterRetainHistoryV1 { + pub id: String, + pub old_history: Option, + pub new_history: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ToNewIdV1 { + pub id: String, + pub new_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct FromPreviousIdV1 { + pub id: String, + pub previous_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SetV1 { + pub name: String, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RotateKeysV1 { + pub id: String, + pub name: String, + } + + #[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, + )] + #[repr(i32)] + pub enum EventType { + Unknown = 0, + Create = 1, + Drop = 2, + Alter = 3, + Grant = 4, + Revoke = 5, + Comment = 6, + } + + #[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, + )] + #[repr(i32)] + pub enum ObjectType { + Unknown = 0, + Cluster = 1, + ClusterReplica = 2, + Connection = 3, + Database = 4, + Func = 5, + Index = 6, + MaterializedView = 7, + Role = 8, + Secret = 9, + Schema = 10, + Sink = 11, + Source = 12, + Table = 13, + Type = 14, + View = 15, + System = 16, + ContinualTask = 17, + NetworkPolicy = 18, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Details { + CreateClusterReplicaV1(CreateClusterReplicaV1), + CreateClusterReplicaV2(CreateClusterReplicaV2), + CreateClusterReplicaV3(CreateClusterReplicaV3), + CreateClusterReplicaV4(CreateClusterReplicaV4), + DropClusterReplicaV1(DropClusterReplicaV1), + DropClusterReplicaV2(DropClusterReplicaV2), + DropClusterReplicaV3(DropClusterReplicaV3), + CreateSourceSinkV1(CreateSourceSinkV1), + CreateSourceSinkV2(CreateSourceSinkV2), + AlterSourceSinkV1(AlterSourceSinkV1), + AlterSetClusterV1(AlterSetClusterV1), + GrantRoleV1(GrantRoleV1), + GrantRoleV2(GrantRoleV2), + RevokeRoleV1(RevokeRoleV1), + RevokeRoleV2(RevokeRoleV2), + UpdatePrivilegeV1(UpdatePrivilegeV1), + AlterDefaultPrivilegeV1(AlterDefaultPrivilegeV1), + UpdateOwnerV1(UpdateOwnerV1), + IdFullNameV1(IdFullNameV1), + RenameClusterV1(RenameClusterV1), + RenameClusterReplicaV1(RenameClusterReplicaV1), + RenameItemV1(RenameItemV1), + IdNameV1(IdNameV1), + SchemaV1(SchemaV1), + SchemaV2(SchemaV2), + RenameSchemaV1(RenameSchemaV1), + UpdateItemV1(UpdateItemV1), + CreateSourceSinkV3(CreateSourceSinkV3), + AlterRetainHistoryV1(AlterRetainHistoryV1), + ToNewIdV1(ToNewIdV1), + FromPreviousIdV1(FromPreviousIdV1), + SetV1(SetV1), + ResetAllV1(Empty), + RotateKeysV1(RotateKeysV1), + CreateSourceSinkV4(CreateSourceSinkV4), + CreateIndexV1(CreateIndexV1), + CreateMaterializedViewV1(CreateMaterializedViewV1), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StateUpdateKind { + pub kind: Option, +} + +pub mod state_update_kind { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AuditLog { + pub key: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Cluster { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ClusterReplica { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Comment { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Config { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Database { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct DefaultPrivileges { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct FenceToken { + pub deploy_generation: u64, + pub epoch: i64, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct IdAlloc { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ClusterIntrospectionSourceIndex { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Item { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Role { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RoleAuth { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct NetworkPolicy { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Schema { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Setting { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ServerConfiguration { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SourceReferences { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct GidMapping { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct SystemPrivileges { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct StorageCollectionMetadata { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UnfinalizedShard { + pub key: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct TxnWalShard { + pub value: Option, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + // Serialize the top-level enum in the persist-backed catalog as internally tagged to set up + // persist pushdown statistics for success. + #[serde(tag = "kind")] + pub enum Kind { + AuditLog(AuditLog), + Cluster(Cluster), + ClusterReplica(ClusterReplica), + Comment(Comment), + Config(Config), + Database(Database), + DefaultPrivileges(DefaultPrivileges), + IdAlloc(IdAlloc), + ClusterIntrospectionSourceIndex(ClusterIntrospectionSourceIndex), + Item(Item), + Role(Role), + Schema(Schema), + Setting(Setting), + ServerConfiguration(ServerConfiguration), + GidMapping(GidMapping), + SystemPrivileges(SystemPrivileges), + StorageCollectionMetadata(StorageCollectionMetadata), + UnfinalizedShard(UnfinalizedShard), + TxnWalShard(TxnWalShard), + SourceReferences(SourceReferences), + FenceToken(FenceToken), + NetworkPolicy(NetworkPolicy), + RoleAuth(RoleAuth), + } +} + +#[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, +)] +#[repr(i32)] +pub enum CatalogItemType { + Unknown = 0, + Table = 1, + Source = 2, + Sink = 3, + View = 4, + MaterializedView = 5, + Index = 6, + Type = 7, + Func = 8, + Secret = 9, + Connection = 10, + ContinualTask = 11, +} + +#[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, +)] +#[repr(i32)] +pub enum ObjectType { + Unknown = 0, + Table = 1, + View = 2, + MaterializedView = 3, + Source = 4, + Sink = 5, + Index = 6, + Type = 7, + Role = 8, + Cluster = 9, + ClusterReplica = 10, + Secret = 11, + Connection = 12, + Database = 13, + Schema = 14, + Func = 15, + ContinualTask = 16, + NetworkPolicy = 17, +} diff --git a/src/catalog-protos/src/objects_v77.rs b/src/catalog-protos/src/objects_v77.rs new file mode 100644 index 0000000000000..2e584d3c20547 --- /dev/null +++ b/src/catalog-protos/src/objects_v77.rs @@ -0,0 +1,1815 @@ +use num_enum::{IntoPrimitive, TryFromPrimitive}; +use proptest_derive::Arbitrary; +use serde::{Deserialize, Serialize}; + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ConfigKey { + pub key: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ConfigValue { + pub value: u64, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SettingKey { + pub name: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SettingValue { + pub value: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct IdAllocKey { + pub name: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct IdAllocValue { + pub next_id: u64, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct GidMappingKey { + pub schema_name: String, + pub object_type: i32, + pub object_name: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct GidMappingValue { + pub id: u64, + pub fingerprint: String, + pub global_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterValue { + pub name: String, + pub owner_id: Option, + pub privileges: Vec, + pub config: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterIntrospectionSourceIndexKey { + pub cluster_id: Option, + pub name: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterIntrospectionSourceIndexValue { + pub index_id: u64, + pub oid: u32, + pub global_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterReplicaKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterReplicaValue { + pub cluster_id: Option, + pub name: String, + pub config: Option, + pub owner_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DatabaseKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DatabaseValue { + pub name: String, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaValue { + pub database_id: Option, + pub name: String, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ItemKey { + pub gid: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ItemValue { + pub schema_id: Option, + pub name: String, + pub definition: Option, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, + pub global_id: Option, + pub extra_versions: Vec, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ItemVersion { + pub global_id: Option, + pub version: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleValue { + pub name: String, + pub attributes: Option, + pub membership: Option, + pub vars: Option, + pub oid: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleAuthKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleAuthValue { + pub password_hash: Option, + pub updated_at: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct NetworkPolicyKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct NetworkPolicyValue { + pub name: String, + pub rules: Vec, + pub owner_id: Option, + pub privileges: Vec, + pub oid: u32, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ServerConfigurationKey { + pub name: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ServerConfigurationValue { + pub value: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct AuditLogKey { + pub event: Option, +} + +pub mod audit_log_key { + use super::*; + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Event { + V1(AuditLogEventV1), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CommentKey { + pub object: Option, + pub sub_component: Option, +} + +pub mod comment_key { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Object { + Table(CatalogItemId), + View(CatalogItemId), + MaterializedView(CatalogItemId), + Source(CatalogItemId), + Sink(CatalogItemId), + Index(CatalogItemId), + Func(CatalogItemId), + Connection(CatalogItemId), + Type(CatalogItemId), + Secret(CatalogItemId), + ContinualTask(CatalogItemId), + Role(RoleId), + Database(DatabaseId), + Schema(ResolvedSchema), + Cluster(ClusterId), + ClusterReplica(ClusterReplicaId), + NetworkPolicy(NetworkPolicyId), + } + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum SubComponent { + ColumnPos(u64), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CommentValue { + pub comment: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SourceReferencesKey { + pub source: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SourceReferencesValue { + pub references: Vec, + pub updated_at: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SourceReference { + pub name: String, + pub namespace: Option, + pub columns: Vec, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StorageCollectionMetadataKey { + pub id: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StorageCollectionMetadataValue { + pub shard: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct UnfinalizedShardKey { + pub shard: String, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct TxnWalShardValue { + pub shard: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Empty {} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StringWrapper { + pub inner: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Duration { + pub secs: u64, + pub nanos: u32, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct EpochMillis { + pub millis: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Timestamp { + pub internal: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct Version { + pub value: u64, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CatalogItem { + pub value: Option, +} + +pub mod catalog_item { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct V1 { + pub create_sql: String, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Value { + V1(V1), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct CatalogItemId { + pub value: Option, +} + +pub mod catalog_item_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + Transient(u64), + IntrospectionSourceIndex(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemCatalogItemId { + pub value: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct IntrospectionSourceIndexCatalogItemId { + pub value: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct GlobalId { + pub value: Option, +} + +pub mod global_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + Transient(u64), + Explain(Empty), + IntrospectionSourceIndex(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemGlobalId { + pub value: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct IntrospectionSourceIndexGlobalId { + pub value: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterId { + pub value: Option, +} + +pub mod cluster_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DatabaseId { + pub value: Option, +} + +pub mod database_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ResolvedDatabaseSpecifier { + pub spec: Option, +} + +pub mod resolved_database_specifier { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Spec { + Ambient(Empty), + Id(DatabaseId), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaId { + pub value: Option, +} + +pub mod schema_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SchemaSpecifier { + pub spec: Option, +} + +pub mod schema_specifier { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Spec { + Temporary(Empty), + Id(SchemaId), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ResolvedSchema { + pub database: Option, + pub schema: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ReplicaId { + pub value: Option, +} + +pub mod replica_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterReplicaId { + pub cluster_id: Option, + pub replica_id: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct NetworkPolicyId { + pub value: Option, +} + +pub mod network_policy_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ReplicaLogging { + pub log_logging: bool, + pub interval: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct OptimizerFeatureOverride { + pub name: String, + pub value: String, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterScheduleRefreshOptions { + pub rehydration_time_estimate: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterSchedule { + pub value: Option, +} + +pub mod cluster_schedule { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + Manual(Empty), + Refresh(ClusterScheduleRefreshOptions), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ClusterConfig { + pub workload_class: Option, + pub variant: Option, +} + +pub mod cluster_config { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ManagedCluster { + pub size: String, + pub replication_factor: u32, + pub availability_zones: Vec, + pub logging: Option, + pub optimizer_feature_overrides: Vec, + pub schedule: Option, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Variant { + Unmanaged(Empty), + Managed(ManagedCluster), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct ReplicaConfig { + pub logging: Option, + pub location: Option, +} + +pub mod replica_config { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UnmanagedLocation { + pub storagectl_addrs: Vec, + pub computectl_addrs: Vec, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ManagedLocation { + pub size: String, + pub availability_zone: Option, + pub internal: bool, + pub billed_as: Option, + pub pending: bool, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Location { + Unmanaged(UnmanagedLocation), + Managed(ManagedLocation), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleId { + pub value: Option, +} + +pub mod role_id { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Value { + System(u64), + User(u64), + Public(Empty), + Predefined(u64), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleAttributes { + pub inherit: bool, + pub superuser: Option, + pub login: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleMembership { + pub map: Vec, +} + +pub mod role_membership { + use super::*; + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct Entry { + pub key: Option, + pub value: Option, + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct RoleVars { + pub entries: Vec, +} + +pub mod role_vars { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SqlSet { + pub entries: Vec, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Entry { + pub key: String, + pub val: Option, + } + + pub mod entry { + use super::*; + + #[derive( + Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Val { + Flat(String), + SqlSet(SqlSet), + } + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct NetworkPolicyRule { + pub name: String, + pub address: String, + pub action: Option, + pub direction: Option, +} + +pub mod network_policy_rule { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Action { + Allow(Empty), + } + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Direction { + Ingress(Empty), + } +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct AclMode { + pub bitflags: u64, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct MzAclItem { + pub grantee: Option, + pub grantor: Option, + pub acl_mode: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DefaultPrivilegesKey { + pub role_id: Option, + pub database_id: Option, + pub schema_id: Option, + pub object_type: i32, + pub grantee: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct DefaultPrivilegesValue { + pub privileges: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemPrivilegesKey { + pub grantee: Option, + pub grantor: Option, +} + +#[derive( + Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct SystemPrivilegesValue { + pub acl_mode: Option, +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct AuditLogEventV1 { + pub id: u64, + pub event_type: i32, + pub object_type: i32, + pub user: Option, + pub occurred_at: Option, + pub details: Option, +} + +pub mod audit_log_event_v1 { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct IdFullNameV1 { + pub id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct FullNameV1 { + pub database: String, + pub schema: String, + pub item: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct IdNameV1 { + pub id: String, + pub name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameClusterV1 { + pub id: String, + pub old_name: String, + pub new_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameClusterReplicaV1 { + pub cluster_id: String, + pub replica_id: String, + pub old_name: String, + pub new_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameItemV1 { + pub id: String, + pub old_name: Option, + pub new_name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateClusterReplicaV1 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub logical_size: String, + pub disk: bool, + pub billed_as: Option, + pub internal: bool, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateClusterReplicaV2 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub logical_size: String, + pub disk: bool, + pub billed_as: Option, + pub internal: bool, + pub reason: Option, + pub scheduling_policies: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateClusterReplicaV3 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub logical_size: String, + pub disk: bool, + pub billed_as: Option, + pub internal: bool, + pub reason: Option, + pub scheduling_policies: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateClusterReplicaV4 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub logical_size: String, + pub billed_as: Option, + pub internal: bool, + pub reason: Option, + pub scheduling_policies: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct DropClusterReplicaV1 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct DropClusterReplicaV2 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub reason: Option, + pub scheduling_policies: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct DropClusterReplicaV3 { + pub cluster_id: String, + pub cluster_name: String, + pub replica_id: Option, + pub replica_name: String, + pub reason: Option, + pub scheduling_policies: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct CreateOrDropClusterReplicaReasonV1 { + pub reason: Option, + } + + pub mod create_or_drop_cluster_replica_reason_v1 { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Reason { + Manual(Empty), + Schedule(Empty), + System(Empty), + } + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SchedulingDecisionsWithReasonsV1 { + pub on_refresh: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SchedulingDecisionsWithReasonsV2 { + pub on_refresh: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RefreshDecisionWithReasonV1 { + pub objects_needing_refresh: Vec, + pub rehydration_time_estimate: String, + pub decision: Option, + } + + pub mod refresh_decision_with_reason_v1 { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Decision { + On(Empty), + Off(Empty), + } + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RefreshDecisionWithReasonV2 { + pub objects_needing_refresh: Vec, + pub objects_needing_compaction: Vec, + pub rehydration_time_estimate: String, + pub decision: Option, + } + + pub mod refresh_decision_with_reason_v2 { + use super::*; + + #[derive( + Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub enum Decision { + On(Empty), + Off(Empty), + } + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV1 { + pub id: String, + pub name: Option, + pub size: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV2 { + pub id: String, + pub name: Option, + pub size: Option, + pub external_type: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV3 { + pub id: String, + pub name: Option, + pub external_type: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateSourceSinkV4 { + pub id: String, + pub cluster_id: Option, + pub name: Option, + pub external_type: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateIndexV1 { + pub id: String, + pub cluster_id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct CreateMaterializedViewV1 { + pub id: String, + pub cluster_id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterSourceSinkV1 { + pub id: String, + pub name: Option, + pub old_size: Option, + pub new_size: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterSetClusterV1 { + pub id: String, + pub name: Option, + pub old_cluster: Option, + pub new_cluster: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct GrantRoleV1 { + pub role_id: String, + pub member_id: String, + pub grantor_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct GrantRoleV2 { + pub role_id: String, + pub member_id: String, + pub grantor_id: String, + pub executed_by: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RevokeRoleV1 { + pub role_id: String, + pub member_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RevokeRoleV2 { + pub role_id: String, + pub member_id: String, + pub grantor_id: String, + pub executed_by: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UpdatePrivilegeV1 { + pub object_id: String, + pub grantee_id: String, + pub grantor_id: String, + pub privileges: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterDefaultPrivilegeV1 { + pub role_id: String, + pub database_id: Option, + pub schema_id: Option, + pub grantee_id: String, + pub privileges: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UpdateOwnerV1 { + pub object_id: String, + pub old_owner_id: String, + pub new_owner_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SchemaV1 { + pub id: String, + pub name: String, + pub database_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SchemaV2 { + pub id: String, + pub name: String, + pub database_name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RenameSchemaV1 { + pub id: String, + pub database_name: Option, + pub old_name: String, + pub new_name: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UpdateItemV1 { + pub id: String, + pub name: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AlterRetainHistoryV1 { + pub id: String, + pub old_history: Option, + pub new_history: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ToNewIdV1 { + pub id: String, + pub new_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct FromPreviousIdV1 { + pub id: String, + pub previous_id: String, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SetV1 { + pub name: String, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RotateKeysV1 { + pub id: String, + pub name: String, + } + + #[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, + )] + #[repr(i32)] + pub enum EventType { + Unknown = 0, + Create = 1, + Drop = 2, + Alter = 3, + Grant = 4, + Revoke = 5, + Comment = 6, + } + + #[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, + )] + #[repr(i32)] + pub enum ObjectType { + Unknown = 0, + Cluster = 1, + ClusterReplica = 2, + Connection = 3, + Database = 4, + Func = 5, + Index = 6, + MaterializedView = 7, + Role = 8, + Secret = 9, + Schema = 10, + Sink = 11, + Source = 12, + Table = 13, + Type = 14, + View = 15, + System = 16, + ContinualTask = 17, + NetworkPolicy = 18, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + pub enum Details { + CreateClusterReplicaV1(CreateClusterReplicaV1), + CreateClusterReplicaV2(CreateClusterReplicaV2), + CreateClusterReplicaV3(CreateClusterReplicaV3), + CreateClusterReplicaV4(CreateClusterReplicaV4), + DropClusterReplicaV1(DropClusterReplicaV1), + DropClusterReplicaV2(DropClusterReplicaV2), + DropClusterReplicaV3(DropClusterReplicaV3), + CreateSourceSinkV1(CreateSourceSinkV1), + CreateSourceSinkV2(CreateSourceSinkV2), + AlterSourceSinkV1(AlterSourceSinkV1), + AlterSetClusterV1(AlterSetClusterV1), + GrantRoleV1(GrantRoleV1), + GrantRoleV2(GrantRoleV2), + RevokeRoleV1(RevokeRoleV1), + RevokeRoleV2(RevokeRoleV2), + UpdatePrivilegeV1(UpdatePrivilegeV1), + AlterDefaultPrivilegeV1(AlterDefaultPrivilegeV1), + UpdateOwnerV1(UpdateOwnerV1), + IdFullNameV1(IdFullNameV1), + RenameClusterV1(RenameClusterV1), + RenameClusterReplicaV1(RenameClusterReplicaV1), + RenameItemV1(RenameItemV1), + IdNameV1(IdNameV1), + SchemaV1(SchemaV1), + SchemaV2(SchemaV2), + RenameSchemaV1(RenameSchemaV1), + UpdateItemV1(UpdateItemV1), + CreateSourceSinkV3(CreateSourceSinkV3), + AlterRetainHistoryV1(AlterRetainHistoryV1), + ToNewIdV1(ToNewIdV1), + FromPreviousIdV1(FromPreviousIdV1), + SetV1(SetV1), + ResetAllV1(Empty), + RotateKeysV1(RotateKeysV1), + CreateSourceSinkV4(CreateSourceSinkV4), + CreateIndexV1(CreateIndexV1), + CreateMaterializedViewV1(CreateMaterializedViewV1), + } +} + +#[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, +)] +pub struct StateUpdateKind { + pub kind: Option, +} + +pub mod state_update_kind { + use super::*; + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct AuditLog { + pub key: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Cluster { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ClusterReplica { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Comment { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Config { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Database { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct DefaultPrivileges { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct FenceToken { + pub deploy_generation: u64, + pub epoch: i64, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct IdAlloc { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ClusterIntrospectionSourceIndex { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Item { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Role { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct RoleAuth { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct NetworkPolicy { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Schema { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct Setting { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct ServerConfiguration { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct SourceReferences { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct GidMapping { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, + Copy, + Debug, + Default, + PartialEq, + Eq, + PartialOrd, + Ord, + Serialize, + Deserialize, + Arbitrary, + )] + pub struct SystemPrivileges { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct StorageCollectionMetadata { + pub key: Option, + pub value: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct UnfinalizedShard { + pub key: Option, + } + + #[derive( + Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary, + )] + pub struct TxnWalShard { + pub value: Option, + } + + #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize, Arbitrary)] + // Serialize the top-level enum in the persist-backed catalog as internally tagged to set up + // persist pushdown statistics for success. + #[serde(tag = "kind")] + pub enum Kind { + AuditLog(AuditLog), + Cluster(Cluster), + ClusterReplica(ClusterReplica), + Comment(Comment), + Config(Config), + Database(Database), + DefaultPrivileges(DefaultPrivileges), + IdAlloc(IdAlloc), + ClusterIntrospectionSourceIndex(ClusterIntrospectionSourceIndex), + Item(Item), + Role(Role), + Schema(Schema), + Setting(Setting), + ServerConfiguration(ServerConfiguration), + GidMapping(GidMapping), + SystemPrivileges(SystemPrivileges), + StorageCollectionMetadata(StorageCollectionMetadata), + UnfinalizedShard(UnfinalizedShard), + TxnWalShard(TxnWalShard), + SourceReferences(SourceReferences), + FenceToken(FenceToken), + NetworkPolicy(NetworkPolicy), + RoleAuth(RoleAuth), + } +} + +#[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, +)] +#[repr(i32)] +pub enum CatalogItemType { + Unknown = 0, + Table = 1, + Source = 2, + Sink = 3, + View = 4, + MaterializedView = 5, + Index = 6, + Type = 7, + Func = 8, + Secret = 9, + Connection = 10, + ContinualTask = 11, +} + +#[derive( + Clone, + Copy, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + Arbitrary, + IntoPrimitive, + TryFromPrimitive, +)] +#[repr(i32)] +pub enum ObjectType { + Unknown = 0, + Table = 1, + View = 2, + MaterializedView = 3, + Source = 4, + Sink = 5, + Index = 6, + Type = 7, + Role = 8, + Cluster = 9, + ClusterReplica = 10, + Secret = 11, + Connection = 12, + Database = 13, + Schema = 14, + Func = 15, + ContinualTask = 16, + NetworkPolicy = 17, +} diff --git a/src/catalog/src/durable/upgrade.rs b/src/catalog/src/durable/upgrade.rs index c08ad3b515952..a6f8e02844482 100644 --- a/src/catalog/src/durable/upgrade.rs +++ b/src/catalog/src/durable/upgrade.rs @@ -60,9 +60,9 @@ //! //! When in doubt, reach out to the Surfaces team, and we'll be more than happy to help :) +pub mod json_compatible; #[cfg(test)] mod tests; -pub mod wire_compatible; use mz_ore::{soft_assert_eq_or_log, soft_assert_ne_or_log}; use mz_repr::Diff; diff --git a/src/catalog/src/durable/upgrade/wire_compatible.rs b/src/catalog/src/durable/upgrade/json_compatible.rs similarity index 57% rename from src/catalog/src/durable/upgrade/wire_compatible.rs rename to src/catalog/src/durable/upgrade/json_compatible.rs index f4834bdb29762..8e5a8848763b6 100644 --- a/src/catalog/src/durable/upgrade/wire_compatible.rs +++ b/src/catalog/src/durable/upgrade/json_compatible.rs @@ -7,52 +7,54 @@ // the Business Source License, use of this software will be governed // by the Apache License, Version 2.0. -use bytes::Bytes; +use serde::Serialize; +use serde::de::DeserializeOwned; -/// Denotes that `Self` is wire compatible with type `T`. +/// Denotes that `Self` is JSON compatible with type `T`. /// -/// You should not implement this yourself, instead use the `wire_compatible!` macro. -pub unsafe trait WireCompatible: prost::Message + Default { +/// You should not implement this yourself, instead use the `json_compatible!` macro. +pub unsafe trait JsonCompatible: Serialize + DeserializeOwned +where + T: Serialize + DeserializeOwned, +{ /// Converts the type `T` into `Self` by serializing `T` and deserializing as `Self`. fn convert(old: &T) -> Self { - let bytes = old.encode_to_vec(); - // Note: use Bytes to enable possible re-use of the underlying buffer. - let bytes = Bytes::from(bytes); - Self::decode(bytes).expect("wire compatible") + let bytes = serde_json::to_vec(old).expect("JSON serializable"); + serde_json::from_slice(&bytes).expect("JSON compatible") } } -// SAFETY: A message type is trivially wire compatible with itself. -unsafe impl WireCompatible for T { +// SAFETY: A type is trivially JSON compatible with itself. +unsafe impl JsonCompatible for T { fn convert(old: &Self) -> Self { old.clone() } } -/// Defines one protobuf type as wire compatible with another. +/// Defines one type as JSON compatible with another. /// /// ```text -/// wire_compatible!(objects_v28::DatabaseKey with objects_v27::DatabaseKey); +/// json_compatible!(objects_v28::DatabaseKey with objects_v27::DatabaseKey); /// ``` /// -/// Internally this will implement the `WireCompatible for `, e.g. -/// `WireCompatible for objects_v28::DatabaseKey` and generate `proptest` +/// Internally this will implement `JsonCompatible for `, e.g. +/// `JsonCompatible for objects_v28::DatabaseKey` and generate `proptest` /// cases that will create arbitrary objects of type `B` and assert they can be deserialized with /// type `A`, and vice versa. #[macro_export] -macro_rules! wire_compatible { +macro_rules! json_compatible { ($a:ident $(:: $a_sub:ident)* with $b:ident $(:: $b_sub:ident)*) => { ::static_assertions::assert_impl_all!( - $a $(::$a_sub)* : ::proptest::arbitrary::Arbitrary, ::prost::Message, Default, + $a $(::$a_sub)* : ::proptest::arbitrary::Arbitrary, ::serde::Serialize, ::serde::de::DeserializeOwned, ); ::static_assertions::assert_impl_all!( - $b $(::$b_sub)* : ::proptest::arbitrary::Arbitrary, ::prost::Message, Default, + $b $(::$b_sub)* : ::proptest::arbitrary::Arbitrary, ::serde::Serialize, ::serde::de::DeserializeOwned, ); - // SAFETY: Below we assert that these types are wire compatible by generating arbitrary + // SAFETY: Below we assert that these types are JSON compatible by generating arbitrary // structs, encoding in one, and then decoding in the other. - unsafe impl $crate::durable::upgrade::wire_compatible::WireCompatible< $b $(::$b_sub)* > for $a $(::$a_sub)* {} - unsafe impl $crate::durable::upgrade::wire_compatible::WireCompatible< $a $(::$a_sub)* > for $b $(::$b_sub)* {} + unsafe impl $crate::durable::upgrade::json_compatible::JsonCompatible< $b $(::$b_sub)* > for $a $(::$a_sub)* {} + unsafe impl $crate::durable::upgrade::json_compatible::JsonCompatible< $a $(::$a_sub)* > for $b $(::$b_sub)* {} ::paste::paste! { ::proptest::proptest! { @@ -63,39 +65,37 @@ macro_rules! wire_compatible { #[mz_ore::test] #[cfg_attr(miri, ignore)] // slow - fn [](a: $a $(::$a_sub)* ) { - use ::prost::Message; - let a_bytes = a.encode_to_vec(); - let b_decoded = $b $(::$b_sub)*::decode(&a_bytes[..]); + fn [](a: $a $(::$a_sub)* ) { + let a_bytes = ::serde_json::to_vec(&a).expect("JSON serializable"); + let b_decoded = ::serde_json::from_slice::<$b $(::$b_sub)*>(&a_bytes); ::proptest::prelude::prop_assert!(b_decoded.is_ok()); // Maybe superfluous, but this is a method called in production. let b_decoded = b_decoded.expect("asserted Ok"); - let b_converted: $b $(::$b_sub)* = $crate::durable::upgrade::wire_compatible::WireCompatible::convert(&a); + let b_converted: $b $(::$b_sub)* = $crate::durable::upgrade::json_compatible::JsonCompatible::convert(&a); assert_eq!(b_decoded, b_converted); - let b_bytes = b_decoded.encode_to_vec(); + let b_bytes = ::serde_json::to_vec(&b_decoded).expect("JSON serializable"); ::proptest::prelude::prop_assert_eq!(a_bytes, b_bytes, "a and b serialize differently"); } #[mz_ore::test] #[cfg_attr(miri, ignore)] // slow - fn [](b: $b $(::$b_sub)* ) { - use ::prost::Message; - let b_bytes = b.encode_to_vec(); - let a_decoded = $a $(::$a_sub)*::decode(&b_bytes[..]); + fn [](b: $b $(::$b_sub)* ) { + let b_bytes = ::serde_json::to_vec(&b).expect("JSON serializable"); + let a_decoded = ::serde_json::from_slice::<$a $(::$a_sub)*>(&b_bytes); ::proptest::prelude::prop_assert!(a_decoded.is_ok()); // Maybe superfluous, but this is a method called in production. let a_decoded = a_decoded.expect("asserted Ok"); - let a_converted: $a $(::$a_sub)* = $crate::durable::upgrade::wire_compatible::WireCompatible::convert(&b); + let a_converted: $a $(::$a_sub)* = $crate::durable::upgrade::json_compatible::JsonCompatible::convert(&b); assert_eq!(a_decoded, a_converted); - let a_bytes = a_decoded.encode_to_vec(); + let a_bytes = ::serde_json::to_vec(&a_decoded).expect("JSON serializable"); ::proptest::prelude::prop_assert_eq!(a_bytes, b_bytes, "a and b serialize differently"); } } } }; } -pub use wire_compatible; +pub use json_compatible; diff --git a/src/catalog/src/durable/upgrade/v67_to_v68.rs b/src/catalog/src/durable/upgrade/v67_to_v68.rs index 679133f5d5e12..aeb6f0464c2d1 100644 --- a/src/catalog/src/durable/upgrade/v67_to_v68.rs +++ b/src/catalog/src/durable/upgrade/v67_to_v68.rs @@ -9,22 +9,22 @@ use crate::durable::traits::{UpgradeFrom, UpgradeInto}; use crate::durable::upgrade::MigrationAction; -use crate::durable::upgrade::wire_compatible::{WireCompatible, wire_compatible}; +use crate::durable::upgrade::json_compatible::{JsonCompatible, json_compatible}; use crate::durable::upgrade::{objects_v67 as v67, objects_v68 as v68}; -wire_compatible!(v67::GlobalId with v68::GlobalId); -wire_compatible!(v67::CatalogItem with v68::CatalogItem); -wire_compatible!(v67::SchemaId with v68::SchemaId); -wire_compatible!(v67::CommentValue with v68::CommentValue); -wire_compatible!(v67::RoleId with v68::RoleId); -wire_compatible!(v67::MzAclItem with v68::MzAclItem); -wire_compatible!(v67::DatabaseId with v68::DatabaseId); -wire_compatible!(v67::ResolvedSchema with v68::ResolvedSchema); -wire_compatible!(v67::ClusterId with v68::ClusterId); -wire_compatible!(v67::ClusterReplicaId with v68::ClusterReplicaId); -wire_compatible!(v67::SourceReferencesValue with v68::SourceReferencesValue); -wire_compatible!(v67::GidMappingKey with v68::GidMappingKey); -wire_compatible!(v67::ClusterIntrospectionSourceIndexKey with v68::ClusterIntrospectionSourceIndexKey); +json_compatible!(v67::GlobalId with v68::GlobalId); +json_compatible!(v67::CatalogItem with v68::CatalogItem); +json_compatible!(v67::SchemaId with v68::SchemaId); +json_compatible!(v67::CommentValue with v68::CommentValue); +json_compatible!(v67::RoleId with v68::RoleId); +json_compatible!(v67::MzAclItem with v68::MzAclItem); +json_compatible!(v67::DatabaseId with v68::DatabaseId); +json_compatible!(v67::ResolvedSchema with v68::ResolvedSchema); +json_compatible!(v67::ClusterId with v68::ClusterId); +json_compatible!(v67::ClusterReplicaId with v68::ClusterReplicaId); +json_compatible!(v67::SourceReferencesValue with v68::SourceReferencesValue); +json_compatible!(v67::GidMappingKey with v68::GidMappingKey); +json_compatible!(v67::ClusterIntrospectionSourceIndexKey with v68::ClusterIntrospectionSourceIndexKey); /// In v68 we switched catalog items to be keyed on a `CatalogItemId`, this required a few changes: /// @@ -278,7 +278,7 @@ impl UpgradeFrom fn upgrade_from(old: v67::state_update_kind::SourceReferences) -> Self { v68::state_update_kind::SourceReferences { key: old.key.map(|old| old.upgrade_into()), - value: old.value.map(|old| WireCompatible::convert(&old)), + value: old.value.map(|old| JsonCompatible::convert(&old)), } } } diff --git a/src/catalog/src/durable/upgrade/v73_to_v74.rs b/src/catalog/src/durable/upgrade/v73_to_v74.rs index 91ca79560b725..d5b767069f70f 100644 --- a/src/catalog/src/durable/upgrade/v73_to_v74.rs +++ b/src/catalog/src/durable/upgrade/v73_to_v74.rs @@ -10,9 +10,9 @@ use crate::durable::traits::UpgradeFrom; use crate::durable::upgrade::MigrationAction; use crate::durable::upgrade::{objects_v73 as v73, objects_v74 as v74}; -use crate::wire_compatible; +use crate::json_compatible; -wire_compatible!(v73::RoleKey with v74::RoleKey); +json_compatible!(v73::RoleKey with v74::RoleKey); /// in v74, we add attributes to RoleAttribute. pub fn upgrade( diff --git a/src/catalog/src/durable/upgrade/v74_to_v75.rs b/src/catalog/src/durable/upgrade/v74_to_v75.rs index 3c2632ede3185..5cd7e6240ba05 100644 --- a/src/catalog/src/durable/upgrade/v74_to_v75.rs +++ b/src/catalog/src/durable/upgrade/v74_to_v75.rs @@ -9,14 +9,14 @@ use crate::durable::traits::{UpgradeFrom, UpgradeInto}; use crate::durable::upgrade::MigrationAction; -use crate::durable::upgrade::wire_compatible::{WireCompatible, wire_compatible}; +use crate::durable::upgrade::json_compatible::{JsonCompatible, json_compatible}; use crate::durable::upgrade::{objects_v74 as v74, objects_v75 as v75}; -wire_compatible!(v74::ClusterReplicaKey with v75::ClusterReplicaKey); -wire_compatible!(v74::ClusterId with v75::ClusterId); -wire_compatible!(v74::RoleId with v75::RoleId); -wire_compatible!(v74::ReplicaLogging with v75::ReplicaLogging); -wire_compatible!(v74::replica_config::ManagedLocation with v75::replica_config::ManagedLocation); +json_compatible!(v74::ClusterReplicaKey with v75::ClusterReplicaKey); +json_compatible!(v74::ClusterId with v75::ClusterId); +json_compatible!(v74::RoleId with v75::RoleId); +json_compatible!(v74::ReplicaLogging with v75::ReplicaLogging); +json_compatible!(v74::replica_config::ManagedLocation with v75::replica_config::ManagedLocation); /// Removes some options from unmanaged (unorchestrated?) replica configs. pub fn upgrade( @@ -49,7 +49,7 @@ impl UpgradeFrom { fn upgrade_from(old: v74::state_update_kind::ClusterReplica) -> Self { v75::state_update_kind::ClusterReplica { - key: old.key.as_ref().map(WireCompatible::convert), + key: old.key.as_ref().map(JsonCompatible::convert), value: old.value.map(UpgradeFrom::upgrade_from), } } @@ -58,10 +58,10 @@ impl UpgradeFrom impl UpgradeFrom for v75::ClusterReplicaValue { fn upgrade_from(old: v74::ClusterReplicaValue) -> Self { v75::ClusterReplicaValue { - cluster_id: old.cluster_id.as_ref().map(WireCompatible::convert), + cluster_id: old.cluster_id.as_ref().map(JsonCompatible::convert), name: old.name, config: old.config.map(UpgradeFrom::upgrade_from), - owner_id: old.owner_id.as_ref().map(WireCompatible::convert), + owner_id: old.owner_id.as_ref().map(JsonCompatible::convert), } } } @@ -69,7 +69,7 @@ impl UpgradeFrom for v75::ClusterReplicaValue { impl UpgradeFrom for v75::ReplicaConfig { fn upgrade_from(old: v74::ReplicaConfig) -> Self { v75::ReplicaConfig { - logging: old.logging.as_ref().map(WireCompatible::convert), + logging: old.logging.as_ref().map(JsonCompatible::convert), location: old.location.map(UpgradeFrom::upgrade_from), } } @@ -82,7 +82,7 @@ impl UpgradeFrom for v75::replica_config::Locatio v75::replica_config::Location::Unmanaged(loc.upgrade_into()) } v74::replica_config::Location::Managed(loc) => { - v75::replica_config::Location::Managed(WireCompatible::convert(&loc)) + v75::replica_config::Location::Managed(JsonCompatible::convert(&loc)) } } } diff --git a/src/catalog/src/durable/upgrade/v75_to_v76.rs b/src/catalog/src/durable/upgrade/v75_to_v76.rs index d4bbd9ec12796..7c9187fee0dd8 100644 --- a/src/catalog/src/durable/upgrade/v75_to_v76.rs +++ b/src/catalog/src/durable/upgrade/v75_to_v76.rs @@ -9,18 +9,18 @@ use crate::durable::traits::{UpgradeFrom, UpgradeInto}; use crate::durable::upgrade::MigrationAction; -use crate::durable::upgrade::wire_compatible::{WireCompatible, wire_compatible}; +use crate::durable::upgrade::json_compatible::{JsonCompatible, json_compatible}; use crate::durable::upgrade::{objects_v75 as v75, objects_v76 as v76}; -wire_compatible!(v75::ClusterKey with v76::ClusterKey); -wire_compatible!(v75::ClusterReplicaKey with v76::ClusterReplicaKey); -wire_compatible!(v75::ClusterId with v76::ClusterId); -wire_compatible!(v75::RoleId with v76::RoleId); -wire_compatible!(v75::MzAclItem with v76::MzAclItem); -wire_compatible!(v75::ReplicaLogging with v76::ReplicaLogging); -wire_compatible!(v75::replica_config::UnmanagedLocation with v76::replica_config::UnmanagedLocation); -wire_compatible!(v75::OptimizerFeatureOverride with v76::OptimizerFeatureOverride); -wire_compatible!(v75::ClusterSchedule with v76::ClusterSchedule); +json_compatible!(v75::ClusterKey with v76::ClusterKey); +json_compatible!(v75::ClusterReplicaKey with v76::ClusterReplicaKey); +json_compatible!(v75::ClusterId with v76::ClusterId); +json_compatible!(v75::RoleId with v76::RoleId); +json_compatible!(v75::MzAclItem with v76::MzAclItem); +json_compatible!(v75::ReplicaLogging with v76::ReplicaLogging); +json_compatible!(v75::replica_config::UnmanagedLocation with v76::replica_config::UnmanagedLocation); +json_compatible!(v75::OptimizerFeatureOverride with v76::OptimizerFeatureOverride); +json_compatible!(v75::ClusterSchedule with v76::ClusterSchedule); /// Removes the `disk` flag from managed cluster and replica configs. pub fn upgrade( @@ -64,7 +64,7 @@ pub fn upgrade( impl UpgradeFrom for v76::state_update_kind::Cluster { fn upgrade_from(old: v75::state_update_kind::Cluster) -> Self { v76::state_update_kind::Cluster { - key: old.key.as_ref().map(WireCompatible::convert), + key: old.key.as_ref().map(JsonCompatible::convert), value: old.value.map(UpgradeFrom::upgrade_from), } } @@ -74,8 +74,8 @@ impl UpgradeFrom for v76::ClusterValue { fn upgrade_from(old: v75::ClusterValue) -> Self { v76::ClusterValue { name: old.name, - owner_id: old.owner_id.as_ref().map(WireCompatible::convert), - privileges: old.privileges.iter().map(WireCompatible::convert).collect(), + owner_id: old.owner_id.as_ref().map(JsonCompatible::convert), + privileges: old.privileges.iter().map(JsonCompatible::convert).collect(), config: old.config.map(UpgradeFrom::upgrade_from), } } @@ -109,13 +109,13 @@ impl UpgradeFrom for v76::cluster_config::M size: loc.size, replication_factor: loc.replication_factor, availability_zones: loc.availability_zones, - logging: loc.logging.as_ref().map(WireCompatible::convert), + logging: loc.logging.as_ref().map(JsonCompatible::convert), optimizer_feature_overrides: loc .optimizer_feature_overrides .iter() - .map(WireCompatible::convert) + .map(JsonCompatible::convert) .collect(), - schedule: loc.schedule.as_ref().map(WireCompatible::convert), + schedule: loc.schedule.as_ref().map(JsonCompatible::convert), } } } @@ -125,7 +125,7 @@ impl UpgradeFrom { fn upgrade_from(old: v75::state_update_kind::ClusterReplica) -> Self { v76::state_update_kind::ClusterReplica { - key: old.key.as_ref().map(WireCompatible::convert), + key: old.key.as_ref().map(JsonCompatible::convert), value: old.value.map(UpgradeFrom::upgrade_from), } } @@ -134,10 +134,10 @@ impl UpgradeFrom impl UpgradeFrom for v76::ClusterReplicaValue { fn upgrade_from(old: v75::ClusterReplicaValue) -> Self { v76::ClusterReplicaValue { - cluster_id: old.cluster_id.as_ref().map(WireCompatible::convert), + cluster_id: old.cluster_id.as_ref().map(JsonCompatible::convert), name: old.name, config: old.config.map(UpgradeFrom::upgrade_from), - owner_id: old.owner_id.as_ref().map(WireCompatible::convert), + owner_id: old.owner_id.as_ref().map(JsonCompatible::convert), } } } @@ -145,7 +145,7 @@ impl UpgradeFrom for v76::ClusterReplicaValue { impl UpgradeFrom for v76::ReplicaConfig { fn upgrade_from(old: v75::ReplicaConfig) -> Self { v76::ReplicaConfig { - logging: old.logging.as_ref().map(WireCompatible::convert), + logging: old.logging.as_ref().map(JsonCompatible::convert), location: old.location.map(UpgradeFrom::upgrade_from), } } @@ -155,7 +155,7 @@ impl UpgradeFrom for v76::replica_config::Locatio fn upgrade_from(old: v75::replica_config::Location) -> Self { match old { v75::replica_config::Location::Unmanaged(loc) => { - v76::replica_config::Location::Unmanaged(WireCompatible::convert(&loc)) + v76::replica_config::Location::Unmanaged(JsonCompatible::convert(&loc)) } v75::replica_config::Location::Managed(loc) => { v76::replica_config::Location::Managed(loc.upgrade_into())