@@ -173,21 +173,21 @@ impl JsonSerde for DataType {
173173 let length = node
174174 . get ( Self :: FIELD_NAME_LENGTH )
175175 . and_then ( |v| v. as_u64 ( ) )
176- . unwrap_or ( 1 ) as u32 ;
176+ . ok_or_else ( || JsonSerdeError ( format ! ( "Missing required field: {}" , Self :: FIELD_NAME_LENGTH ) ) ) ? as u32 ;
177177 DataTypes :: char ( length)
178- } ,
178+ }
179179 "STRING" => DataTypes :: string ( ) ,
180180 "DECIMAL" => {
181181 let precision = node
182182 . get ( Self :: FIELD_NAME_PRECISION )
183183 . and_then ( |v| v. as_u64 ( ) )
184- . unwrap_or ( 10 ) as u32 ;
184+ . ok_or_else ( || JsonSerdeError ( format ! ( "Missing required field: {}" , Self :: FIELD_NAME_PRECISION ) ) ) ? as u32 ;
185185 let scale = node
186186 . get ( Self :: FIELD_NAME_SCALE )
187187 . and_then ( |v| v. as_u64 ( ) )
188188 . unwrap_or ( 0 ) as u32 ;
189189 DataTypes :: decimal ( precision, scale)
190- } ,
190+ }
191191 "DATE" => DataTypes :: date ( ) ,
192192 "TIME_WITHOUT_TIME_ZONE" => {
193193 let precision = node
@@ -334,7 +334,7 @@ impl JsonSerde for Column {
334334 let name = node
335335 . get ( Self :: NAME )
336336 . and_then ( |v| v. as_str ( ) )
337- . unwrap_or_else ( || panic ! ( "{}" , format!( "Missing required field: {}" , Self :: NAME ) ) )
337+ . ok_or_else ( || JsonSerdeError ( format ! ( "Missing required field: {}" , Self :: NAME ) ) ) ?
338338 . to_string ( ) ;
339339
340340 let data_type_node = node. get ( Self :: DATA_TYPE ) . ok_or_else ( || {
@@ -438,7 +438,7 @@ impl TableDescriptor {
438438
439439 fn deserialize_properties ( node : & Value ) -> Result < HashMap < String , String > > {
440440 let obj = node
441- . as_object ( )
441+ . as_object ( )
442442 . ok_or_else ( || JsonSerdeError ( "Properties must be an object" . to_string ( ) ) ) ?;
443443
444444 let mut properties = HashMap :: with_capacity ( obj. len ( ) ) ;
@@ -605,7 +605,7 @@ mod tests {
605605 DataTypes :: boolean( ) ,
606606 DataTypes :: tinyint( ) ,
607607 DataTypes :: smallint( ) ,
608- DataTypes :: int( ) ,
608+ DataTypes :: int( ) . as_non_nullable ( ) ,
609609 DataTypes :: bigint( ) ,
610610 DataTypes :: float( ) ,
611611 DataTypes :: double( ) ,
@@ -621,8 +621,8 @@ mod tests {
621621 DataTypes :: array( DataTypes :: int( ) ) ,
622622 DataTypes :: map( DataTypes :: string( ) , DataTypes :: int( ) ) ,
623623 DataTypes :: row( vec![
624- crate :: metadata :: DataField :: new( "f1" . to_string( ) , DataTypes :: int( ) , None ) ,
625- crate :: metadata :: DataField :: new( "f2" . to_string( ) , DataTypes :: string( ) , Some ( "desc" . to_string( ) ) ) ,
624+ DataField :: new( "f1" . to_string( ) , DataTypes :: int( ) , None ) ,
625+ DataField :: new( "f2" . to_string( ) , DataTypes :: string( ) , Some ( "desc" . to_string( ) ) ) ,
626626 ] ) ,
627627 ] ;
628628
0 commit comments