@@ -115,7 +115,6 @@ class ColumnChunkMetaData::ColumnChunkMetaDataImpl {
115115 }
116116 possible_stats_ = nullptr ;
117117 }
118- ~ColumnChunkMetaDataImpl () {}
119118
120119 // column chunk
121120 inline int64_t file_offset () const { return column_->file_offset ; }
@@ -197,13 +196,13 @@ class ColumnChunkMetaData::ColumnChunkMetaDataImpl {
197196};
198197
199198std::unique_ptr<ColumnChunkMetaData> ColumnChunkMetaData::Make (
200- const uint8_t * metadata, const ColumnDescriptor* descr,
199+ const void * metadata, const ColumnDescriptor* descr,
201200 const ApplicationVersion* writer_version) {
202201 return std::unique_ptr<ColumnChunkMetaData>(
203202 new ColumnChunkMetaData (metadata, descr, writer_version));
204203}
205204
206- ColumnChunkMetaData::ColumnChunkMetaData (const uint8_t * metadata,
205+ ColumnChunkMetaData::ColumnChunkMetaData (const void * metadata,
207206 const ColumnDescriptor* descr,
208207 const ApplicationVersion* writer_version)
209208 : impl_{std::unique_ptr<ColumnChunkMetaDataImpl>(new ColumnChunkMetaDataImpl (
@@ -272,7 +271,6 @@ class RowGroupMetaData::RowGroupMetaDataImpl {
272271 const SchemaDescriptor* schema,
273272 const ApplicationVersion* writer_version)
274273 : row_group_(row_group), schema_(schema), writer_version_(writer_version) {}
275- ~RowGroupMetaDataImpl () {}
276274
277275 inline int num_columns () const { return static_cast <int >(row_group_->columns .size ()); }
278276
@@ -289,9 +287,8 @@ class RowGroupMetaData::RowGroupMetaDataImpl {
289287 << " columns, requested metadata for column: " << i;
290288 throw ParquetException (ss.str ());
291289 }
292- return ColumnChunkMetaData::Make (
293- reinterpret_cast <const uint8_t *>(&row_group_->columns [i]), schema_->Column (i),
294- writer_version_);
290+ return ColumnChunkMetaData::Make (&row_group_->columns [i], schema_->Column (i),
291+ writer_version_);
295292 }
296293
297294 private:
@@ -301,14 +298,13 @@ class RowGroupMetaData::RowGroupMetaDataImpl {
301298};
302299
303300std::unique_ptr<RowGroupMetaData> RowGroupMetaData::Make (
304- const uint8_t * metadata, const SchemaDescriptor* schema,
301+ const void * metadata, const SchemaDescriptor* schema,
305302 const ApplicationVersion* writer_version) {
306303 return std::unique_ptr<RowGroupMetaData>(
307304 new RowGroupMetaData (metadata, schema, writer_version));
308305}
309306
310- RowGroupMetaData::RowGroupMetaData (const uint8_t * metadata,
311- const SchemaDescriptor* schema,
307+ RowGroupMetaData::RowGroupMetaData (const void * metadata, const SchemaDescriptor* schema,
312308 const ApplicationVersion* writer_version)
313309 : impl_{std::unique_ptr<RowGroupMetaDataImpl>(new RowGroupMetaDataImpl (
314310 reinterpret_cast <const format::RowGroup*>(metadata), schema, writer_version))} {
@@ -332,10 +328,11 @@ class FileMetaData::FileMetaDataImpl {
332328 public:
333329 FileMetaDataImpl () : metadata_len_(0 ) {}
334330
335- explicit FileMetaDataImpl (const uint8_t * metadata, uint32_t * metadata_len)
331+ explicit FileMetaDataImpl (const void * metadata, uint32_t * metadata_len)
336332 : metadata_len_(0 ) {
337333 metadata_.reset (new format::FileMetaData);
338- DeserializeThriftMsg (metadata, metadata_len, metadata_.get ());
334+ DeserializeThriftMsg (reinterpret_cast <const uint8_t *>(metadata), metadata_len,
335+ metadata_.get ());
339336 metadata_len_ = *metadata_len;
340337
341338 if (metadata_->__isset .created_by ) {
@@ -348,7 +345,6 @@ class FileMetaData::FileMetaDataImpl {
348345 InitColumnOrders ();
349346 InitKeyValueMetadata ();
350347 }
351- ~FileMetaDataImpl () {}
352348
353349 inline uint32_t size () const { return metadata_len_; }
354350 inline int num_columns () const { return schema_.num_columns (); }
@@ -375,9 +371,7 @@ class FileMetaData::FileMetaDataImpl {
375371 << " row groups, requested metadata for row group: " << i;
376372 throw ParquetException (ss.str ());
377373 }
378- return RowGroupMetaData::Make (
379- reinterpret_cast <const uint8_t *>(&metadata_->row_groups [i]), &schema_,
380- &writer_version_);
374+ return RowGroupMetaData::Make (&metadata_->row_groups [i], &schema_, &writer_version_);
381375 }
382376
383377 const SchemaDescriptor* schema () const { return &schema_; }
@@ -429,13 +423,13 @@ class FileMetaData::FileMetaDataImpl {
429423 std::shared_ptr<const KeyValueMetadata> key_value_metadata_;
430424};
431425
432- std::shared_ptr<FileMetaData> FileMetaData::Make (const uint8_t * metadata,
426+ std::shared_ptr<FileMetaData> FileMetaData::Make (const void * metadata,
433427 uint32_t * metadata_len) {
434428 // This FileMetaData ctor is private, not compatible with std::make_shared
435429 return std::shared_ptr<FileMetaData>(new FileMetaData (metadata, metadata_len));
436430}
437431
438- FileMetaData::FileMetaData (const uint8_t * metadata, uint32_t * metadata_len)
432+ FileMetaData::FileMetaData (const void * metadata, uint32_t * metadata_len)
439433 : impl_{std::unique_ptr<FileMetaDataImpl>(
440434 new FileMetaDataImpl (metadata, metadata_len))} {}
441435
@@ -606,11 +600,7 @@ class ColumnChunkMetaDataBuilder::ColumnChunkMetaDataBuilderImpl {
606600 Init (column_chunk);
607601 }
608602
609- ~ColumnChunkMetaDataBuilderImpl () {}
610-
611- const uint8_t * contents () const {
612- return reinterpret_cast <const uint8_t *>(column_chunk_);
613- }
603+ const void * contents () const { return column_chunk_; }
614604
615605 // column chunk
616606 void set_file_path (const std::string& val) { column_chunk_->__set_file_path (val); }
@@ -699,7 +689,7 @@ class ColumnChunkMetaDataBuilder::ColumnChunkMetaDataBuilderImpl {
699689
700690std::unique_ptr<ColumnChunkMetaDataBuilder> ColumnChunkMetaDataBuilder::Make (
701691 const std::shared_ptr<WriterProperties>& props, const ColumnDescriptor* column,
702- uint8_t * contents) {
692+ void * contents) {
703693 return std::unique_ptr<ColumnChunkMetaDataBuilder>(
704694 new ColumnChunkMetaDataBuilder (props, column, contents));
705695}
@@ -717,14 +707,14 @@ ColumnChunkMetaDataBuilder::ColumnChunkMetaDataBuilder(
717707
718708ColumnChunkMetaDataBuilder::ColumnChunkMetaDataBuilder (
719709 const std::shared_ptr<WriterProperties>& props, const ColumnDescriptor* column,
720- uint8_t * contents)
710+ void * contents)
721711 : impl_{std::unique_ptr<ColumnChunkMetaDataBuilderImpl>(
722712 new ColumnChunkMetaDataBuilderImpl (
723713 props, column, reinterpret_cast <format::ColumnChunk*>(contents)))} {}
724714
725715ColumnChunkMetaDataBuilder::~ColumnChunkMetaDataBuilder () {}
726716
727- const uint8_t * ColumnChunkMetaDataBuilder::contents () const { return impl_->contents (); }
717+ const void * ColumnChunkMetaDataBuilder::contents () const { return impl_->contents (); }
728718
729719void ColumnChunkMetaDataBuilder::set_file_path (const std::string& path) {
730720 impl_->set_file_path (path);
@@ -754,12 +744,11 @@ void ColumnChunkMetaDataBuilder::SetStatistics(bool is_signed,
754744class RowGroupMetaDataBuilder ::RowGroupMetaDataBuilderImpl {
755745 public:
756746 explicit RowGroupMetaDataBuilderImpl (const std::shared_ptr<WriterProperties>& props,
757- const SchemaDescriptor* schema, uint8_t * contents)
747+ const SchemaDescriptor* schema, void * contents)
758748 : properties_(props), schema_(schema), current_column_(0 ) {
759749 row_group_ = reinterpret_cast <format::RowGroup*>(contents);
760750 InitializeColumns (schema->num_columns ());
761751 }
762- ~RowGroupMetaDataBuilderImpl () {}
763752
764753 ColumnChunkMetaDataBuilder* NextColumnChunk () {
765754 if (!(current_column_ < num_columns ())) {
@@ -770,8 +759,7 @@ class RowGroupMetaDataBuilder::RowGroupMetaDataBuilderImpl {
770759 }
771760 auto column = schema_->Column (current_column_);
772761 auto column_builder = ColumnChunkMetaDataBuilder::Make (
773- properties_, column,
774- reinterpret_cast <uint8_t *>(&row_group_->columns [current_column_++]));
762+ properties_, column, &row_group_->columns [current_column_++]);
775763 auto column_builder_ptr = column_builder.get ();
776764 column_builders_.push_back (std::move (column_builder));
777765 return column_builder_ptr;
@@ -820,14 +808,14 @@ class RowGroupMetaDataBuilder::RowGroupMetaDataBuilderImpl {
820808
821809std::unique_ptr<RowGroupMetaDataBuilder> RowGroupMetaDataBuilder::Make (
822810 const std::shared_ptr<WriterProperties>& props, const SchemaDescriptor* schema_,
823- uint8_t * contents) {
811+ void * contents) {
824812 return std::unique_ptr<RowGroupMetaDataBuilder>(
825813 new RowGroupMetaDataBuilder (props, schema_, contents));
826814}
827815
828816RowGroupMetaDataBuilder::RowGroupMetaDataBuilder (
829817 const std::shared_ptr<WriterProperties>& props, const SchemaDescriptor* schema_,
830- uint8_t * contents)
818+ void * contents)
831819 : impl_{std::unique_ptr<RowGroupMetaDataBuilderImpl>(
832820 new RowGroupMetaDataBuilderImpl (props, schema_, contents))} {}
833821
@@ -861,16 +849,12 @@ class FileMetaDataBuilder::FileMetaDataBuilderImpl {
861849 : properties_(props), schema_(schema), key_value_metadata_(key_value_metadata) {
862850 metadata_.reset (new format::FileMetaData ());
863851 }
864- ~FileMetaDataBuilderImpl () {}
865852
866853 RowGroupMetaDataBuilder* AppendRowGroup () {
867- auto row_group = std::unique_ptr<format::RowGroup>(new format::RowGroup ());
868- auto row_group_builder = RowGroupMetaDataBuilder::Make (
869- properties_, schema_, reinterpret_cast <uint8_t *>(row_group.get ()));
870- RowGroupMetaDataBuilder* row_group_ptr = row_group_builder.get ();
871- row_group_builders_.push_back (std::move (row_group_builder));
872- row_groups_.push_back (std::move (row_group));
873- return row_group_ptr;
854+ row_groups_.emplace_back (new format::RowGroup);
855+ current_row_group_builder_ =
856+ RowGroupMetaDataBuilder::Make (properties_, schema_, row_groups_.back ().get ());
857+ return current_row_group_builder_.get ();
874858 }
875859
876860 std::unique_ptr<FileMetaData> Finish () {
@@ -939,7 +923,8 @@ class FileMetaDataBuilder::FileMetaDataBuilderImpl {
939923 private:
940924 const std::shared_ptr<WriterProperties> properties_;
941925 std::vector<std::unique_ptr<format::RowGroup>> row_groups_;
942- std::vector<std::unique_ptr<RowGroupMetaDataBuilder>> row_group_builders_;
926+
927+ std::unique_ptr<RowGroupMetaDataBuilder> current_row_group_builder_;
943928 const SchemaDescriptor* schema_;
944929 std::shared_ptr<const KeyValueMetadata> key_value_metadata_;
945930};
0 commit comments