| 107 | } |
| 108 | |
| 109 | std::shared_ptr<TypedColumnWriter<TestType>> BuildWriter( |
| 110 | int64_t output_size = SMALL_SIZE, |
| 111 | const ColumnProperties& column_properties = ColumnProperties(), |
| 112 | const ParquetVersion::type version = ParquetVersion::PARQUET_1_0, |
| 113 | const ParquetDataPageVersion data_page_version = ParquetDataPageVersion::V1, |
| 114 | bool enable_checksum = false, int64_t page_size = kDefaultDataPageSize, |
| 115 | int64_t max_rows_per_page = kDefaultMaxRowsPerPage) { |
| 116 | sink_ = CreateOutputStream(); |
| 117 | WriterProperties::Builder wp_builder; |
| 118 | wp_builder.version(version)->data_page_version(data_page_version); |
| 119 | if (column_properties.encoding() == Encoding::PLAIN_DICTIONARY || |
| 120 | column_properties.encoding() == Encoding::RLE_DICTIONARY) { |
| 121 | wp_builder.enable_dictionary(); |
| 122 | wp_builder.dictionary_pagesize_limit(DICTIONARY_PAGE_SIZE); |
| 123 | } else { |
| 124 | wp_builder.disable_dictionary(); |
| 125 | wp_builder.encoding(column_properties.encoding()); |
| 126 | } |
| 127 | if (enable_checksum) { |
| 128 | wp_builder.enable_page_checksum(); |
| 129 | } |
| 130 | wp_builder.max_statistics_size(column_properties.max_statistics_size()); |
| 131 | wp_builder.data_pagesize(page_size); |
| 132 | wp_builder.max_rows_per_page(max_rows_per_page); |
| 133 | writer_properties_ = wp_builder.build(); |
| 134 | |
| 135 | metadata_ = ColumnChunkMetaDataBuilder::Make(writer_properties_, this->descr_); |
| 136 | std::unique_ptr<PageWriter> pager = PageWriter::Open( |
| 137 | sink_, column_properties.compression(), metadata_.get(), |
| 138 | /* row_group_ordinal */ -1, /* column_chunk_ordinal*/ -1, |
| 139 | ::arrow::default_memory_pool(), /* buffered_row_group */ false, |
| 140 | /* header_encryptor */ NULLPTR, /* data_encryptor */ NULLPTR, enable_checksum); |
| 141 | std::shared_ptr<ColumnWriter> writer = |
| 142 | ColumnWriter::Make(metadata_.get(), std::move(pager), writer_properties_.get()); |
| 143 | return std::dynamic_pointer_cast<TypedColumnWriter<TestType>>(writer); |
| 144 | } |
| 145 | |
| 146 | void ReadColumn(Compression::type compression = Compression::UNCOMPRESSED, |
| 147 | bool page_checksum_verify = false) { |
no test coverage detected