MCPcopy Create free account
hub / github.com/apache/arrow / Merge

Method Merge

cpp/src/arrow/util/key_value_metadata.cc:202–231  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

200}
201
202std::shared_ptr<KeyValueMetadata> KeyValueMetadata::Merge(
203 const KeyValueMetadata& other) const {
204 std::unordered_set<std::string> observed_keys;
205 std::vector<std::string> result_keys;
206 std::vector<std::string> result_values;
207
208 result_keys.reserve(keys_.size());
209 result_values.reserve(keys_.size());
210
211 for (int64_t i = 0; i < other.size(); ++i) {
212 const auto& key = other.key(i);
213 auto it = observed_keys.find(key);
214 if (it == observed_keys.end()) {
215 result_keys.push_back(key);
216 result_values.push_back(other.value(i));
217 observed_keys.insert(key);
218 }
219 }
220 for (size_t i = 0; i < keys_.size(); ++i) {
221 auto it = observed_keys.find(keys_[i]);
222 if (it == observed_keys.end()) {
223 result_keys.push_back(keys_[i]);
224 result_values.push_back(values_[i]);
225 observed_keys.insert(keys_[i]);
226 }
227 }
228
229 return std::make_shared<KeyValueMetadata>(std::move(result_keys),
230 std::move(result_values));
231}
232
233bool KeyValueMetadata::Equals(const KeyValueMetadata& other) const {
234 if (size() != other.size()) {

Callers

nothing calls this directly

Calls 8

push_backMethod · 0.80
reserveMethod · 0.45
sizeMethod · 0.45
keyMethod · 0.45
findMethod · 0.45
endMethod · 0.45
valueMethod · 0.45
insertMethod · 0.45

Tested by

no test coverage detected