physical columns

This commit is contained in:
Priec
2026-09-15 22:40:54 +02:00
parent 651f488312
commit afdcd86833
6 changed files with 64 additions and 2 deletions

View File

@@ -387,6 +387,31 @@ message PutTableDefinitionRequest {
// Required physical/catalog name. Use table_name to keep the current name.
string new_table_name = 8;
// Complete desired definition of an empty table, in catalog ordinal order.
// Aliases remain attached to their column IDs. Retained physical columns
// are not rebuilt or renamed; new columns use the existing append operation.
// Cannot be combined with remove_column_ids or add_columns. add_indexes and
// generated_aliases apply to the new columns in this definition.
optional EmptyTableDefinition replacement = 9;
}
message EmptyTableDefinition {
// Omitted existing columns are removed, subject to dependency checks.
// Retained generated companions follow their parent automatically.
repeated EmptyTableColumn columns = 1;
}
message EmptyTableColumn {
oneof column {
// Retains identity, configuration and dependencies. Generated companions
// must be retained through their parent, not listed separately.
int64 existing_column_id = 1;
// Same input as table creation. To change an existing column's type,
// omit its ID and supply a new definition; removal guards still apply.
ColumnDefinition new_column = 2;
}
}
message PutTableDefinitionResponse {

Binary file not shown.

View File

@@ -352,6 +352,42 @@ pub struct PutTableDefinitionRequest {
/// Required physical/catalog name. Use table_name to keep the current name.
#[prost(string, tag = "8")]
pub new_table_name: ::prost::alloc::string::String,
/// Complete desired definition of an empty table, in catalog ordinal order.
/// Aliases remain attached to their column IDs. Retained physical columns
/// are not rebuilt or renamed; new columns use the existing append operation.
/// Cannot be combined with remove_column_ids or add_columns. add_indexes and
/// generated_aliases apply to the new columns in this definition.
#[prost(message, optional, tag = "9")]
pub replacement: ::core::option::Option<EmptyTableDefinition>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct EmptyTableDefinition {
/// Omitted existing columns are removed, subject to dependency checks.
/// Retained generated companions follow their parent automatically.
#[prost(message, repeated, tag = "1")]
pub columns: ::prost::alloc::vec::Vec<EmptyTableColumn>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct EmptyTableColumn {
#[prost(oneof = "empty_table_column::Column", tags = "1, 2")]
pub column: ::core::option::Option<empty_table_column::Column>,
}
/// Nested message and enum types in `EmptyTableColumn`.
pub mod empty_table_column {
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
pub enum Column {
/// Retains identity, configuration and dependencies. Generated companions
/// must be retained through their parent, not listed separately.
#[prost(int64, tag = "1")]
ExistingColumnId(i64),
/// Same input as table creation. To change an existing column's type,
/// omit its ID and supply a new definition; removal guards still apply.
#[prost(message, tag = "2")]
NewColumn(super::ColumnDefinition),
}
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]