@@ -193,7 +193,14 @@ impl Serialize for TableOptions {
193193 where
194194 S : Serializer ,
195195 {
196- let mut serializer = serializer. serialize_struct ( "TableOptions" , 5 ) ?;
196+ let mut serializer = serializer. serialize_struct (
197+ "TableOptions" ,
198+ 4 + if self . track_previous_values . is_some ( ) {
199+ 2
200+ } else {
201+ 0
202+ } ,
203+ ) ?;
197204
198205 serializer. serialize_field ( "local_only" , & self . local_only ) ?;
199206 serializer. serialize_field ( "insert_only" , & self . insert_only ) ?;
@@ -212,7 +219,8 @@ impl Serialize for TableOptions {
212219 & include_old. only_when_changed ,
213220 ) ?;
214221 } else {
215- serializer. serialize_field ( "include_old_only_when_changed" , & false ) ?;
222+ serializer. skip_field ( "include_old" ) ?;
223+ serializer. skip_field ( "include_old_only_when_changed" ) ?;
216224 }
217225
218226 serializer. end ( )
@@ -455,6 +463,7 @@ impl TrackPreviousValues {
455463#[ cfg( test) ]
456464mod test {
457465 use crate :: schema:: { Column , RawTable , RawTableSchema , Table , TrackPreviousValues } ;
466+ use serde_json:: json;
458467
459468 #[ test]
460469 fn handles_options_track_metadata ( ) {
@@ -513,18 +522,19 @@ mod test {
513522 #[ test]
514523 fn handles_options_track_previous_column_filter ( ) {
515524 let value = serde_json:: to_value ( Table :: create ( "foo" , vec ! [ ] , |tbl| {
516- tbl. options . track_previous_values = Some ( TrackPreviousValues :: all ( ) )
525+ tbl. options . track_previous_values = Some ( TrackPreviousValues {
526+ column_filter : Some ( vec ! [ "a" . into( ) ] ) ,
527+ only_when_changed : true ,
528+ } )
517529 } ) )
518530 . unwrap ( ) ;
519531 let value = value. as_object ( ) . unwrap ( ) ;
520532
521- assert ! ( value. get( "include_old" ) . unwrap( ) . as_bool( ) . unwrap( ) ) ;
522- assert ! (
523- !value
524- . get( "include_old_only_when_changed" )
525- . unwrap( )
526- . as_bool( )
527- . unwrap( ) ,
533+ let include_old = value. get ( "include_old" ) . unwrap ( ) ;
534+ assert_eq ! ( * include_old, json!( [ "a" ] ) ) ;
535+ assert_eq ! (
536+ * value. get( "include_old_only_when_changed" ) . unwrap( ) ,
537+ json!( true )
528538 ) ;
529539 }
530540
0 commit comments