wgtmac commented on code in PR #41580:
URL: https://github.com/apache/arrow/pull/41580#discussion_r1597901749
##########
cpp/src/parquet/column_writer.h:
##########
@@ -181,6 +184,10 @@ class PARQUET_EXPORT ColumnWriter {
/// \brief The file-level writer properties
virtual const WriterProperties* properties() = 0;
+ /// \brief Return KeyValueMetadata that can be used to store key-value
+ /// metadata in ColumnChunkMetaData.
+ virtual KeyValueMetadata& key_value_metadata() = 0;
Review Comment:
I'd rather not to give the freedom to get the mutable object. Instead, we
can implement a similar function equivalent to
https://github.com/apache/arrow/blob/main/cpp/src/parquet/file_writer.h#L163
##########
cpp/src/parquet/metadata.cc:
##########
@@ -132,6 +132,31 @@ std::shared_ptr<Statistics> MakeColumnStats(const
format::ColumnMetaData& meta_d
throw ParquetException("Can't decode page statistics for selected column
type");
}
+template <typename Metadata>
+std::shared_ptr<KeyValueMetadata> CopyKeyValueMetadata(const Metadata& source)
{
+ std::shared_ptr<KeyValueMetadata> metadata = nullptr;
+ if (source.__isset.key_value_metadata) {
+ metadata = std::make_shared<KeyValueMetadata>();
+ for (const auto& it : source.key_value_metadata) {
+ metadata->Append(it.key, it.value);
+ }
+ }
+ return metadata;
+}
+
+template <typename Metadata>
+void SetKeyValueMetadata(Metadata& metadata, const KeyValueMetadata& source) {
+ metadata.key_value_metadata.clear();
+ metadata.key_value_metadata.reserve(static_cast<size_t>(source.size()));
+ for (int64_t i = 0; i < source.size(); ++i) {
+ format::KeyValue kv_pair;
+ kv_pair.__set_key(source.key(i));
+ kv_pair.__set_value(source.value(i));
+ metadata.key_value_metadata.push_back(kv_pair);
+ }
+ metadata.__isset.key_value_metadata = true;
Review Comment:
Can we use `void __set_key_value_metadata(const std::vector<KeyValue> &
val);` instead?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]