File tree Expand file tree Collapse file tree 2 files changed +15
-8
lines changed Expand file tree Collapse file tree 2 files changed +15
-8
lines changed Original file line number Diff line number Diff line change @@ -175,17 +175,20 @@ class AvroReader::Impl {
175175
176176 Result<std::unordered_map<std::string, std::string>> Metadata () {
177177 if (reader_ == nullptr ) {
178- return InvalidArgument (" Reader is not opened" );
178+ return Invalid (" Reader is not opened" );
179179 }
180180
181- auto metadata = reader_->metadata ();
181+ const auto & metadata = reader_->metadata ();
182182
183183 std::unordered_map<std::string, std::string> metadata_map;
184184 metadata_map.reserve (metadata.size ());
185185
186186 for (const auto & pair : metadata) {
187- metadata_map.try_emplace (pair.first ,
188- std::string (pair.second .begin (), pair.second .end ()));
187+ auto [it, inserted] = metadata_map.try_emplace (
188+ pair.first , std::string (pair.second .begin (), pair.second .end ()));
189+ if (!inserted) {
190+ return Invalid (" Duplicate metadata key found: {}" , pair.first );
191+ }
189192 }
190193
191194 return metadata_map;
Original file line number Diff line number Diff line change @@ -188,15 +188,15 @@ class ParquetReader::Impl {
188188
189189 Result<std::unordered_map<std::string, std::string>> Metadata () {
190190 if (reader_ == nullptr ) {
191- return InvalidArgument (" Reader is not opened" );
191+ return Invalid (" Reader is not opened" );
192192 }
193193
194194 auto metadata = reader_->parquet_reader ()->metadata ();
195195 if (!metadata) {
196- return InvalidArgument (" Failed to get Parquet file metadata" );
196+ return Invalid (" Failed to get Parquet file metadata" );
197197 }
198198
199- auto kv_metadata = metadata->key_value_metadata ();
199+ const auto & kv_metadata = metadata->key_value_metadata ();
200200 if (!kv_metadata) {
201201 return std::unordered_map<std::string, std::string>{};
202202 }
@@ -205,7 +205,11 @@ class ParquetReader::Impl {
205205 metadata_map.reserve (kv_metadata->size ());
206206
207207 for (int i = 0 ; i < kv_metadata->size (); ++i) {
208- metadata_map.try_emplace (kv_metadata->key (i), kv_metadata->value (i));
208+ auto [it, inserted] =
209+ metadata_map.try_emplace (kv_metadata->key (i), kv_metadata->value (i));
210+ if (!inserted) {
211+ return Invalid (" Duplicate metadata key found: {}" , kv_metadata->key (i));
212+ }
209213 }
210214
211215 return metadata_map;
You can’t perform that action at this time.
0 commit comments