#![allow(unreachable_pub)]
use std::marker::PhantomData;
use std::sync::OnceLock;
use crate::committer::Committer;
use crate::snapshot::SnapshotRef;
use crate::table_configuration::TableConfiguration;
use crate::transaction::{AlterTable, Transaction};
use crate::utils::current_time_ms;
use crate::DeltaResult;
pub type AlterTableTransaction = Transaction<AlterTable>;
impl AlterTableTransaction {
pub(crate) fn try_new_alter_table(
read_snapshot: SnapshotRef,
effective_table_config: TableConfiguration,
committer: Box<dyn Committer>,
) -> DeltaResult<Self> {
let span = tracing::info_span!(
"txn",
path = %read_snapshot.table_root(),
read_version = read_snapshot.version(),
operation = "ALTER TABLE",
);
Ok(Transaction {
span,
read_snapshot_opt: Some(read_snapshot),
effective_table_config,
should_emit_protocol: false,
should_emit_metadata: true,
committer,
operation: Some("ALTER TABLE".to_string()),
engine_info: None,
add_files_metadata: vec![],
remove_files_metadata: vec![],
set_transactions: vec![],
commit_timestamp: current_time_ms()?,
user_domain_metadata_additions: vec![],
system_domain_metadata_additions: vec![],
user_domain_removals: vec![],
data_change: false,
shared_write_state: OnceLock::new(),
engine_commit_info: None,
is_blind_append: false,
dv_matched_files: vec![],
physical_clustering_columns: None,
_state: PhantomData,
})
}
}