| 360 | #endif |
| 361 | |
| 362 | TEST(TestBufferedRowGroupWriter, DisabledDictionary) { |
| 363 | // PARQUET-1706: |
| 364 | // Wrong dictionary_page_offset when writing only data pages via BufferedPageWriter |
| 365 | auto sink = CreateOutputStream(); |
| 366 | auto writer_props = parquet::WriterProperties::Builder().disable_dictionary()->build(); |
| 367 | schema::NodeVector fields; |
| 368 | fields.push_back( |
| 369 | PrimitiveNode::Make("col", parquet::Repetition::REQUIRED, parquet::Type::INT32)); |
| 370 | auto schema = std::static_pointer_cast<GroupNode>( |
| 371 | GroupNode::Make("schema", Repetition::REQUIRED, fields)); |
| 372 | auto file_writer = parquet::ParquetFileWriter::Open(sink, schema, writer_props); |
| 373 | auto rg_writer = file_writer->AppendBufferedRowGroup(); |
| 374 | auto col_writer = static_cast<Int32Writer*>(rg_writer->column(0)); |
| 375 | int value = 0; |
| 376 | col_writer->WriteBatch(1, nullptr, nullptr, &value); |
| 377 | rg_writer->Close(); |
| 378 | file_writer->Close(); |
| 379 | PARQUET_ASSIGN_OR_THROW(auto buffer, sink->Finish()); |
| 380 | |
| 381 | auto source = std::make_shared<::arrow::io::BufferReader>(buffer); |
| 382 | auto file_reader = ParquetFileReader::Open(source); |
| 383 | ASSERT_EQ(1, file_reader->metadata()->num_row_groups()); |
| 384 | auto rg_reader = file_reader->RowGroup(0); |
| 385 | ASSERT_EQ(1, rg_reader->metadata()->num_columns()); |
| 386 | ASSERT_EQ(1, rg_reader->metadata()->num_rows()); |
| 387 | ASSERT_FALSE(rg_reader->metadata()->ColumnChunk(0)->has_dictionary_page()); |
| 388 | } |
| 389 | |
| 390 | TEST(TestBufferedRowGroupWriter, MultiPageDisabledDictionary) { |
| 391 | constexpr int kValueCount = 10000; |
nothing calls this directly
no test coverage detected