Skip to content

Commit 1f9507a

Browse files
committed
fix length() and pass length() to reader_options
1 parent db7dca5 commit 1f9507a

File tree

2 files changed

+20
-10
lines changed

2 files changed

+20
-10
lines changed

src/iceberg/parquet/parquet_writer.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,12 +90,12 @@ class ParquetWriter::Impl {
9090
return {}; // Already closed
9191
}
9292

93+
ICEBERG_ARROW_RETURN_NOT_OK(writer_->Close());
9394
auto& metadata = writer_->metadata();
9495
split_offsets_.reserve(metadata->num_row_groups());
9596
for (int i = 0; i < metadata->num_row_groups(); ++i) {
9697
split_offsets_.push_back(metadata->RowGroup(i)->file_offset());
9798
}
98-
ICEBERG_ARROW_RETURN_NOT_OK(writer_->Close());
9999
writer_.reset();
100100

101101
ICEBERG_ARROW_ASSIGN_OR_RETURN(total_bytes_, output_stream_->Tell());

test/parquet_test.cc

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -48,14 +48,18 @@ namespace iceberg::parquet {
4848

4949
namespace {
5050

51+
Status WriteTableInner(Writer& writer, std::shared_ptr<::arrow::Array> data) {
52+
ArrowArray arr;
53+
ICEBERG_ARROW_RETURN_NOT_OK(::arrow::ExportArray(*data, &arr));
54+
ICEBERG_RETURN_UNEXPECTED(writer.Write(arr));
55+
return writer.Close();
56+
}
57+
5158
Status WriteTable(std::shared_ptr<::arrow::Array> data,
5259
const WriterOptions& writer_options) {
5360
ICEBERG_ASSIGN_OR_RAISE(
5461
auto writer, WriterFactoryRegistry::Open(FileFormatType::kParquet, writer_options));
55-
ArrowArray arr;
56-
ICEBERG_ARROW_RETURN_NOT_OK(::arrow::ExportArray(*data, &arr));
57-
ICEBERG_RETURN_UNEXPECTED(writer->Write(arr));
58-
return writer->Close();
62+
return WriteTableInner(*writer, data);
5963
}
6064

6165
Status ReadTable(std::optional<std::shared_ptr<::arrow::Array>>* out,
@@ -82,13 +86,19 @@ void DoRoundtrip(std::shared_ptr<::arrow::Array> data, std::shared_ptr<Schema> s
8286
std::shared_ptr<FileIO> file_io = arrow::ArrowFileSystemFileIO::MakeMockFileIO();
8387
const std::string basePath = "base.parquet";
8488

85-
ASSERT_THAT(WriteTable(data, {.path = basePath, .schema = schema, .io = file_io}),
86-
IsOk());
89+
auto writer_data = WriterFactoryRegistry::Open(
90+
FileFormatType::kParquet, {.path = basePath, .schema = schema, .io = file_io});
91+
ASSERT_THAT(writer_data, IsOk())
92+
<< "Failed to create writer: " << writer_data.error().message;
93+
auto writer = std::move(writer_data.value());
94+
ASSERT_THAT(WriteTableInner(*writer, data), IsOk());
8795

8896
std::optional<std::shared_ptr<::arrow::Array>> out_array;
89-
ASSERT_THAT(
90-
ReadTable(&out_array, {.path = basePath, .io = file_io, .projection = schema}),
91-
IsOk());
97+
ASSERT_THAT(ReadTable(&out_array, {.path = basePath,
98+
.length = writer->length(),
99+
.io = file_io,
100+
.projection = schema}),
101+
IsOk());
92102

93103
ASSERT_TRUE(out_array.has_value()) << "Reader.Next() returned no data";
94104
*out = std::move(out_array.value());

0 commit comments

Comments
 (0)