Helper function for generating table metadata
| 34 | |
| 35 | // Helper function for generating table metadata |
| 36 | std::unique_ptr<parquet::FileMetaData> GenerateTableMetaData( |
| 37 | const parquet::SchemaDescriptor& schema, |
| 38 | const std::shared_ptr<WriterProperties>& props, const int64_t& nrows, |
| 39 | EncodedStatistics stats_int, EncodedStatistics stats_float) { |
| 40 | auto f_builder = FileMetaDataBuilder::Make(&schema, props); |
| 41 | auto rg1_builder = f_builder->AppendRowGroup(); |
| 42 | // Write the metadata |
| 43 | // rowgroup1 metadata |
| 44 | auto col1_builder = rg1_builder->NextColumnChunk(); |
| 45 | auto col2_builder = rg1_builder->NextColumnChunk(); |
| 46 | // column metadata |
| 47 | std::map<Encoding::type, int32_t> dict_encoding_stats({{Encoding::RLE_DICTIONARY, 1}}); |
| 48 | std::map<Encoding::type, int32_t> data_encoding_stats( |
| 49 | {{Encoding::PLAIN, 1}, {Encoding::RLE, 1}}); |
| 50 | stats_int.set_is_signed(true); |
| 51 | col1_builder->SetStatistics(stats_int); |
| 52 | stats_float.set_is_signed(true); |
| 53 | col2_builder->SetStatistics(stats_float); |
| 54 | col1_builder->Finish(nrows / 2, 4, 0, 10, 512, 600, true, false, dict_encoding_stats, |
| 55 | data_encoding_stats); |
| 56 | col2_builder->Finish(nrows / 2, 24, 0, 30, 512, 600, true, false, dict_encoding_stats, |
| 57 | data_encoding_stats); |
| 58 | |
| 59 | rg1_builder->set_num_rows(nrows / 2); |
| 60 | rg1_builder->Finish(1024); |
| 61 | |
| 62 | // rowgroup2 metadata |
| 63 | auto rg2_builder = f_builder->AppendRowGroup(); |
| 64 | col1_builder = rg2_builder->NextColumnChunk(); |
| 65 | col2_builder = rg2_builder->NextColumnChunk(); |
| 66 | // column metadata |
| 67 | col1_builder->SetStatistics(stats_int); |
| 68 | col2_builder->SetStatistics(stats_float); |
| 69 | col1_builder->Finish(nrows / 2, /*dictionary_page_offset=*/0, 0, 10, 512, 600, |
| 70 | /*has_dictionary=*/false, false, dict_encoding_stats, |
| 71 | data_encoding_stats); |
| 72 | col2_builder->Finish(nrows / 2, 16, 0, 26, 512, 600, true, false, dict_encoding_stats, |
| 73 | data_encoding_stats); |
| 74 | |
| 75 | rg2_builder->set_num_rows(nrows / 2); |
| 76 | rg2_builder->Finish(1024); |
| 77 | |
| 78 | // Return the metadata accessor |
| 79 | return f_builder->Finish(); |
| 80 | } |
| 81 | |
| 82 | void AssertEncodings(const ColumnChunkMetaData& data, |
| 83 | const std::set<parquet::Encoding::type>& expected) { |
no test coverage detected