@@ -155,14 +155,16 @@ fn parse_list_schema(typoid: Oid, typmod: i32, array_name: &str, field_id: &mut
155155
156156 * field_id += 1 ;
157157
158+ let element_name = "element" ;
159+
158160 let elem_field = if is_composite_type ( typoid) {
159161 let tupledesc = tuple_desc ( typoid, typmod) ;
160- parse_struct_schema ( tupledesc, array_name , field_id)
162+ parse_struct_schema ( tupledesc, element_name , field_id)
161163 } else if is_map_type ( typoid) {
162164 let base_elem_typoid = domain_array_base_elem_typoid ( typoid) ;
163- parse_map_schema ( base_elem_typoid, typmod, array_name , field_id)
165+ parse_map_schema ( base_elem_typoid, typmod, element_name , field_id)
164166 } else {
165- parse_primitive_schema ( typoid, typmod, array_name , field_id)
167+ parse_primitive_schema ( typoid, typmod, element_name , field_id)
166168 } ;
167169
168170 let nullable = true ;
@@ -292,17 +294,13 @@ fn parse_primitive_schema(
292294}
293295
294296fn adjust_map_entries_field ( field : FieldRef ) -> FieldRef {
295- let name = field. deref ( ) . name ( ) ;
296- let data_type = field. deref ( ) . data_type ( ) ;
297- let metadata = field. deref ( ) . metadata ( ) . clone ( ) ;
298-
299297 let not_nullable_key_field;
300298 let nullable_value_field;
301299
302- match data_type {
300+ match field . deref ( ) . data_type ( ) {
303301 arrow:: datatypes:: DataType :: Struct ( fields) => {
304302 let key_field = fields. find ( "key" ) . expect ( "expected key field" ) . 1 ;
305- let value_field = fields. find ( "val" ) . expect ( "expected val field" ) . 1 ;
303+ let value_field = fields. find ( "val" ) . expect ( "expected value field" ) . 1 ;
306304
307305 let key_nullable = false ;
308306
@@ -323,14 +321,18 @@ fn adjust_map_entries_field(field: FieldRef) -> FieldRef {
323321 . with_metadata ( value_field. metadata ( ) . clone ( ) ) ;
324322 }
325323 _ => {
326- panic ! ( "expected struct data type for map entries " )
324+ panic ! ( "expected struct data type for map key_value field " )
327325 }
328326 } ;
329327
330328 let entries_nullable = false ;
331329
330+ let entries_name = "key_value" ;
331+
332+ let metadata = field. deref ( ) . metadata ( ) . clone ( ) ;
333+
332334 let entries_field = Field :: new (
333- name ,
335+ entries_name ,
334336 arrow:: datatypes:: DataType :: Struct ( Fields :: from ( vec ! [
335337 not_nullable_key_field,
336338 nullable_value_field,
@@ -392,7 +394,7 @@ pub(crate) fn ensure_arrow_schema_match_tupledesc_schema(
392394 pgrx:: PgLogLevel :: ERROR ,
393395 PgSqlErrorCode :: ERRCODE_CANNOT_COERCE ,
394396 type_mismatch_message,
395- "Try COPY FROM '..' WITH (cast_mode = 'relaxed') to allow lossy casts with runtime checks."
397+ "Try COPY FROM '..' WITH (cast_mode 'relaxed') to allow lossy casts with runtime checks."
396398 ) ,
397399 CoercionError :: NoCoercionPath => ereport ! (
398400 pgrx:: PgLogLevel :: ERROR ,
0 commit comments