Пример #1
0
void QueryWorkload::addQuery(Query const & q)
{
    totalQueries_++;
    auto search = summaries_.find(q);
    if(search != summaries_.end()) {
        auto countIt = counts_.find(search->second);
        countIt->second++;
        counts_.emplace(search->second, countIt->second);
    } else {
        std::vector<Attribute const *> attributes;
        for (auto name : q.getAttributeNames()) {
            auto it = nameToAttribute_.find(name);
            assert(it != nameToAttribute_.end());
            attributes.push_back(it->second);
        }
        QuerySummary summary(attributes);
        queries_.push_back(summary);
        summaries_.emplace(q, summary);
        counts_.emplace(summary, 1.0);
    }
}