make keys unique after merge

This commit is contained in:
Nathan Nichols
2021-05-13 11:41:29 -05:00
parent a288136e69
commit d2815ec32e
2 changed files with 16 additions and 10 deletions

View File

@@ -574,33 +574,36 @@ CassandraBackend::fetchBookOffers(
assert(lowerComplete);
quality_keys.reserve(originalKeys.size() + otherKeys.size());
std::vector<std::pair<std::uint64_t, ripple::uint256>> merged_keys;
merged_keys.reserve(originalKeys.size() + otherKeys.size());
std::merge(originalKeys.begin(), originalKeys.end(),
otherKeys.begin(), otherKeys.end(),
std::back_inserter(quality_keys),
std::back_inserter(merged_keys),
[](auto pair1, auto pair2)
{
return pair1.first < pair2.first;
});
}
std::vector<ripple::uint256> keys(quality_keys.size());
std::vector<ripple::uint256> merged(quality_keys.size());
std::transform(quality_keys.begin(), quality_keys.end(),
std::back_inserter(keys),
std::back_inserter(merged),
[](auto pair) { return pair.second; });
auto uniqEnd = std::unique(merged.begin(), merged.end());
std::vector<ripple::uint256> keys{merged.begin(), uniqEnd};
std::vector<LedgerObject> results;
std::cout << keys.size() << std::endl;
auto start = std::chrono::system_clock::now();
std::vector<Blob> objs = fetchLedgerObjects(keys, ledgerSequence);
auto end = std::chrono::system_clock::now();
auto duration = ((end - start).count()) / 1000000000.0;
BOOST_LOG_TRIVIAL(info) << "Book object fetch took "
<< std::to_string(duration) << " seconds.";
std::vector<LedgerObject> results;
for (size_t i = 0; i < objs.size(); ++i)
{
if (objs[i].size() != 0)

View File

@@ -456,9 +456,12 @@ PostgresBackend::fetchBookOffers(
std::optional<std::string> warning)
-> BookOffersPage
{
std::vector<ripple::uint256> keys(pairs.size());
std::vector<ripple::uint256> allKeys(pairs.size());
for (auto const& pair : pairs)
keys.push_back(pair.second);
allKeys.push_back(pair.second);
auto uniqEnd = std::unique(allKeys.begin(), allKeys.end());
std::vector<ripple::uint256> keys{allKeys.begin(), uniqEnd};
auto start = std::chrono::system_clock::now();