diff options
author | Milena Ivanova <milena.ivanova@mongodb.com> | 2022-09-30 12:08:38 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-09-30 13:04:57 +0000 |
commit | 1c4fafd4ae5c082f36a8af1442aa48174962b1b4 (patch) | |
tree | 5f06af8c2227d5505daada02ea8746a09e6a89ed /src/mongo/db/query/ce/ce_test_utils.cpp | |
parent | 5b1663a2e449ec0f563e0f9a7f80c0fddb709596 (diff) | |
download | mongo-6/0.tar.gz |
SERVER-68446 Unit testing of simple histogram CE with all data types6/0
Diffstat (limited to 'src/mongo/db/query/ce/ce_test_utils.cpp')
-rw-r--r-- | src/mongo/db/query/ce/ce_test_utils.cpp | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/src/mongo/db/query/ce/ce_test_utils.cpp b/src/mongo/db/query/ce/ce_test_utils.cpp index 407b6ecd47c..c4e76b2ef39 100644 --- a/src/mongo/db/query/ce/ce_test_utils.cpp +++ b/src/mongo/db/query/ce/ce_test_utils.cpp @@ -142,12 +142,6 @@ optimizer::CEType CETester::getCE(ABT& abt) const { } ScalarHistogram createHistogram(const std::vector<BucketData>& data) { - sbe::value::Array array; - for (const auto& item : data) { - const auto [tag, val] = stage_builder::makeValue(item._v); - array.push_back(tag, val); - } - value::Array bounds; std::vector<Bucket> buckets; @@ -155,10 +149,10 @@ ScalarHistogram createHistogram(const std::vector<BucketData>& data) { double cumulativeNDV = 0.0; for (size_t i = 0; i < data.size(); i++) { - const auto [tag, val] = array.getAt(i); + const auto& item = data.at(i); + const auto [tag, val] = stage_builder::makeValue(item._v); bounds.push_back(tag, val); - const auto& item = data.at(i); cumulativeFreq += item._equalFreq + item._rangeFreq; cumulativeNDV += item._ndv + 1.0; buckets.emplace_back( @@ -167,4 +161,11 @@ ScalarHistogram createHistogram(const std::vector<BucketData>& data) { return {std::move(bounds), std::move(buckets)}; } + +double estimateIntValCard(const ScalarHistogram& hist, const int v, const EstimationType type) { + const auto [tag, val] = + std::make_pair(value::TypeTags::NumberInt64, value::bitcastFrom<int64_t>(v)); + return estimate(hist, tag, val, type).card; +}; + } // namespace mongo::ce |