| 415 | // Node construction from Parquet metadata |
| 416 | |
| 417 | std::unique_ptr<Node> GroupNode::FromParquet(const void* opaque_element, |
| 418 | NodeVector fields) { |
| 419 | const format::SchemaElement* element = |
| 420 | static_cast<const format::SchemaElement*>(opaque_element); |
| 421 | |
| 422 | int field_id = -1; |
| 423 | if (element->__isset.field_id) { |
| 424 | field_id = element->field_id; |
| 425 | } |
| 426 | |
| 427 | std::unique_ptr<GroupNode> group_node; |
| 428 | if (element->__isset.logicalType) { |
| 429 | // updated writer with logical type present |
| 430 | group_node = std::unique_ptr<GroupNode>( |
| 431 | new GroupNode(element->name, LoadEnumSafe(&element->repetition_type), fields, |
| 432 | LogicalType::FromThrift(element->logicalType), field_id)); |
| 433 | } else { |
| 434 | group_node = std::unique_ptr<GroupNode>(new GroupNode( |
| 435 | element->name, LoadEnumSafe(&element->repetition_type), fields, |
| 436 | (element->__isset.converted_type ? LoadEnumSafe(&element->converted_type) |
| 437 | : ConvertedType::NONE), |
| 438 | field_id)); |
| 439 | } |
| 440 | |
| 441 | return std::unique_ptr<Node>(group_node.release()); |
| 442 | } |
| 443 | |
| 444 | std::unique_ptr<Node> PrimitiveNode::FromParquet(const void* opaque_element) { |
| 445 | const format::SchemaElement* element = |
nothing calls this directly
no test coverage detected