2929#include " arrow/io/memory.h"
3030#include " arrow/io/test-common.h"
3131#include " arrow/ipc/api.h"
32+ #include " arrow/ipc/metadata-internal.h"
3233#include " arrow/ipc/test-common.h"
3334#include " arrow/ipc/util.h"
3435#include " arrow/memory_pool.h"
@@ -47,21 +48,14 @@ class TestSchemaMetadata : public ::testing::Test {
4748 public:
4849 void SetUp () {}
4950
50- void CheckRoundtrip (const Schema& schema, DictionaryMemo* memo ) {
51+ void CheckRoundtrip (const Schema& schema) {
5152 std::shared_ptr<Buffer> buffer;
52- ASSERT_OK (WriteSchemaMessage (schema, memo , &buffer));
53+ ASSERT_OK (SerializeSchema (schema, default_memory_pool () , &buffer));
5354
54- std::unique_ptr<Message> message;
55- ASSERT_OK (Message::Open (buffer, nullptr , &message));
56-
57- ASSERT_EQ (Message::SCHEMA, message->type ());
58-
59- DictionaryMemo empty_memo;
60-
61- std::shared_ptr<Schema> schema2;
62- ASSERT_OK (GetSchema (message->header (), empty_memo, &schema2));
63-
64- AssertSchemaEqual (schema, *schema2);
55+ std::shared_ptr<Schema> result;
56+ io::BufferReader reader (buffer);
57+ ASSERT_OK (ReadSchema (&reader, &result));
58+ AssertSchemaEqual (schema, *result);
6559 }
6660};
6761
@@ -107,9 +101,7 @@ TEST_F(TestSchemaMetadata, PrimitiveFields) {
107101 auto f10 = field (" f10" , std::make_shared<BooleanType>());
108102
109103 Schema schema ({f0, f1, f2, f3, f4, f5, f6, f7, f8 , f9, f10});
110- DictionaryMemo memo;
111-
112- CheckRoundtrip (schema, &memo);
104+ CheckRoundtrip (schema);
113105}
114106
115107TEST_F (TestSchemaMetadata, NestedFields) {
@@ -121,9 +113,7 @@ TEST_F(TestSchemaMetadata, NestedFields) {
121113 auto f1 = field (" f1" , type2);
122114
123115 Schema schema ({f0, f1});
124- DictionaryMemo memo;
125-
126- CheckRoundtrip (schema, &memo);
116+ CheckRoundtrip (schema);
127117}
128118
129119#define BATCH_CASES () \
@@ -137,13 +127,21 @@ static int g_file_number = 0;
137127
138128class IpcTestFixture : public io ::MemoryMapFixture {
139129 public:
130+ Status DoSchemaRoundTrip (const Schema& schema, std::shared_ptr<Schema>* result) {
131+ std::shared_ptr<Buffer> serialized_schema;
132+ RETURN_NOT_OK (SerializeSchema (schema, pool_, &serialized_schema));
133+
134+ io::BufferReader buf_reader (serialized_schema);
135+ return ReadSchema (&buf_reader, result);
136+ }
137+
140138 Status DoStandardRoundTrip (const RecordBatch& batch,
141139 std::shared_ptr<RecordBatch>* batch_result) {
142140 std::shared_ptr<Buffer> serialized_batch;
143141 RETURN_NOT_OK (SerializeRecordBatch (batch, pool_, &serialized_batch));
144142
145143 io::BufferReader buf_reader (serialized_batch);
146- return ReadRecordBatch (batch.schema (), 0 , &buf_reader, batch_result);
144+ return ReadRecordBatch (batch.schema (), &buf_reader, batch_result);
147145 }
148146
149147 Status DoLargeRoundTrip (const RecordBatch& batch, bool zero_data,
@@ -153,7 +151,7 @@ class IpcTestFixture : public io::MemoryMapFixture {
153151 }
154152 RETURN_NOT_OK (mmap_->Seek (0 ));
155153
156- std::shared_ptr<RecordBatchFileWriter > file_writer;
154+ std::shared_ptr<RecordBatchWriter > file_writer;
157155 RETURN_NOT_OK (RecordBatchFileWriter::Open (mmap_.get (), batch.schema (), &file_writer));
158156 RETURN_NOT_OK (file_writer->WriteRecordBatch (batch, true ));
159157 RETURN_NOT_OK (file_writer->Close ());
@@ -182,6 +180,10 @@ class IpcTestFixture : public io::MemoryMapFixture {
182180 ss << " test-write-row-batch-" << g_file_number++;
183181 ASSERT_OK (io::MemoryMapFixture::InitMemoryMap (buffer_size, ss.str (), &mmap_));
184182
183+ std::shared_ptr<Schema> schema_result;
184+ ASSERT_OK (DoSchemaRoundTrip (*batch.schema (), &schema_result));
185+ ASSERT_TRUE (batch.schema ()->Equals (*schema_result));
186+
185187 std::shared_ptr<RecordBatch> result;
186188 ASSERT_OK (DoStandardRoundTrip (batch, &result));
187189 CheckReadResult (*result, batch);
@@ -498,7 +500,7 @@ class TestFileFormat : public ::testing::TestWithParam<MakeRecordBatch*> {
498500
499501 Status RoundTripHelper (const BatchVector& in_batches, BatchVector* out_batches) {
500502 // Write the file
501- std::shared_ptr<RecordBatchFileWriter > writer;
503+ std::shared_ptr<RecordBatchWriter > writer;
502504 RETURN_NOT_OK (
503505 RecordBatchFileWriter::Open (sink_.get (), in_batches[0 ]->schema (), &writer));
504506
@@ -565,7 +567,7 @@ class TestStreamFormat : public ::testing::TestWithParam<MakeRecordBatch*> {
565567 Status RoundTripHelper (const RecordBatch& batch,
566568 std::vector<std::shared_ptr<RecordBatch>>* out_batches) {
567569 // Write the file
568- std::shared_ptr<RecordBatchStreamWriter > writer;
570+ std::shared_ptr<RecordBatchWriter > writer;
569571 RETURN_NOT_OK (RecordBatchStreamWriter::Open (sink_.get (), batch.schema (), &writer));
570572 int num_batches = 5 ;
571573 for (int i = 0 ; i < num_batches; ++i) {
@@ -575,10 +577,10 @@ class TestStreamFormat : public ::testing::TestWithParam<MakeRecordBatch*> {
575577 RETURN_NOT_OK (sink_->Close ());
576578
577579 // Open the file
578- auto buf_reader = std::make_shared< io::BufferReader> (buffer_);
580+ io::BufferReader buf_reader (buffer_);
579581
580- std::shared_ptr<RecordBatchStreamReader > reader;
581- RETURN_NOT_OK (RecordBatchStreamReader::Open (buf_reader, &reader));
582+ std::shared_ptr<RecordBatchReader > reader;
583+ RETURN_NOT_OK (RecordBatchStreamReader::Open (& buf_reader, &reader));
582584
583585 std::shared_ptr<RecordBatch> chunk;
584586 while (true ) {
0 commit comments