@@ -145,14 +145,14 @@ impl ModifyTableColumnInterpreter {
145145 async fn do_set_data_type (
146146 & self ,
147147 table : Arc < dyn Table > ,
148- field_and_comments : & [ TableField ] ,
148+ field_and_comments : & [ ( TableField , String ) ] ,
149149 ) -> Result < PipelineBuildResult > {
150150 let schema = table. schema ( ) . as_ref ( ) . clone ( ) ;
151151 let table_info = table. get_table_info ( ) ;
152152 let mut new_schema = schema. clone ( ) ;
153153 let mut default_expr_binder = DefaultExprBinder :: try_new ( self . ctx . clone ( ) ) ?;
154154 // first check default expr before lock table
155- for field in field_and_comments {
155+ for ( field, _comment ) in field_and_comments {
156156 if let Some ( ( i, old_field) ) = schema. column_with_name ( & field. name ) {
157157 // if the field has different leaf column numbers, we need drop the old column
158158 // and add a new one to generate new column id. otherwise, leaf column ids will conflict.
@@ -208,8 +208,9 @@ impl ModifyTableColumnInterpreter {
208208
209209 let mut table_info = table. get_table_info ( ) . clone ( ) ;
210210 table_info. meta . fill_field_comments ( ) ;
211- for field in field_and_comments {
212- if let Some ( ( _i, old_field) ) = schema. column_with_name ( & field. name ) {
211+ let mut modify_comment = false ;
212+ for ( field, comment) in field_and_comments {
213+ if let Some ( ( i, old_field) ) = schema. column_with_name ( & field. name ) {
213214 if old_field. data_type != field. data_type {
214215 // If the column is defined in bloom index columns,
215216 // check whether the data type is supported for bloom index.
@@ -236,6 +237,10 @@ impl ModifyTableColumnInterpreter {
236237 }
237238 }
238239 }
240+ if table_info. meta . field_comments [ i] != * comment {
241+ table_info. meta . field_comments [ i] = comment. to_string ( ) ;
242+ modify_comment = true ;
243+ }
239244 } else {
240245 return Err ( ErrorCode :: UnknownColumn ( format ! (
241246 "Cannot find column {}" ,
@@ -245,14 +250,14 @@ impl ModifyTableColumnInterpreter {
245250 }
246251
247252 // check if schema has changed
248- if schema == new_schema {
253+ if schema == new_schema && !modify_comment {
249254 return Ok ( PipelineBuildResult :: create ( ) ) ;
250255 }
251256
252257 let mut modified_field_indices = HashSet :: new ( ) ;
253258 let new_schema_without_computed_fields = new_schema. remove_computed_fields ( ) ;
254259 if schema != new_schema {
255- for field in field_and_comments {
260+ for ( field, _ ) in field_and_comments {
256261 let field_index = new_schema_without_computed_fields. index_of ( & field. name ) ?;
257262 let old_field = schema. field_with_name ( & field. name ) ?;
258263 let is_alter_column_string_to_binary =
@@ -449,49 +454,6 @@ impl ModifyTableColumnInterpreter {
449454 . await
450455 }
451456
452- // Set column comment.
453- async fn do_set_comment (
454- & self ,
455- table : Arc < dyn Table > ,
456- field_and_comments : & [ ( TableField , String ) ] ,
457- ) -> Result < PipelineBuildResult > {
458- let schema = table. schema ( ) . as_ref ( ) . clone ( ) ;
459- let table_info = table. get_table_info ( ) ;
460-
461- let catalog_name = table_info. catalog ( ) ;
462- let catalog = self . ctx . get_catalog ( catalog_name) . await ?;
463-
464- let mut table_info = table. get_table_info ( ) . clone ( ) ;
465- table_info. meta . fill_field_comments ( ) ;
466- let mut modify_comment = false ;
467- for ( field, comment) in field_and_comments {
468- if let Some ( ( i, _) ) = schema. column_with_name ( & field. name ) {
469- if table_info. meta . field_comments [ i] != * comment {
470- table_info. meta . field_comments [ i] = comment. to_string ( ) ;
471- modify_comment = true ;
472- }
473- } else {
474- return Err ( ErrorCode :: UnknownColumn ( format ! (
475- "Cannot find column {}" ,
476- field. name
477- ) ) ) ;
478- }
479- }
480-
481- if modify_comment {
482- commit_table_meta (
483- & self . ctx ,
484- table. as_ref ( ) ,
485- & table_info,
486- table_info. meta . clone ( ) ,
487- catalog,
488- )
489- . await ?;
490- }
491-
492- Ok ( PipelineBuildResult :: create ( ) )
493- }
494-
495457 // unset data mask policy to a column is a ee feature.
496458 async fn do_unset_data_mask_policy (
497459 & self ,
@@ -631,9 +593,8 @@ impl Interpreter for ModifyTableColumnInterpreter {
631593 self . do_unset_data_mask_policy ( catalog, table, column. to_string ( ) )
632594 . await ?
633595 }
634- ModifyColumnAction :: SetDataType ( fields) => self . do_set_data_type ( table, fields) . await ?,
635- ModifyColumnAction :: Comment ( field_and_comment) => {
636- self . do_set_comment ( table, field_and_comment) . await ?
596+ ModifyColumnAction :: SetDataType ( field_and_comment) => {
597+ self . do_set_data_type ( table, field_and_comment) . await ?
637598 }
638599 ModifyColumnAction :: ConvertStoredComputedColumn ( column) => {
639600 self . do_convert_stored_computed_column (
0 commit comments