@@ -48,14 +48,18 @@ namespace iceberg::parquet {
4848
4949namespace {
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+
5158Status 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
6165Status 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