| 223 | } |
| 224 | |
| 225 | void AssertTableWriteReadEqual(const std::vector<std::shared_ptr<Table>>& input_tables, |
| 226 | const std::shared_ptr<Table>& expected_output_table, |
| 227 | const int64_t max_size = kDefaultSmallMemStreamSize, |
| 228 | std::vector<int>* opt_selected_read_indices = nullptr) { |
| 229 | EXPECT_OK_AND_ASSIGN(auto buffer_output_stream, |
| 230 | io::BufferOutputStream::Create(max_size)); |
| 231 | auto write_options = adapters::orc::WriteOptions(); |
| 232 | #ifdef ARROW_WITH_SNAPPY |
| 233 | write_options.compression = Compression::SNAPPY; |
| 234 | #else |
| 235 | write_options.compression = Compression::UNCOMPRESSED; |
| 236 | #endif |
| 237 | write_options.file_version = adapters::orc::FileVersion(0, 11); |
| 238 | write_options.compression_block_size = 64 * 1024; |
| 239 | write_options.row_index_stride = 5000; |
| 240 | EXPECT_OK_AND_ASSIGN(auto writer, adapters::orc::ORCFileWriter::Open( |
| 241 | buffer_output_stream.get(), write_options)); |
| 242 | for (const auto& input_table : input_tables) { |
| 243 | ARROW_EXPECT_OK(writer->Write(*input_table)); |
| 244 | } |
| 245 | ARROW_EXPECT_OK(writer->Close()); |
| 246 | EXPECT_OK_AND_ASSIGN(auto buffer, buffer_output_stream->Finish()); |
| 247 | std::shared_ptr<io::RandomAccessFile> in_stream(new io::BufferReader(buffer)); |
| 248 | EXPECT_OK_AND_ASSIGN( |
| 249 | auto reader, adapters::orc::ORCFileReader::Open(in_stream, default_memory_pool())); |
| 250 | ASSERT_EQ(reader->GetFileVersion(), write_options.file_version); |
| 251 | ASSERT_EQ(reader->GetCompression(), write_options.compression); |
| 252 | ASSERT_EQ(reader->GetCompressionSize(), write_options.compression_block_size); |
| 253 | ASSERT_EQ(reader->GetRowIndexStride(), write_options.row_index_stride); |
| 254 | EXPECT_OK_AND_ASSIGN(auto actual_output_table, |
| 255 | opt_selected_read_indices == nullptr |
| 256 | ? reader->Read() |
| 257 | : reader->Read(*opt_selected_read_indices)); |
| 258 | ASSERT_OK(actual_output_table->ValidateFull()); |
| 259 | AssertTablesEqual(*expected_output_table, *actual_output_table, false, false); |
| 260 | } |
| 261 | |
| 262 | void AssertBatchWriteReadEqual( |
| 263 | const std::vector<std::shared_ptr<RecordBatch>>& input_batches, |
no test coverage detected