pub struct UpdateSchemaAction { /* private fields */ }Expand description
Schema evolution API modeled after the Java SchemaUpdate implementation.
This action accumulates schema modifications (column additions and deletions)
via builder methods. At commit time, it validates all operations against the
current table schema, auto-assigns field IDs from table.metadata().last_column_id(),
builds a new schema, and emits AddSchema + SetCurrentSchema updates with a
CurrentSchemaIdMatch requirement.
§Example
ⓘ
let tx = Transaction::new(&table);
let action = tx.update_schema()
.add_column(AddColumn::optional("new_col", Type::Primitive(PrimitiveType::Int)))
.add_column(
AddColumn::optional("email", Type::Primitive(PrimitiveType::String))
.with_parent("person")
)
.delete_column("old_col");
let tx = action.apply(tx).unwrap();
let table = tx.commit(&catalog).await.unwrap();Implementations§
Source§impl UpdateSchemaAction
impl UpdateSchemaAction
Sourcepub fn add_column(self, add_column: AddColumn) -> Self
pub fn add_column(self, add_column: AddColumn) -> Self
Add a column to the table schema.
To add a root-level column, leave AddColumn::parent as None.
For nested additions, set a parent path.
If the parent resolves to a map/list, the column is added to map value/list element.
Sourcepub fn delete_column(self, name: impl ToString) -> Self
pub fn delete_column(self, name: impl ToString) -> Self
Record a column deletion by name.
At commit time, the column must exist in the current schema.
Auto Trait Implementations§
impl Freeze for UpdateSchemaAction
impl RefUnwindSafe for UpdateSchemaAction
impl Send for UpdateSchemaAction
impl Sync for UpdateSchemaAction
impl Unpin for UpdateSchemaAction
impl UnsafeUnpin for UpdateSchemaAction
impl UnwindSafe for UpdateSchemaAction
Blanket Implementations§
Source§impl<T> ApplyTransactionAction for Twhere
T: TransactionAction + 'static,
impl<T> ApplyTransactionAction for Twhere
T: TransactionAction + 'static,
Source§fn apply(self, tx: Transaction) -> Result<Transaction, Error>
fn apply(self, tx: Transaction) -> Result<Transaction, Error>
Adds this action to the given transaction. Read more
§impl<U> As for U
impl<U> As for U
§fn as_<T>(self) -> Twhere
T: CastFrom<U>,
fn as_<T>(self) -> Twhere
T: CastFrom<U>,
Casts
self to type T. The semantics of numeric casting with the as operator are followed, so <T as As>::as_::<U> can be used in the same way as T as U for numeric conversions. Read moreSource§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> Downcast for Twhere
T: AsAny + ?Sized,
impl<T> Downcast for Twhere
T: AsAny + ?Sized,
§fn downcast_ref<T>(&self) -> Option<&T>where
T: AsAny,
fn downcast_ref<T>(&self) -> Option<&T>where
T: AsAny,
Forward to the method defined on the type
Any.§fn downcast_mut<T>(&mut self) -> Option<&mut T>where
T: AsAny,
fn downcast_mut<T>(&mut self) -> Option<&mut T>where
T: AsAny,
Forward to the method defined on the type
Any.§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more