From d2815ec32ea8b86b5339e99b93c7fa8dbaa334f0 Mon Sep 17 00:00:00 2001 From: Nathan Nichols Date: Thu, 13 May 2021 11:41:29 -0500 Subject: [PATCH] make keys unique after merge --- reporting/CassandraBackend.cpp | 19 +++++++++++-------- reporting/PostgresBackend.cpp | 7 +++++-- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/reporting/CassandraBackend.cpp b/reporting/CassandraBackend.cpp index 94f596c1..59a34146 100644 --- a/reporting/CassandraBackend.cpp +++ b/reporting/CassandraBackend.cpp @@ -574,33 +574,36 @@ CassandraBackend::fetchBookOffers( assert(lowerComplete); - quality_keys.reserve(originalKeys.size() + otherKeys.size()); + std::vector> 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 keys(quality_keys.size()); + std::vector 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 keys{merged.begin(), uniqEnd}; - std::vector results; - + std::cout << keys.size() << std::endl; + auto start = std::chrono::system_clock::now(); - std::vector 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 results; for (size_t i = 0; i < objs.size(); ++i) { if (objs[i].size() != 0) diff --git a/reporting/PostgresBackend.cpp b/reporting/PostgresBackend.cpp index fc23b307..6cdd818f 100644 --- a/reporting/PostgresBackend.cpp +++ b/reporting/PostgresBackend.cpp @@ -456,9 +456,12 @@ PostgresBackend::fetchBookOffers( std::optional warning) -> BookOffersPage { - std::vector keys(pairs.size()); + std::vector 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 keys{allKeys.begin(), uniqEnd}; auto start = std::chrono::system_clock::now();