@@ -872,13 +872,13 @@ impl TableMetadataBuilder {
872872 . with_fields ( sort_order. fields )
873873 . build ( & schema) ?;
874874
875- let expired_metadata_logs = self . expire_metadata_log ( ) ;
876875 self . update_snapshot_log ( ) ?;
877876 self . metadata . try_normalize ( ) ?;
878877
879878 if let Some ( hist_entry) = self . previous_history_entry . take ( ) {
880879 self . metadata . metadata_log . push ( hist_entry) ;
881880 }
881+ let expired_metadata_logs = self . expire_metadata_log ( ) ;
882882
883883 Ok ( TableMetadataBuildResult {
884884 metadata : self . metadata ,
@@ -1945,4 +1945,46 @@ mod tests {
19451945 "Cannot add partition spec with non-sequential field ids to format version 1 table"
19461946 ) ) ;
19471947 }
1948+
1949+ #[ test]
1950+ fn test_expire_metadata_log ( ) {
1951+ let builder = builder_without_changes ( FormatVersion :: V2 ) ;
1952+ let metadata = builder
1953+ . set_properties ( HashMap :: from_iter ( vec ! [ (
1954+ PROPERTY_METADATA_PREVIOUS_VERSIONS_MAX . to_string( ) ,
1955+ "2" . to_string( ) ,
1956+ ) ] ) )
1957+ . unwrap ( )
1958+ . build ( )
1959+ . unwrap ( ) ;
1960+ assert_eq ! ( metadata. metadata. metadata_log. len( ) , 1 ) ;
1961+ assert_eq ! ( metadata. expired_metadata_logs. len( ) , 0 ) ;
1962+
1963+ let metadata = metadata
1964+ . metadata
1965+ . into_builder ( Some ( "path2" . to_string ( ) ) )
1966+ . set_properties ( HashMap :: from_iter ( vec ! [ (
1967+ "change_nr" . to_string( ) ,
1968+ "1" . to_string( ) ,
1969+ ) ] ) )
1970+ . unwrap ( )
1971+ . build ( )
1972+ . unwrap ( ) ;
1973+
1974+ assert_eq ! ( metadata. metadata. metadata_log. len( ) , 2 ) ;
1975+ assert_eq ! ( metadata. expired_metadata_logs. len( ) , 0 ) ;
1976+
1977+ let metadata = metadata
1978+ . metadata
1979+ . into_builder ( Some ( "path2" . to_string ( ) ) )
1980+ . set_properties ( HashMap :: from_iter ( vec ! [ (
1981+ "change_nr" . to_string( ) ,
1982+ "2" . to_string( ) ,
1983+ ) ] ) )
1984+ . unwrap ( )
1985+ . build ( )
1986+ . unwrap ( ) ;
1987+ assert_eq ! ( metadata. metadata. metadata_log. len( ) , 2 ) ;
1988+ assert_eq ! ( metadata. expired_metadata_logs. len( ) , 1 ) ;
1989+ }
19481990}
0 commit comments