Skip to content

Commit ced1479

Browse files
committed
address
1 parent b408fac commit ced1479

File tree

3 files changed

+135
-109
lines changed

3 files changed

+135
-109
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ SELECT * FROM parquet.schema('/tmp/product_example.parquet') LIMIT 10;
110110
/tmp/product_example.parquet | name | BYTE_ARRAY | | OPTIONAL | | UTF8 | | | 3 | STRING
111111
/tmp/product_example.parquet | items | | | OPTIONAL | 1 | LIST | | | 4 | LIST
112112
/tmp/product_example.parquet | list | | | REPEATED | 1 | | | | |
113-
/tmp/product_example.parquet | items | | | OPTIONAL | 3 | | | | 5 |
113+
/tmp/product_example.parquet | element | | | OPTIONAL | 3 | | | | 5 |
114114
/tmp/product_example.parquet | id | INT32 | | OPTIONAL | | | | | 6 |
115115
/tmp/product_example.parquet | name | BYTE_ARRAY | | OPTIONAL | | UTF8 | | | 7 | STRING
116116
(10 rows)

src/arrow_parquet/schema_parser.rs

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -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

294296
fn 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

Comments
 (0)