If the data page includes repetition and definition levels, we initialize the level decoders and return the number of encoded level bytes. The return value helps determine the number of bytes in the encoded data.
| 761 | // initialize the level decoders and return the number of encoded level bytes. |
| 762 | // The return value helps determine the number of bytes in the encoded data. |
| 763 | int64_t InitializeLevelDecoders(const DataPage& page, |
| 764 | Encoding::type repetition_level_encoding, |
| 765 | Encoding::type definition_level_encoding) { |
| 766 | // Read a data page. |
| 767 | num_buffered_values_ = page.num_values(); |
| 768 | |
| 769 | // Have not decoded any values from the data page yet |
| 770 | num_decoded_values_ = 0; |
| 771 | |
| 772 | const uint8_t* buffer = page.data(); |
| 773 | int32_t levels_byte_size = 0; |
| 774 | int32_t max_size = page.size(); |
| 775 | |
| 776 | // Data page Layout: Repetition Levels - Definition Levels - encoded values. |
| 777 | // Levels are encoded as rle or bit-packed. |
| 778 | // Init repetition levels |
| 779 | if (max_rep_level_ > 0) { |
| 780 | int32_t rep_levels_bytes = repetition_level_decoder_.SetData( |
| 781 | repetition_level_encoding, max_rep_level_, |
| 782 | static_cast<int>(num_buffered_values_), buffer, max_size); |
| 783 | buffer += rep_levels_bytes; |
| 784 | levels_byte_size += rep_levels_bytes; |
| 785 | max_size -= rep_levels_bytes; |
| 786 | } |
| 787 | // TODO figure a way to set max_def_level_ to 0 |
| 788 | // if the initial value is invalid |
| 789 | |
| 790 | // Init definition levels |
| 791 | if (max_def_level_ > 0) { |
| 792 | int32_t def_levels_bytes = definition_level_decoder_.SetData( |
| 793 | definition_level_encoding, max_def_level_, |
| 794 | static_cast<int>(num_buffered_values_), buffer, max_size); |
| 795 | levels_byte_size += def_levels_bytes; |
| 796 | max_size -= def_levels_bytes; |
| 797 | } |
| 798 | |
| 799 | return levels_byte_size; |
| 800 | } |
| 801 | |
| 802 | int64_t InitializeLevelDecodersV2(const DataPageV2& page) { |
| 803 | // Read a data page. |
nothing calls this directly
no test coverage detected