@@ -25,11 +25,12 @@ use std::collections::HashMap;
2525use crate :: api:: rest_client:: HttpClient ;
2626use crate :: catalog:: Identifier ;
2727use crate :: common:: { CatalogOptions , Options } ;
28- use crate :: spec:: { Partition , PartitionStatistics , Schema , Snapshot } ;
28+ use crate :: spec:: { Partition , PartitionStatistics , Schema , SchemaChange , Snapshot } ;
2929use crate :: Result ;
3030
3131use super :: api_request:: {
32- AlterDatabaseRequest , CreateDatabaseRequest , CreateTableRequest , RenameTableRequest ,
32+ AlterDatabaseRequest , AlterTableRequest , CreateDatabaseRequest , CreateTableRequest ,
33+ RenameTableRequest ,
3334} ;
3435use super :: api_response:: {
3536 ConfigResponse , GetDatabaseResponse , GetTableResponse , ListDatabasesResponse ,
@@ -343,6 +344,21 @@ impl RESTApi {
343344 Ok ( ( ) )
344345 }
345346
347+ /// Alter a table's schema by applying a list of schema changes.
348+ pub async fn alter_table (
349+ & self ,
350+ identifier : & Identifier ,
351+ changes : Vec < SchemaChange > ,
352+ ) -> Result < ( ) > {
353+ let database = identifier. database ( ) ;
354+ let table = identifier. object ( ) ;
355+ validate_non_empty_multi ( & [ ( database, "database name" ) , ( table, "table name" ) ] ) ?;
356+ let path = self . resource_paths . table ( database, table) ;
357+ let request = AlterTableRequest :: new ( changes) ;
358+ let _resp: serde_json:: Value = self . client . post ( & path, & request) . await ?;
359+ Ok ( ( ) )
360+ }
361+
346362 /// Get table information.
347363 pub async fn get_table ( & self , identifier : & Identifier ) -> Result < GetTableResponse > {
348364 let database = identifier. database ( ) ;
0 commit comments