| 657 | namespace { |
| 658 | |
| 659 | internal::LevelInfo ComputeLevelInfo(const ColumnDescriptor* descr) { |
| 660 | internal::LevelInfo level_info; |
| 661 | level_info.def_level = descr->max_definition_level(); |
| 662 | level_info.rep_level = descr->max_repetition_level(); |
| 663 | |
| 664 | int16_t min_spaced_def_level = descr->max_definition_level(); |
| 665 | const ::parquet::schema::Node* node = descr->schema_node().get(); |
| 666 | while (node != nullptr && !node->is_repeated()) { |
| 667 | if (node->is_optional()) { |
| 668 | min_spaced_def_level--; |
| 669 | } |
| 670 | node = node->parent(); |
| 671 | } |
| 672 | level_info.repeated_ancestor_def_level = min_spaced_def_level; |
| 673 | return level_info; |
| 674 | } |
| 675 | |
| 676 | } // namespace |
| 677 | |