@@ -242,7 +242,7 @@ impl Decoder {
242242    )  -> Result < Option < usize > ,  ArrowError >  { 
243243        // Need enough bytes to get fingerprint (next N bytes) 
244244        let  Some ( fingerprint_bytes)  = buf. get ( ..N )  else  { 
245-             return  Ok ( None ) ;  // Get more  bytes 
245+             return  Ok ( None ) ;  // Insufficient  bytes 
246246        } ; 
247247        // SAFETY: length checked above. 
248248        let  new_fingerprint = fingerprint_from ( fingerprint_bytes. try_into ( ) . unwrap ( ) ) ; 
@@ -279,18 +279,22 @@ impl Decoder {
279279                "Unknown fingerprint: {new_fingerprint:?}" 
280280            ) ) ) ; 
281281        } ; 
282-         let  Some ( ref  reader_schema)  = self . reader_schema  else  { 
283-             return  Err ( ArrowError :: ParseError ( 
284-                 "Reader schema unavailable for resolution" . into ( ) , 
285-             ) ) ; 
282+         // If a reader schema was supplied, perform writer-to-reader resolution. 
283+         // Otherwise, fall back to using the writer schema verbatim. 
284+         let  avro_field = if  let  Some ( reader_schema)  = & self . reader_schema  { 
285+             AvroField :: resolve_from_writer_and_reader ( 
286+                 writer_schema, 
287+                 reader_schema, 
288+                 self . utf8_view , 
289+                 self . strict_mode , 
290+             ) ?
291+         }  else  { 
292+             AvroFieldBuilder :: new ( writer_schema) 
293+                 . with_utf8view ( self . utf8_view ) 
294+                 . with_strict_mode ( self . strict_mode ) 
295+                 . build ( ) ?
286296        } ; 
287-         let  resolved = AvroField :: resolve_from_writer_and_reader ( 
288-             writer_schema, 
289-             reader_schema, 
290-             self . utf8_view , 
291-             self . strict_mode , 
292-         ) ?; 
293-         RecordDecoder :: try_new_with_options ( resolved. data_type ( ) ,  self . utf8_view ) 
297+         RecordDecoder :: try_new_with_options ( avro_field. data_type ( ) ,  self . utf8_view ) 
294298    } 
295299
296300    /// Produce a `RecordBatch` if at least one row is fully decoded, returning 
0 commit comments