Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 0A9DD200B5D for ; Sun, 3 Jul 2016 01:17:45 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 094A0160A74; Sat, 2 Jul 2016 23:17:45 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 29DFD160A5F for ; Sun, 3 Jul 2016 01:17:44 +0200 (CEST) Received: (qmail 21789 invoked by uid 500); 2 Jul 2016 23:17:43 -0000 Mailing-List: contact commits-help@quickstep.incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@quickstep.incubator.apache.org Delivered-To: mailing list commits@quickstep.incubator.apache.org Received: (qmail 21771 invoked by uid 99); 2 Jul 2016 23:17:43 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd3-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 02 Jul 2016 23:17:43 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd3-us-west.apache.org (ASF Mail Server at spamd3-us-west.apache.org) with ESMTP id E83AB1812A9 for ; Sat, 2 Jul 2016 23:17:42 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd3-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -4.646 X-Spam-Level: X-Spam-Status: No, score=-4.646 tagged_above=-999 required=6.31 tests=[KAM_ASCII_DIVIDERS=0.8, KAM_LAZY_DOMAIN_SECURITY=1, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-1.426] autolearn=disabled Received: from mx2-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd3-us-west.apache.org [10.40.0.10]) (amavisd-new, port 10024) with ESMTP id kkmqpt0_o4eo for ; Sat, 2 Jul 2016 23:17:41 +0000 (UTC) Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx2-lw-eu.apache.org (ASF Mail Server at mx2-lw-eu.apache.org) with SMTP id 0CBC460D81 for ; Sat, 2 Jul 2016 23:17:38 +0000 (UTC) Received: (qmail 21319 invoked by uid 99); 2 Jul 2016 23:17:37 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 02 Jul 2016 23:17:37 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id C2CAEED496; Sat, 2 Jul 2016 23:17:37 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: hbdeshmukh@apache.org To: commits@quickstep.incubator.apache.org Date: Sat, 02 Jul 2016 23:17:54 -0000 Message-Id: In-Reply-To: <529a5b937f4045b986eb89215782f47a@git.apache.org> References: <529a5b937f4045b986eb89215782f47a@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [18/20] incubator-quickstep git commit: Bug fixed in probability store. archived-at: Sat, 02 Jul 2016 23:17:45 -0000 Bug fixed in probability store. - Correct calculation for cumulative probabilities after removing an object. Project: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/commit/0b5c1db6 Tree: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/tree/0b5c1db6 Diff: http://git-wip-us.apache.org/repos/asf/incubator-quickstep/diff/0b5c1db6 Branch: refs/heads/scheduler++ Commit: 0b5c1db67dab93aa95a055a2a43a7ca14fbb56b5 Parents: b382953 Author: Harshad Deshmukh Authored: Sun Jun 26 09:35:11 2016 -0500 Committer: Harshad Deshmukh Committed: Sat Jul 2 18:16:30 2016 -0500 ---------------------------------------------------------------------- query_execution/ProbabilityStore.hpp | 4 ++-- .../tests/ProbabilityStore_unittest.cpp | 18 +++++++++--------- 2 files changed, 11 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/0b5c1db6/query_execution/ProbabilityStore.hpp ---------------------------------------------------------------------- diff --git a/query_execution/ProbabilityStore.hpp b/query_execution/ProbabilityStore.hpp index ed52f75..7278e2b 100644 --- a/query_execution/ProbabilityStore.hpp +++ b/query_execution/ProbabilityStore.hpp @@ -173,7 +173,7 @@ class ProbabilityStore { } CHECK_GT(new_denominator, 0); common_denominator_ = new_denominator; - updateCumulativeProbabilities(); + updateProbabilitiesNewDenominator(); } else { // In order to keep the store consistent, we should keep the sizes of // individual_probabilities_ and cumulative_probabilities_ the same. @@ -208,9 +208,9 @@ class ProbabilityStore { } float cumulative_probability = 0; for (const auto p : individual_probabilities_) { + cumulative_probability += p.second.second; cumulative_probabilities_.emplace_back(p.first, cumulative_probability); - cumulative_probability += p.second.second; } DCHECK(!cumulative_probabilities_.empty()); // Adjust the last cumulative probability manually to 1, so that http://git-wip-us.apache.org/repos/asf/incubator-quickstep/blob/0b5c1db6/query_execution/tests/ProbabilityStore_unittest.cpp ---------------------------------------------------------------------- diff --git a/query_execution/tests/ProbabilityStore_unittest.cpp b/query_execution/tests/ProbabilityStore_unittest.cpp index dcec1e5..518699e 100644 --- a/query_execution/tests/ProbabilityStore_unittest.cpp +++ b/query_execution/tests/ProbabilityStore_unittest.cpp @@ -34,8 +34,8 @@ TEST(ProbabilityStoreTest, CountTest) { EXPECT_EQ(0u, store.getNumObjects()); std::vector objects {3, 5, 7, 9}; - std::vector numerators {1, 2, 3, 5}; - const std::size_t kNewDenominator = 10; + std::vector numerators {1, 2, 2, 5}; + const std::size_t kNewDenominator = std::accumulate(numerators.begin(), numerators.end(), 0); store.addOrUpdateObjectsNewDenominator(objects, numerators, kNewDenominator); EXPECT_EQ(objects.size(), store.getNumObjects()); @@ -44,8 +44,8 @@ TEST(ProbabilityStoreTest, CountTest) { TEST(ProbabilityStoreTest, IndividualProbabilityTest) { ProbabilityStore store; std::vector objects {3, 5, 7, 9}; - std::vector numerators {1, 2, 3, 5}; - const std::size_t kNewDenominator = 10; + std::vector numerators {1, 2, 2, 5}; + const std::size_t kNewDenominator = std::accumulate(numerators.begin(), numerators.end(), 0); store.addOrUpdateObjectsNewDenominator(objects, numerators, kNewDenominator); for (std::size_t object_num = 0; object_num < objects.size(); ++object_num) { @@ -57,8 +57,8 @@ TEST(ProbabilityStoreTest, IndividualProbabilityTest) { TEST(ProbabilityStoreTest, PickRandomPropertyTest) { ProbabilityStore store; std::vector objects {3, 5, 7, 9}; - std::vector numerators {1, 2, 3, 5}; - const std::size_t kNewDenominator = 10; + std::vector numerators {1, 2, 2, 5}; + const std::size_t kNewDenominator = std::accumulate(numerators.begin(), numerators.end(), 0); store.addOrUpdateObjectsNewDenominator(objects, numerators, kNewDenominator); const std::size_t kNumTrials = 10; @@ -78,8 +78,8 @@ TEST(ProbabilityStoreTest, PickRandomPropertyTest) { TEST(ProbabilityStoreTest, RemoveObjectTest) { ProbabilityStore store; std::vector objects {3, 5, 7, 9}; - std::vector numerators {1, 2, 3, 5}; - const std::size_t kNewDenominator = 10; + std::vector numerators {1, 2, 2, 5}; + const std::size_t kNewDenominator = std::accumulate(numerators.begin(), numerators.end(), 0); store.addOrUpdateObjectsNewDenominator(objects, numerators, kNewDenominator); for (std::size_t object_num = 0; object_num < objects.size(); ++object_num) { @@ -96,7 +96,7 @@ TEST(ProbabilityStoreTest, RemoveObjectTest) { EXPECT_EQ(expected_new_denominator, store.getDenominator()); for (std::size_t object_num = 0; object_num < objects.size(); ++object_num) { - EXPECT_EQ(numerators[object_num] / static_cast(kNewDenominator), + EXPECT_EQ(numerators[object_num] / static_cast(expected_new_denominator), store.getIndividualProbability(objects[object_num])); } }